From patchwork Sat Oct 2 23:34:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 12532425 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 25CB3C43217 for ; Sat, 2 Oct 2021 23:35:56 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E45F261A7D for ; Sat, 2 Oct 2021 23:35:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org E45F261A7D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8BC876E051; Sat, 2 Oct 2021 23:35:49 +0000 (UTC) Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by gabe.freedesktop.org (Postfix) with ESMTPS id EE8C46E056 for ; Sat, 2 Oct 2021 23:35:48 +0000 (UTC) Received: by mail-wm1-x333.google.com with SMTP id z2so10030059wmc.3 for ; Sat, 02 Oct 2021 16:35:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5QeZHLVghCs6DLC29cur3iiPtjPr54ogskINtSo0wnk=; b=MfwJruBA9/BRaqKP6GZK7cl2lh3Yp38xU24WrGjTNzfPhNgTb4yfCvD8qAekWxzp3Q 4BHUt6Wl8ek49y1q3ZIBTRxZjrKrh4hAhwPp4Tondezo8ARacBql6nQVkNgwJCfFqCFo bz/8CWlOhw8kHrxe3i+KQZWc03PnQY0Ky59vj1YRf4gTuBraalCj2ABHVhouTxUXvoIw fW80QjpcQ43DGcAUAmR2u7xBQv1e0SpTK7ncJquF5IzW4zCAESkkq0JcFPMET+KNDkbZ 1kQnotsCDymIcebfFsuDxzvbviFBUIv1M5KJD8QG0E6uLCAvXNEeWUXS+13zLNE8jRXz 98RQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5QeZHLVghCs6DLC29cur3iiPtjPr54ogskINtSo0wnk=; b=slCSVX+wT4crZUuyr0hUCCEABE6kqEVDsW2AwkvDF8a4j2u1KDWdwPOLwgqWQejAwc ZU3x9FFLsBijnu4wQ0Cg2oNwHpap/d3ihLlqeqqF5M8ysAA0tf19uz+891dLtMikUjbM AXySlYwOaQBEMdMAzdn5Hf74hegwu0b6FtQf7M6FJAAuKiAiR6aWG2hdAUoHPvOFlOGa Uyjtdm0/KjjEMfrj3m5w1quMY4mF8TuwK+h1GDjoIJ/dwafLnnyW2xf5JABsUc8+GNUD Jnh+HnoHZqDREVCjhHvb8phNFHL7WNRyHDZVa/Xs27KdOnjWbyH8FlZoR0v/PMMGmNgW RzVQ== X-Gm-Message-State: AOAM530AulLfAQ6u6EuY4UipdNRUjUO3y16wblGUTMJgsV0Dv76gise3 VtFm7KEuGjee7ciflzSp/kQ= X-Google-Smtp-Source: ABdhPJxLGgYJXFJw+Zk5FrXA+HpKo3BKb28MjcD+RZUrQnYXzFz7caP54CXHVGzXNnX+O3KdmhaHaQ== X-Received: by 2002:a7b:c056:: with SMTP id u22mr11300886wmc.15.1633217747453; Sat, 02 Oct 2021 16:35:47 -0700 (PDT) Received: from localhost.localdomain (94-29-54-195.dynamic.spd-mgts.ru. [94.29.54.195]) by smtp.gmail.com with ESMTPSA id r2sm10487089wmq.28.2021.10.02.16.35.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 02 Oct 2021 16:35:47 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maxim Schwalm , Andreas Westman Dorcsak , Peter Ujfalusi Cc: David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 1/5] drm/bridge: tc358768: Enable reference clock Date: Sun, 3 Oct 2021 02:34:43 +0300 Message-Id: <20211002233447.1105-2-digetx@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20211002233447.1105-1-digetx@gmail.com> References: <20211002233447.1105-1-digetx@gmail.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" The driver assumes that reference clock is always-enabled, but this is hardware-dependent and not true for ASUS Transformer TF700T. Make driver enable / disable the reference clock. Tested-by: Andreas Westman Dorcsak # Asus TF700T Tested-by: Maxim Schwalm #TF700T Signed-off-by: Dmitry Osipenko Reviewed-by: Robert Foss --- drivers/gpu/drm/bridge/tc358768.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/gpu/drm/bridge/tc358768.c b/drivers/gpu/drm/bridge/tc358768.c index a3db532bbdd1..18ae6605a803 100644 --- a/drivers/gpu/drm/bridge/tc358768.c +++ b/drivers/gpu/drm/bridge/tc358768.c @@ -237,6 +237,10 @@ static void tc358768_hw_enable(struct tc358768_priv *priv) if (priv->enabled) return; + ret = clk_prepare_enable(priv->refclk); + if (ret < 0) + dev_err(priv->dev, "error enabling refclk (%d)\n", ret); + ret = regulator_bulk_enable(ARRAY_SIZE(priv->supplies), priv->supplies); if (ret < 0) dev_err(priv->dev, "error enabling regulators (%d)\n", ret); @@ -274,6 +278,8 @@ static void tc358768_hw_disable(struct tc358768_priv *priv) if (ret < 0) dev_err(priv->dev, "error disabling regulators (%d)\n", ret); + clk_disable_unprepare(priv->refclk); + priv->enabled = false; } From patchwork Sat Oct 2 23:34:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 12532427 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2264FC433EF for ; Sat, 2 Oct 2021 23:36:00 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E329961A7D for ; Sat, 2 Oct 2021 23:35:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org E329961A7D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9B3E06E056; Sat, 2 Oct 2021 23:35:51 +0000 (UTC) Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1B2446E056 for ; Sat, 2 Oct 2021 23:35:50 +0000 (UTC) Received: by mail-wm1-x329.google.com with SMTP id z184-20020a1c7ec1000000b003065f0bc631so14709278wmc.0 for ; Sat, 02 Oct 2021 16:35:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=spoD37fKZhq9nWDc73nfOEcNDh0BwaXKcCIySwugWQ8=; b=mmLYtb2KoUMKk8+MwsYxQCCXPOESRud+F7/b9zaBrQgBCxPnN+zrj9Br+sYXbWq4/t 6OThqemsPepLbrYf2uz/MAKaTbJdqfLyac6gnj/gklgUqAIF75s6hm7O9p9EbCfqcct6 McTCZrGCg/hL/ekTVUVPj8IpUQKyMFstlenDNZyXEamQngcwuEvyx5WYdpRVlU+mipzX uvT7JZrh4ElL+cMWouQxfFM+n2dTJmgD/mdqNmFJ+XXB2oABCxzUmfClnWzHM88wvmV6 sqvpGX4oRxKizXmc57fWbalNNjnX7qEjOOqzEIRdLwejHzf+KeqAnWwpHo0jefbjoShT IVxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=spoD37fKZhq9nWDc73nfOEcNDh0BwaXKcCIySwugWQ8=; b=x+gTm9BakJAjhgjeUGqwqSQYmUmBvqD6HmiXIVQGK997wAAc4wccjF+PkVBMwjlCcM hRH4kvdxIKAccDaEGWdgFmCeZ8PCn15M8z9xAnPXw8ksVs5JLMvzc30pisuKAmMHyqB0 DPuAcLdmvJPLDAALuvzaEQm89HvDIICPGvhQOGj8wGzQQEsaYI+35DYfHhiyGjdSVBvi Gh38v6dXJjPBT5jWeD7ScttRgxpR6rrcEPvjbRCSlDnydtcqIYPe091lTssl/Q/BtU5q KIwhBtlcB4uIScXHkZluOMfh3wljvpwtbjEVUGmeu/kS9vp31IWN77810CflZy12VFxL uFTw== X-Gm-Message-State: AOAM533T/vDBDJRlCx2DbYQZE2RdhM74464EocNgr/LZcnzZW8Ress64 hFmT8PgaQCIU7ybuiwNTrqE= X-Google-Smtp-Source: ABdhPJxIBvOlgKVU6W1Ekm59JsdBzWRYZkAPcpznApnllg3AdFkUuFyN7P6A8EeeA3ej712DdlbBng== X-Received: by 2002:a7b:c948:: with SMTP id i8mr11197847wml.193.1633217748627; Sat, 02 Oct 2021 16:35:48 -0700 (PDT) Received: from localhost.localdomain (94-29-54-195.dynamic.spd-mgts.ru. [94.29.54.195]) by smtp.gmail.com with ESMTPSA id r2sm10487089wmq.28.2021.10.02.16.35.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 02 Oct 2021 16:35:48 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maxim Schwalm , Andreas Westman Dorcsak , Peter Ujfalusi Cc: David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 2/5] drm/bridge: tc358768: Support pulse mode Date: Sun, 3 Oct 2021 02:34:44 +0300 Message-Id: <20211002233447.1105-3-digetx@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20211002233447.1105-1-digetx@gmail.com> References: <20211002233447.1105-1-digetx@gmail.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Support pulse-mode synchronization which is supported and used by simple DSI panels like Panasonic VVX10F004B00. Tested-by: Andreas Westman Dorcsak # Asus TF700T Tested-by: Maxim Schwalm #TF700T Signed-off-by: Dmitry Osipenko Reviewed-by: Robert Foss --- drivers/gpu/drm/bridge/tc358768.c | 66 ++++++++++++++++++++++--------- 1 file changed, 48 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/bridge/tc358768.c b/drivers/gpu/drm/bridge/tc358768.c index 18ae6605a803..10ebd0621ad3 100644 --- a/drivers/gpu/drm/bridge/tc358768.c +++ b/drivers/gpu/drm/bridge/tc358768.c @@ -785,24 +785,54 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge) /* START[0] */ tc358768_write(priv, TC358768_STARTCNTRL, 1); - /* Set event mode */ - tc358768_write(priv, TC358768_DSI_EVENT, 1); - - /* vsw (+ vbp) */ - tc358768_write(priv, TC358768_DSI_VSW, - mode->vtotal - mode->vsync_start); - /* vbp (not used in event mode) */ - tc358768_write(priv, TC358768_DSI_VBPR, 0); - /* vact */ - tc358768_write(priv, TC358768_DSI_VACT, mode->vdisplay); - - /* (hsw + hbp) * byteclk * ndl / pclk */ - val = (u32)div_u64((mode->htotal - mode->hsync_start) * - ((u64)priv->dsiclk / 4) * priv->dsi_lanes, - mode->clock * 1000); - tc358768_write(priv, TC358768_DSI_HSW, val); - /* hbp (not used in event mode) */ - tc358768_write(priv, TC358768_DSI_HBPR, 0); + if (dsi_dev->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) { + /* Set pulse mode */ + tc358768_write(priv, TC358768_DSI_EVENT, 0); + + /* vact */ + tc358768_write(priv, TC358768_DSI_VACT, mode->vdisplay); + + /* vsw */ + tc358768_write(priv, TC358768_DSI_VSW, + mode->vsync_end - mode->vsync_start); + /* vbp */ + tc358768_write(priv, TC358768_DSI_VBPR, + mode->vtotal - mode->vsync_end); + + /* hsw * byteclk * ndl / pclk */ + val = (u32)div_u64((mode->hsync_end - mode->hsync_start) * + ((u64)priv->dsiclk / 4) * priv->dsi_lanes, + mode->clock * 1000); + tc358768_write(priv, TC358768_DSI_HSW, val); + + /* hbp * byteclk * ndl / pclk */ + val = (u32)div_u64((mode->htotal - mode->hsync_end) * + ((u64)priv->dsiclk / 4) * priv->dsi_lanes, + mode->clock * 1000); + tc358768_write(priv, TC358768_DSI_HBPR, val); + } else { + /* Set event mode */ + tc358768_write(priv, TC358768_DSI_EVENT, 1); + + /* vact */ + tc358768_write(priv, TC358768_DSI_VACT, mode->vdisplay); + + /* vsw (+ vbp) */ + tc358768_write(priv, TC358768_DSI_VSW, + mode->vtotal - mode->vsync_start); + /* vbp (not used in event mode) */ + tc358768_write(priv, TC358768_DSI_VBPR, 0); + + /* (hsw + hbp) * byteclk * ndl / pclk */ + val = (u32)div_u64((mode->htotal - mode->hsync_start) * + ((u64)priv->dsiclk / 4) * priv->dsi_lanes, + mode->clock * 1000); + tc358768_write(priv, TC358768_DSI_HSW, val); + + /* hbp (not used in event mode) */ + tc358768_write(priv, TC358768_DSI_HBPR, 0); + } + /* hact (bytes) */ tc358768_write(priv, TC358768_DSI_HACT, hact); From patchwork Sat Oct 2 23:34:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 12532429 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DC4DFC433F5 for ; Sat, 2 Oct 2021 23:36:02 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id AC45861A7D for ; Sat, 2 Oct 2021 23:36:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org AC45861A7D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 22AD66F51E; Sat, 2 Oct 2021 23:35:54 +0000 (UTC) Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com [IPv6:2a00:1450:4864:20::435]) by gabe.freedesktop.org (Postfix) with ESMTPS id 60BEA6E056 for ; Sat, 2 Oct 2021 23:35:51 +0000 (UTC) Received: by mail-wr1-x435.google.com with SMTP id t8so22161156wri.1 for ; Sat, 02 Oct 2021 16:35:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LiSqhbawJO5r3IUvawiiwgeuFYhTdPdUyp69JWKC0YY=; b=RLKyMz5XunVlARUy7/d64XjeBN0wMVsiKKSU5A4RfNlVRUnP7wT3ZLlKwMAz/gg33v 2g98lyoeSUIkVDdTfiXGxnPwpYJrDKwBpQyacEvsTCdqgODCb9QiZQQCD6cGlwnQk6iz 7/6I9RKKmHvs0SIO2fNkbI7NQ3u6Lq9wteOf2hmH36auRH4jPfnmDdtF1qVkqB0Vlp1B qPNe3s/DCVVdg2yQ0RlJ1MS4XBdDXustgGkGXdQDgpAC8O98ZC1qM2/gHiX6Ij24BdRM B+uDLcEBdM7K9Rg4UwP7MVIihfOLxrBkXvgA1e535vD40jbgLAIml4imT3LHuZssfEfq zS8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LiSqhbawJO5r3IUvawiiwgeuFYhTdPdUyp69JWKC0YY=; b=APRGM39ddxghY5J7OuYd1G1+VuKdLCn2IxyTLmDhi5xwQf/CXTh2XmSnr/Myxts63l kZ3BuBCN8wABaTLKW8J9T/cjlDsWwwqEiaWzSkBVXGDp1JjN7hE/hSsZUsFYegzYjp9H W0wOaOeRUDZS2WnWQwcng7wtKJ5rZYDX04p285seuhPic3kGMdMkwvK/9Eh7IS1PR9zM 8kPuu4FGGxYCPUKqmmxsTb5PK17vhSl39uYiA4320lWx0cEnTGC5GKP5Mum5HR8qDbqz cqSWWHDs3nrNY6sGB7OnwE+UuG469n2FsQOv5tIASanXd9RgKOFEwQ/sHQmT8kXJ7nsV /beg== X-Gm-Message-State: AOAM532Tw2qQ6UYtI9N7RJ5+1VYqF/sQ2txOm6DJ2/4Uc903yggYbkIh lApoF+gbSzmU1ME1tgSKmio= X-Google-Smtp-Source: ABdhPJy/rQFvXc0iU45thEFuaYrZ5nHGnq9iWL3+N1XVO5WO7rmDCrrAWEjGg2cLndBu3oAJOkdw7g== X-Received: by 2002:adf:aade:: with SMTP id i30mr5362961wrc.384.1633217749882; Sat, 02 Oct 2021 16:35:49 -0700 (PDT) Received: from localhost.localdomain (94-29-54-195.dynamic.spd-mgts.ru. [94.29.54.195]) by smtp.gmail.com with ESMTPSA id r2sm10487089wmq.28.2021.10.02.16.35.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 02 Oct 2021 16:35:49 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maxim Schwalm , Andreas Westman Dorcsak , Peter Ujfalusi Cc: David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 3/5] drm/bridge: tc358768: Calculate video start delay Date: Sun, 3 Oct 2021 02:34:45 +0300 Message-Id: <20211002233447.1105-4-digetx@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20211002233447.1105-1-digetx@gmail.com> References: <20211002233447.1105-1-digetx@gmail.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Calculate video start delay based on the display timing instead of hardcoding it to a default value. This fixes "trembling" display output on Asus Transformer TF700T which uses Panasonic VVX10F004B00 display panel. Tested-by: Andreas Westman Dorcsak # Asus TF700T Tested-by: Maxim Schwalm #TF700T Signed-off-by: Dmitry Osipenko Reviewed-by: Robert Foss --- drivers/gpu/drm/bridge/tc358768.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/tc358768.c b/drivers/gpu/drm/bridge/tc358768.c index 10ebd0621ad3..5b3f8723bd3d 100644 --- a/drivers/gpu/drm/bridge/tc358768.c +++ b/drivers/gpu/drm/bridge/tc358768.c @@ -634,7 +634,8 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge) u32 val, val2, lptxcnt, hact, data_type; const struct drm_display_mode *mode; u32 dsibclk_nsk, dsiclk_nsk, ui_nsk, phy_delay_nsk; - u32 dsiclk, dsibclk; + u32 dsiclk, dsibclk, video_start; + const u32 internal_delay = 40; int ret, i; tc358768_hw_enable(priv); @@ -663,23 +664,27 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge) case MIPI_DSI_FMT_RGB888: val |= (0x3 << 4); hact = mode->hdisplay * 3; + video_start = (mode->htotal - mode->hsync_start) * 3; data_type = MIPI_DSI_PACKED_PIXEL_STREAM_24; break; case MIPI_DSI_FMT_RGB666: val |= (0x4 << 4); hact = mode->hdisplay * 3; + video_start = (mode->htotal - mode->hsync_start) * 3; data_type = MIPI_DSI_PACKED_PIXEL_STREAM_18; break; case MIPI_DSI_FMT_RGB666_PACKED: val |= (0x4 << 4) | BIT(3); hact = mode->hdisplay * 18 / 8; + video_start = (mode->htotal - mode->hsync_start) * 18 / 8; data_type = MIPI_DSI_PIXEL_STREAM_3BYTE_18; break; case MIPI_DSI_FMT_RGB565: val |= (0x5 << 4); hact = mode->hdisplay * 2; + video_start = (mode->htotal - mode->hsync_start) * 2; data_type = MIPI_DSI_PACKED_PIXEL_STREAM_16; break; default: @@ -690,7 +695,8 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge) } /* VSDly[9:0] */ - tc358768_write(priv, TC358768_VSDLY, 1); + video_start = max(video_start, internal_delay + 1) - internal_delay; + tc358768_write(priv, TC358768_VSDLY, video_start); tc358768_write(priv, TC358768_DATAFMT, val); tc358768_write(priv, TC358768_DSITX_DT, data_type); From patchwork Sat Oct 2 23:34:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 12532431 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 330DCC4332F for ; Sat, 2 Oct 2021 23:36:05 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E2A0D61A7D for ; Sat, 2 Oct 2021 23:36:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org E2A0D61A7D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id ED5E06F51C; Sat, 2 Oct 2021 23:35:53 +0000 (UTC) Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by gabe.freedesktop.org (Postfix) with ESMTPS id DFEAE6F51E for ; Sat, 2 Oct 2021 23:35:52 +0000 (UTC) Received: by mail-wr1-x42b.google.com with SMTP id w29so22119351wra.8 for ; Sat, 02 Oct 2021 16:35:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wz/ee0QFf1zLzjYQvpsk8gV3BuqjIdVKipKwS9n+pgI=; b=K/zTxhdXTQysfV5PWX4oXKki31wkDTC9MgoHWPFDft+dweOOr+4vjue+nocqKqPUcK PMjE2Lu76QISmMx45veJyxwrnEepm1kcXuAkehF27rw4aXn77eq6Kp8fSXEQ9a0Y/fSe fYfl8Rz/NpTRxDeJYxfiPCHsZRgIYzR4SbPU2r61Cjmc7e87Gr9+j0EPE6CX61heeeeo ivM7wOkNqB6UkUMkBkTTAdLmeRUoU0MpHQuJIuKz7sv46G8Rccdb5mSMcKJIlhBJddDl xgE9JXsR6Nluuevivrmlhgf7Jf3mTDi6V22Y5loP4NU+hiOj//EmXuY+pSePwlcLX9+l SdTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wz/ee0QFf1zLzjYQvpsk8gV3BuqjIdVKipKwS9n+pgI=; b=1uGomTFbZ0fNvnLJeg3myGyX7yKnbwKlBfTeuGNeWYGe1WDRAVsDIAgSHqk9EZoC5Z 6W08NISAw0nxTYlA2CnlXSVa9scRDFzr3S0aXrnSnANRHckrCEdQBR7Exe5UPGGGsBLH 32nCYd2uHS4OFOipYLUBr8QnCRd6KDBVgkpKPJsEMYOLv/Je0yxl0z3Z8RWgdaD7TihV wzR1ndtRmNSyOKyGlrLcBXYVELg+U3aphUqSni779+vkbvD8p2+SS0GnSCh0vRimmpbV 67deLU3ivePY8/uq9CZNB1PV3Eebhc/0Wbf3MK1q7FVulqGfzbCskB8Wp9l6nIzHDK2e JvZg== X-Gm-Message-State: AOAM533A+ZwzXtJfGiRhCaw7OFFx+cJ3BMDAO1Ugxp5DoRQhk8fG1Bk3 HJwYzp2YY/Ih1k+rIu9GWF8= X-Google-Smtp-Source: ABdhPJxIyqhYmTBR0l+9XPy2tnEYfTVC1/MvoAGO+pHYpgzUgq3Mj/Ni+7Fhf6cjpKFVf5s6e3VmPA== X-Received: by 2002:a5d:6da9:: with SMTP id u9mr5551333wrs.65.1633217751392; Sat, 02 Oct 2021 16:35:51 -0700 (PDT) Received: from localhost.localdomain (94-29-54-195.dynamic.spd-mgts.ru. [94.29.54.195]) by smtp.gmail.com with ESMTPSA id r2sm10487089wmq.28.2021.10.02.16.35.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 02 Oct 2021 16:35:51 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maxim Schwalm , Andreas Westman Dorcsak , Peter Ujfalusi Cc: David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 4/5] drm/bridge: tc358768: Disable non-continuous clock mode Date: Sun, 3 Oct 2021 02:34:46 +0300 Message-Id: <20211002233447.1105-5-digetx@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20211002233447.1105-1-digetx@gmail.com> References: <20211002233447.1105-1-digetx@gmail.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Non-continuous clock mode doesn't work because driver doesn't support it properly. The bridge driver programs wrong bitfields that are required by the non-continuous mode (BTACNTRL1 register bitfields are swapped in the code), but fixing them doesn't help. Display panel of ASUS Transformer TF700T tablet supports non-continuous mode and display doesn't work at all using that mode. There are no device-trees that are actively using this DSI bridge in upstream yet, so clearly the broken mode wasn't ever tested properly. It's a bit too difficult to get LP mode working, hence let's disable the offending mode for now and fall back to continuous mode. Tested-by: Andreas Westman Dorcsak # Asus TF700T Tested-by: Maxim Schwalm #TF700T Signed-off-by: Dmitry Osipenko Reviewed-by: Robert Foss --- drivers/gpu/drm/bridge/tc358768.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/tc358768.c b/drivers/gpu/drm/bridge/tc358768.c index 5b3f8723bd3d..cfceba5ef3b8 100644 --- a/drivers/gpu/drm/bridge/tc358768.c +++ b/drivers/gpu/drm/bridge/tc358768.c @@ -631,6 +631,7 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge) { struct tc358768_priv *priv = bridge_to_tc358768(bridge); struct mipi_dsi_device *dsi_dev = priv->output.dev; + unsigned long mode_flags = dsi_dev->mode_flags; u32 val, val2, lptxcnt, hact, data_type; const struct drm_display_mode *mode; u32 dsibclk_nsk, dsiclk_nsk, ui_nsk, phy_delay_nsk; @@ -638,6 +639,11 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge) const u32 internal_delay = 40; int ret, i; + if (mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS) { + dev_warn_once(priv->dev, "Non-continuous mode unimplemented, falling back to continuous\n"); + mode_flags &= ~MIPI_DSI_CLOCK_NON_CONTINUOUS; + } + tc358768_hw_enable(priv); ret = tc358768_sw_reset(priv); @@ -776,7 +782,7 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge) val |= BIT(i + 1); tc358768_write(priv, TC358768_HSTXVREGEN, val); - if (!(dsi_dev->mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS)) + if (!(mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS)) tc358768_write(priv, TC358768_TXOPTIONCNTRL, 0x1); /* TXTAGOCNT[26:16] RXTASURECNT[10:0] */ @@ -864,7 +870,7 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge) if (!(dsi_dev->mode_flags & MIPI_DSI_MODE_LPM)) val |= TC358768_DSI_CONTROL_TXMD; - if (!(dsi_dev->mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS)) + if (!(mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS)) val |= TC358768_DSI_CONTROL_HSCKMD; if (dsi_dev->mode_flags & MIPI_DSI_MODE_NO_EOT_PACKET) From patchwork Sat Oct 2 23:34:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 12532433 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 29CF2C433EF for ; Sat, 2 Oct 2021 23:36:07 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DB17761B02 for ; Sat, 2 Oct 2021 23:36:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org DB17761B02 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1F48A6F51F; Sat, 2 Oct 2021 23:35:56 +0000 (UTC) Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5BC3C6F51F for ; Sat, 2 Oct 2021 23:35:54 +0000 (UTC) Received: by mail-wm1-x330.google.com with SMTP id j27so10054479wms.0 for ; Sat, 02 Oct 2021 16:35:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MztqkJ6kEnYY3QY22MZAhVkiyYz8DlYPtSLS1AAw8jM=; b=GPP3XEmUpER7Jifk5aXhGuB2IdZ9dYWM7+4gi3WqJEH0myRrgZSbhORhiJGETOErNO mqiKtnBml/30gMd08kYdCh1ITAopXUgMmrNU05m0QyrMaQawNbEULfg78peHFVn7jZOE subtmm/xR+gUDM9TvJt/cLXR23UM/l6oBT+Q3i28zmodk0PSrFdwMRxnhxBYfbckoRV8 1JRgVdlAyt0u24m0dyghSDKj45c8fODPcR4oDTawtLgetjbncU/z2BJuRKG3ruXEENmW UslJfT8iZPJR3mAbdDEOLZxPU4x5NG/awjGmjVwyn0eOOu4fqpNWm5fhcONrIMwlvJ63 i8fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=MztqkJ6kEnYY3QY22MZAhVkiyYz8DlYPtSLS1AAw8jM=; b=hQ1GgUPFCP4xY/Z+g28tAi+SE6WD2ksTzKgMcMlc+xhRoNIRyGyUfVZs3ZMPMUhCLc xMN6vZShbxXXMy9AhKQbVBCppyZ6XIl1kHRcreTMr7dVxfNVXHOf+UGqLO9MbMGULSyq GHosjoYCLsIgzgLXydOnBEnIOWCm/tERqhN6u8t6taA9DgurZstiijIpxTPQGi3RYT3N Mz9vUPnIJ5oI+hdAAIH6gNuoU8N8sVIY3id7HwZEtOEQ26jtMZZWS5oZ2AV6/pFjJWhe yIm3+939JqxJYCr/cZg8ylKJgL6NtzZE3Fk1ATiPKZRDRqtscjYfhKBym6dO3bNjDdky YctA== X-Gm-Message-State: AOAM532IB3d/VernIXHB39ZhIYBmbxrjZDNpT9anXo3XMt9PizIYLtt1 UoMi+OXIozMY+0TO7jFX8Zc= X-Google-Smtp-Source: ABdhPJzXoDtZo5DdB8DYLuVGO2v//b+Wp15T0u3Fxi7NnZxoVEihQFQ01yI49bal4m2C9c/LPmWnuw== X-Received: by 2002:a05:600c:1d0b:: with SMTP id l11mr11350453wms.46.1633217752661; Sat, 02 Oct 2021 16:35:52 -0700 (PDT) Received: from localhost.localdomain (94-29-54-195.dynamic.spd-mgts.ru. [94.29.54.195]) by smtp.gmail.com with ESMTPSA id r2sm10487089wmq.28.2021.10.02.16.35.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 02 Oct 2021 16:35:52 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maxim Schwalm , Andreas Westman Dorcsak , Peter Ujfalusi Cc: David Airlie , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 5/5] drm/bridge: tc358768: Correct BTACNTRL1 programming Date: Sun, 3 Oct 2021 02:34:47 +0300 Message-Id: <20211002233447.1105-6-digetx@gmail.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20211002233447.1105-1-digetx@gmail.com> References: <20211002233447.1105-1-digetx@gmail.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" TXTAGOCNT and RXTASURECNT bitfields of BTACNTRL1 register are swapped in the code, correct them. Driver doesn't implement low power mode for now, so this change doesn't make a practical difference yet. Tested-by: Andreas Westman Dorcsak # Asus TF700T Tested-by: Maxim Schwalm #TF700T Signed-off-by: Dmitry Osipenko Reviewed-by: Robert Foss --- drivers/gpu/drm/bridge/tc358768.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/tc358768.c b/drivers/gpu/drm/bridge/tc358768.c index cfceba5ef3b8..fd585bf925fe 100644 --- a/drivers/gpu/drm/bridge/tc358768.c +++ b/drivers/gpu/drm/bridge/tc358768.c @@ -790,7 +790,7 @@ static void tc358768_bridge_pre_enable(struct drm_bridge *bridge) val = tc358768_ns_to_cnt(val, dsibclk_nsk) - 1; val2 = tc358768_ns_to_cnt(tc358768_to_ns((lptxcnt + 1) * dsibclk_nsk), dsibclk_nsk) - 2; - val |= val2 << 16; + val = val << 16 | val2; dev_dbg(priv->dev, "BTACNTRL1: 0x%x\n", val); tc358768_write(priv, TC358768_BTACNTRL1, val);