From patchwork Thu Mar 20 08:48:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre Mergnat X-Patchwork-Id: 14023550 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CA805C28B30 for ; Thu, 20 Mar 2025 08:54:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=YJV9USVZmsP9ZdAAuuoldoMM46JkHDHsnIzVnX7GtUI=; b=o8Hzvt+NqRNccPuTJnBoYOoQWU GXYafLlMrCgcA3PFusaVuCIva4z5j+ZzszgUneBQPR4g4LWOVIzVBCfqBbbGjQZR8VixNky+lQiZG MdaA0vpANB1dYb/fs9+3ib/YE+rKtaWzlXhhfTrR2wIc3W82aFvV6CA4yh8KwYVW3y0N2Zw91u31L 6luuV2vL0adutFnitWJAXMpjnvmvEdSU5PIFwkXPOg3fLc8magRCMZ9Xc+5LKEDbz1QNafuHddBQZ 5ponrsGPIdqSA/I+Nmyb459h7fd1JfEN7riaFiieART1UoAM0iwgIWp3zCaxoqkYde1nmjBIdqGFc CRRD8n3g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tvBfY-0000000BbhC-3rbG; Thu, 20 Mar 2025 08:54:28 +0000 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tvBaW-0000000Baq3-3bjR for linux-mediatek@lists.infradead.org; Thu, 20 Mar 2025 08:49:18 +0000 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-43cfa7e7f54so2726475e9.1 for ; Thu, 20 Mar 2025 01:49:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1742460555; x=1743065355; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=YJV9USVZmsP9ZdAAuuoldoMM46JkHDHsnIzVnX7GtUI=; b=abaq9KTHAZZWdXIX+Mt2EnQNgTSYvSu2m35QxDkYRk++l3eZHYmQwe5fdwUk23v7Go KApkW5oTf9HEay4tDdgu7IQTqHvbhVPQetls8ob0WdLY7zBXlxTcro4vBfzaWxSQRDTB AreUCw36ddhgeyLISVKfmb+7ifpYQNLgjVn1d83cVOYiPWEHvj0XlCKFcQ+pHZZDLdt5 vehNauR0HSzcE2Z6zKEuIg8Xni/4Otclp5dS4FR6gevMLca1MHxC5ujVTXICGzLx3r9x 6cZfG3M54EA5fvJGekePIsme4kynd+S/pASHrOFbEV6i6ARtMhx8E1IoDJ1TW6oRV7Im LIIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742460555; x=1743065355; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YJV9USVZmsP9ZdAAuuoldoMM46JkHDHsnIzVnX7GtUI=; b=s5Nrq77hXQ+bsvW1gd9AgTaZ2e+yf4FxpnmZh87UICBejphMv5dSSJbr31BXT4XbWy OGxE8vV4r2OSDyKePOV4jUrkRas+sQTEyzatPUCMqpy8U8LknuigGs6wxj8tGnPHXRGj 606LzwwevL2RnLZzNqxlYt6BL4QEMGfKZcmVU2mtOe6NoPV+/H1K0dfTWaQfzBkZhDIh 1Lyfrrv/SW8Rglpqw1OxLjMlR7wf8GCBSInUqrP7+gcrQ66soBW/DEnFPvK00jpg1wBE GHpQWJK3qjTpSEOqRxPP6IZnI/hBl6x5Gk0KGsBwMfg/Xf5CV3/ayMet9zRspWa6ofCy exXg== X-Forwarded-Encrypted: i=1; AJvYcCVjUR95NXg8vXtbnnQ6mfN6Bl/a0Bi2DI5yYpXWUDzoIBFvC/K9SSYeKL6cVP4VANp35RknkZto5yY4XM9pag==@lists.infradead.org X-Gm-Message-State: AOJu0Yx10de5e3psV8sF37Lxv5W1bviQZ2evHZbW4HECqxFz1LAzuwOY qNQymXg48QFegK0ItgXgeA8tyUM9yl5SovdAP1W5ufQEGkriKiNqtMrhquQcOKA= X-Gm-Gg: ASbGncvmPlE9PIbTbBWiTMJFfPuV68NcM9LBOY0A9zlHSLbnC5SB3codvl/qvTUzDPg b44qcb9P6+puUuWaUyvSr5gRePVa5VOlTvfKOV+SDug3rxmP8pow1bNNz9tBlLKodyfDWRLiWLv FsvP8/JjMe5hEXPYgKNcwzsy8oAdc9eGpsOLdXALhrZ698FU7/x94JzsAMOXbSp/qTld9bq5iGe /qd+mrj/QmKmfcH/nxQjT48gXDka4cUnJI2MdLP+y+ELs6dCwQql4bYQO6c2jZMaREGcjKrxn5C C2FV58wIl917MadIX7c4s5eDDNu+AsKnwUD90zROaPwhXcBwcICg94sNPDI= X-Google-Smtp-Source: AGHT+IGvyzObe3HUgUPIOkcUmHLI+6xANcIGJKxeOg9jouXNulvNZlxlIH6nFdT6PpdEkn3OcgskSQ== X-Received: by 2002:a05:600c:138d:b0:43b:4829:8067 with SMTP id 5b1f17b1804b1-43d4ac2b356mr13977715e9.6.1742460555324; Thu, 20 Mar 2025 01:49:15 -0700 (PDT) Received: from [127.0.1.1] ([2a01:e0a:5ee:79d0:c11c:487d:c821:54a0]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-43d43fdac9dsm41381655e9.30.2025.03.20.01.49.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Mar 2025 01:49:14 -0700 (PDT) From: Alexandre Mergnat Date: Thu, 20 Mar 2025 09:48:46 +0100 Subject: [PATCH v8 2/3] drm/panel: startek-kd070fhfid015: add another init step MIME-Version: 1.0 Message-Id: <20231023-display-support-v8-2-c2dd7b0fb2bd@baylibre.com> References: <20231023-display-support-v8-0-c2dd7b0fb2bd@baylibre.com> In-Reply-To: <20231023-display-support-v8-0-c2dd7b0fb2bd@baylibre.com> To: Catalin Marinas , Will Deacon , Neil Armstrong , Jessica Zhang , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Chun-Kuang Hu , Philipp Zabel , Matthias Brugger , AngeloGioacchino Del Regno Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-mediatek@lists.infradead.org, Alexandre Mergnat X-Mailer: b4 0.12.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2311; i=amergnat@baylibre.com; h=from:subject:message-id; bh=gHl0LdUTqSzXFqfH/bwqt0Qp3EzE+6UWudOR8k0D9wo=; b=owEBbQKS/ZANAwAKAStGSZ1+MdRFAcsmYgBn29aHBpzXiGFeZYZjQ2WV79w2etmusdRumeCDA2/j En4xIveJAjMEAAEKAB0WIQQjG17X8+qqcA5g/osrRkmdfjHURQUCZ9vWhwAKCRArRkmdfjHURUS3D/ 9vN0KMVYZZKmprhPA5LN7rawwuTGP/uyEhk9jFV0/j6JL6U4PVd0nArK1OQLjxBSyc8nUS1QhpHFhL GNVR07l6xuu0efimjhIgzKpfapyc0xJDcsSLokHgtrFYnnFsxhYNegLt2qFhQnAzfhs6CkD8JQRe7j K5ZiuZbQaE9rSuPU9dMg9/Nc9+eO8HpPVfckzLWretHlNh7yz42U0FAUp9KvfnDilzIcxzydGuuNzy Jd/N0DstuCiy80SPtbL4cE8FVcQZpZe5jPrx+mMVIUtyaVPTkJwyP++ureQvWDzAQ334cDPfrwy2Ei Oeh0VnncqzOktXqxToMmHFzuFwKfoDr0/6LV+dlVtsI2RP/3/bW67t8xKV0I6eMGMGESBck72W9vwD ca1+TzhnFFesumJlEkaj/XnlS6mvr4PPLAaqauBwaKTiAXgZT/btqNWTVJBx+sYj3/dyd+1Sy0NtJ2 lpmstf0PEKIOMLotSfh7vkJ/+71UqXjgjVbmV6k0f1lgMLHIpGEEqNz/Us0zURzuYQEVwsj6cFRsyw W6Lz1Pgec4nQ9wjY5aeCuLQPAkLl9D87UWlEs4SeCgePB7fs9v/PogO0y5kTxHItyjqRqV2XGGIAxe Lu9b+dTaPTCrjNEDXVF5nGl/HyIMiJ8yrA1aWPFooOUtSOMg18/vt4NOuirQ== X-Developer-Key: i=amergnat@baylibre.com; a=openpgp; fpr=231B5ED7F3EAAA700E60FE8B2B46499D7E31D445 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250320_014916_921418_11963915 X-CRM114-Status: GOOD ( 13.46 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org Currently, the panel set power, set gpio and enable the display link in stk_panel_prepare, pointed by drm_panel_funcs.prepare, called by panel_bridge_atomic_pre_enable, pointed by drm_bridge_funcs.atomic_pre_enable. According to the drm_bridge.h, atomic_pre_enable must not enable the display link Since the DSI driver is properly inited by the DRM, the panel try to communicate with the panel before DSI is powered on. To solve that, use stk_panel_enable to enable the display link because it's called after the mtk_dsi_bridge_atomic_pre_enable which is power on the DSI. Signed-off-by: Alexandre Mergnat --- .../gpu/drm/panel/panel-startek-kd070fhfid015.c | 25 +++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/panel/panel-startek-kd070fhfid015.c b/drivers/gpu/drm/panel/panel-startek-kd070fhfid015.c index c0c95355b7435..bc3c4038bf4f5 100644 --- a/drivers/gpu/drm/panel/panel-startek-kd070fhfid015.c +++ b/drivers/gpu/drm/panel/panel-startek-kd070fhfid015.c @@ -135,19 +135,9 @@ static int stk_panel_prepare(struct drm_panel *panel) gpiod_set_value(stk->enable_gpio, 1); mdelay(20); gpiod_set_value(stk->reset_gpio, 1); - mdelay(10); - ret = stk_panel_init(stk); - if (ret < 0) - goto poweroff; - - ret = stk_panel_on(stk); - if (ret < 0) - goto poweroff; return 0; -poweroff: - regulator_disable(stk->supplies[POWER].consumer); iovccoff: regulator_disable(stk->supplies[IOVCC].consumer); gpiod_set_value(stk->reset_gpio, 0); @@ -156,6 +146,20 @@ static int stk_panel_prepare(struct drm_panel *panel) return ret; } +static int stk_panel_enable(struct drm_panel *panel) +{ + struct stk_panel *stk = to_stk_panel(panel); + int ret; + + ret = stk_panel_init(stk); + if (ret < 0) + return ret; + + ret = stk_panel_on(stk); + + return ret; +} + static const struct drm_display_mode default_mode = { .clock = 163204, .hdisplay = 1200, @@ -239,6 +243,7 @@ drm_panel_create_dsi_backlight(struct mipi_dsi_device *dsi) } static const struct drm_panel_funcs stk_panel_funcs = { + .enable = stk_panel_enable, .unprepare = stk_panel_unprepare, .prepare = stk_panel_prepare, .get_modes = stk_panel_get_modes,