From nobody Sun Sep 21 21:38:53 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A53A6C41513 for ; Mon, 16 Oct 2023 16:56:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234227AbjJPQ4z (ORCPT ); Mon, 16 Oct 2023 12:56:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38012 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229848AbjJPQ4g (ORCPT ); Mon, 16 Oct 2023 12:56:36 -0400 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 89DEA1105 for ; Mon, 16 Oct 2023 09:54:01 -0700 (PDT) Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-40535597f01so46838355e9.3 for ; Mon, 16 Oct 2023 09:54:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697475240; x=1698080040; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=FXcBslb1MNvlJH1zjcV0wxGhoCZ7RiOAEccFN8ak0qg=; b=YFovLDEXyDoGaIgb31uRr3rCTzXY2JY2mK4M62oxV7NpWWcaBO3vfyDgv6Gfgsh4Uh D4Tehyq6kFV+cvNVASguvPIeRMSxmzB3cmbkaF+HWY29gwhW5cyz8ZnApFIkViCWzEGr x9lXv47nNFzC6c4AH+F+2vuYl1yoD/cCAMihMYhrwSn2gmew5jUYy3UTYre99LQ+tXEn EbW1aA26dm35qeTilpp/K19Ze4g2wxIcj3w2/lpfx1KBphiIAR/QNk2dvwjDprM3eAxX LqxuRFQR2X0e0MlxyjYCXJWy66dt1aa3o0Cu34IG36xymVqwXEYA3zPehMzCo2OZxCmh x4nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697475240; x=1698080040; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FXcBslb1MNvlJH1zjcV0wxGhoCZ7RiOAEccFN8ak0qg=; b=X8jVprkXxh1xFJSQSf3lGF1sBR3RdQ1+9tshU5GyfJOwBZcfsqUXXq3HCalfjyU55H W5C2HfQYETjthyK7uE0Bum5vvnUpFqIH9UscFhmk6/Qu2BJY5OvDZW1jSR/tJ8LOtOds JIPl6B22D9Jf1W0Ikx21YC49CsBbEJjwHPoQPWvx+3Xd3K9Op53ARBKxR3e0LQfDtVK2 KZXdOA0Lx4leN29o+juiqCkECYxJWqNKX2xWl+BG+2KN36asrWaX05fmnyuSMfsC3SOK kIsBNw2qs48I3QdHEjMQwkDjmOr/lYGBnPWuihLbjr4hRUv0GrvUuAo7yc2QcSQWD/wT f+uQ== X-Gm-Message-State: AOJu0YzdOq46pMvqV72l+K0cVUXJSbYBmf2OPDlZUPj21ZSWdVBq0M3P TvGJkw4nN8mCfCCWOL2pGT1HJ1g6u1XvB7AkHJReWK3E X-Google-Smtp-Source: AGHT+IHoONg9qNPiKGeTIHddHvmhDg1GDHSsCUAu6Z2s65378ibuLRfTX/M31ed4RtOSacgQiyUf0g== X-Received: by 2002:a1c:4b11:0:b0:405:3455:e1a3 with SMTP id y17-20020a1c4b11000000b004053455e1a3mr30359791wma.17.1697475240062; Mon, 16 Oct 2023 09:54:00 -0700 (PDT) Received: from eriador.lumag.spb.ru ([45.84.211.189]) by smtp.gmail.com with ESMTPSA id s19-20020a05600c45d300b0040648217f4fsm7638996wmo.39.2023.10.16.09.53.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 09:53:59 -0700 (PDT) From: Dmitry Baryshkov To: Dave Stevenson , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Douglas Anderson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , Konrad Dybcio , Jessica Zhang Cc: Marek Vasut , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org Subject: [RFC PATCH 01/10] Revert "drm/bridge: tc358762: Split register programming from pre-enable to enable" Date: Mon, 16 Oct 2023 19:53:46 +0300 Message-ID: <20231016165355.1327217-2-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> References: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" It has been pointed out (e.g. in [1]) that enable is not the best place for sending the DSI commands. There are hosts (sunxi) that can not support sending DSI commands once video stream has enabled. Also most panel drivers send DSI commands in the prepare() callback (which maps to drm_bridg_funcs::pre_enable()). Thus the DSIM host should be fixed to be able to send DSI commands from pre_enable() state. [1] https://lore.kernel.org/dri-devel/CAPY8ntBrhYAmsraDqJGuTrSL6VjGXBAMVoN7= xweV7E4qZv+v3Q@mail.gmail.com/ [2] https://github.com/torvalds/lincux/blob/master/include/drm/drm_mipi_dsi= .h#L84-L87 Cc: Marek Vasut Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/bridge/tc358762.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/bridge/tc358762.c b/drivers/gpu/drm/bridge/tc3= 58762.c index 46198af9eebb..7b9f05f95fd1 100644 --- a/drivers/gpu/drm/bridge/tc358762.c +++ b/drivers/gpu/drm/bridge/tc358762.c @@ -185,17 +185,11 @@ static void tc358762_pre_enable(struct drm_bridge *br= idge, struct drm_bridge_sta usleep_range(5000, 10000); } =20 - ctx->pre_enabled =3D true; -} - -static void tc358762_enable(struct drm_bridge *bridge, struct drm_bridge_s= tate *state) -{ - struct tc358762 *ctx =3D bridge_to_tc358762(bridge); - int ret; - ret =3D tc358762_init(ctx); if (ret < 0) dev_err(ctx->dev, "error initializing bridge (%d)\n", ret); + + ctx->pre_enabled =3D true; } =20 static int tc358762_attach(struct drm_bridge *bridge, @@ -219,7 +213,6 @@ static void tc358762_bridge_mode_set(struct drm_bridge = *bridge, static const struct drm_bridge_funcs tc358762_bridge_funcs =3D { .atomic_post_disable =3D tc358762_post_disable, .atomic_pre_enable =3D tc358762_pre_enable, - .atomic_enable =3D tc358762_enable, .atomic_duplicate_state =3D drm_atomic_helper_bridge_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_bridge_destroy_state, .atomic_reset =3D drm_atomic_helper_bridge_reset, --=20 2.42.0 From nobody Sun Sep 21 21:38:53 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 566F0CDB465 for ; Mon, 16 Oct 2023 17:26:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233630AbjJPR0G (ORCPT ); Mon, 16 Oct 2023 13:26:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58450 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233812AbjJPRZ6 (ORCPT ); Mon, 16 Oct 2023 13:25:58 -0400 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 658991110 for ; Mon, 16 Oct 2023 09:54:03 -0700 (PDT) Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-405497850dbso47299285e9.0 for ; Mon, 16 Oct 2023 09:54:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697475242; x=1698080042; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=y4YcpFsN2TSMs34leTZQIhhDmmY5p8SAeysdXXfcQJY=; b=bmNj056ztzl0VYdTedGhn+6dnUCqBbuUiOvKFOq+d9gOUdm9PHpQnVeCxaytmT7ikT 11ovGxEs7LoB3ArYNAy/yknDRIfv4I2crA8NlufsOXryCciNlXDzKPmTueoKDPuN8B5+ giMdp/Pd6JgKRqSUcZO0Weznbutm2KJIDm+/eGGwjANzDxCOZ7T7FacIGIsVzhDPQCkc FqnMLul7jH48ZUIxj7JAA1Wfef7LupIOsCcGXzxoYg4WPI8MOIVVTDhR6xq6DTLTWVY0 qZvvvqcjM6bAA0/XJVaFZLa8d3W7HNJiFjfA5HWap90bn30pQaxVFM/0nJJYs4Y+AiGZ l6UQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697475242; x=1698080042; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=y4YcpFsN2TSMs34leTZQIhhDmmY5p8SAeysdXXfcQJY=; b=W9er2Hd0eYmw63wQkz7aSrC39o3O5tuvhFjN2irUbmj+aoAc5Ir5YdHKm/C/5i+qFu svcMM/ztqBSXrA32O9tuZHfNPtlcnPI1YwqW/Zx+pdoWpWRnc1ilTP54xQBYDhyEsbvo Unj9MzbrgVfduYn4GRCwskBv19JDSBafM37T5yQtW8v6xHUEe/cJIoAlMLqQXNNaCSwq S4EGQa8APiqnqevfejpM8HFzrpSK3uFSrprnQrHMwtEt+jD0iXiqRw+upXoBFyFS6U2w Z34+WDiuGTZvJRNejWY0cLDC+oBYu3g34rJxj3OFtkDJ2Ph7udCnFSeTcS6AKNGlbve2 3kYQ== X-Gm-Message-State: AOJu0Yx4qflHL1Ycm+p3UrQBjYNDpD7LlJucA1j4cv/W6R16ODhxHAlj oXktQFgmEbouhCh/y/ZIpZ78vw== X-Google-Smtp-Source: AGHT+IG9ptuOZK2qMMs221TBvhrKBhc0p1PMjKU8/S3TkYk4xU7qgakeBAb/XsiPpTTx7XzPxsCcZA== X-Received: by 2002:a7b:c394:0:b0:403:31a:77b9 with SMTP id s20-20020a7bc394000000b00403031a77b9mr30584923wmj.37.1697475241822; Mon, 16 Oct 2023 09:54:01 -0700 (PDT) Received: from eriador.lumag.spb.ru ([45.84.211.189]) by smtp.gmail.com with ESMTPSA id s19-20020a05600c45d300b0040648217f4fsm7638996wmo.39.2023.10.16.09.54.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 09:54:01 -0700 (PDT) From: Dmitry Baryshkov To: Dave Stevenson , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Douglas Anderson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , Konrad Dybcio , Jessica Zhang Cc: Marek Vasut , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org Subject: [RFC PATCH 02/10] drm/mipi-dsi: document DSI hosts limitations Date: Mon, 16 Oct 2023 19:53:47 +0300 Message-ID: <20231016165355.1327217-3-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> References: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Document the known limititations of the DSI hosts vs commands transfers in LP mode. For the details see sun6i_dsi_encoder_enable(). Signed-off-by: Dmitry Baryshkov --- include/drm/drm_mipi_dsi.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h index c9df0407980c..167742e579e3 100644 --- a/include/drm/drm_mipi_dsi.h +++ b/include/drm/drm_mipi_dsi.h @@ -85,6 +85,10 @@ int mipi_dsi_create_packet(struct mipi_dsi_packet *packe= t, * host is in. Drivers that need the underlying device to be powered to * perform these operations will first need to make sure it's been * properly enabled. + * + * Note: some hosts (sunxi) can not send LP commands between HS video + * packets. Thus all DSI transfers sent in LP mode should be limited to the + * drm_bridge_funcs::pre_enable() and drm_panel_funcs::prepare() callbacks. */ struct mipi_dsi_host_ops { int (*attach)(struct mipi_dsi_host *host, --=20 2.42.0 From nobody Sun Sep 21 21:38:53 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id ED5EDCDB465 for ; Mon, 16 Oct 2023 17:07:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234607AbjJPQ5p (ORCPT ); Mon, 16 Oct 2023 12:57:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56342 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234370AbjJPQ4k (ORCPT ); Mon, 16 Oct 2023 12:56:40 -0400 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2DF2D1B9 for ; Mon, 16 Oct 2023 09:54:05 -0700 (PDT) Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-40535597f01so46839505e9.3 for ; Mon, 16 Oct 2023 09:54:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697475243; x=1698080043; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OLZfAioiQyP2GbHH4z94Kghh0UWm5WmSuFGJ712+5P8=; b=RxRgZE4sYeb4tEM3rATm0bRYUOboqRumrEcw4trJcYFi3YrOR3oQqnaVa0OxB0ijsx 0tKalTxlUAJwmw7+fWn6CqaZgnqtNfrpzyvmBiUqoMJ0zwvWcYw6g/Eng40gFTeRlEkp k3UNixOoWJVVjn/VkT3uz/4is9q4kBPbH+YksrTlCmjSh2em9ILiNRhmDiZ7QaNGjM9c iN9dlp39s3sji4zgMHnsLdSTTuvd/Yb0YUeDaMaQosJ+cBmnteq80XnabYt9uHiEwyFx qC5ISusovdfMfs9pAfUSJBpPcT68Rz8Zg3MZRNIRl5aR5RsQiRM3pCBzn9iWlb9kwwpz Ghsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697475243; x=1698080043; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OLZfAioiQyP2GbHH4z94Kghh0UWm5WmSuFGJ712+5P8=; b=sJxLeidItU+92BezJVar3IYpVMMIAq22mPH5PYkufsdmi8vln6TIXNyLELJWdNtTs8 24rXdChca5M3ug2h8t44WeiaeUe8sAhSNJqkZOjmZMj9D0YPg7O/AXeTucAzHW2rhfHv KquibUEQlYaK2ExVHlk3it+yqmrM9Yy22TM6GENWcBuS5g0noGbcUU62SxFx0wIic3dp 4SJVXpWpHV98JrAxAabG4f2BM+wMuCWNjlzVUBIvU82J7+TXx+Ayt/NI6TxhwAtimEhG IcP9DdH3UzCcYS8wEobstmPGZoUw2GCUySv4wX2MscOIeW5ZzWANWmdC1e2astDlBZUR nPRQ== X-Gm-Message-State: AOJu0YxyKAdBKCK6nkS/jMv5CI5uq1e2Nb4OGP4Qjiy9bExrA6eLrNlk MSBhtLttNN4eNU+rcVGlq//FGg== X-Google-Smtp-Source: AGHT+IEBvJ0AZHZOH5C1QXJLEQY2GElyolulqaAir+SIzHoMEpjQbAyxb+WOdlGZX6IRMJmT8vnGLw== X-Received: by 2002:a05:600c:2242:b0:401:be70:53b6 with SMTP id a2-20020a05600c224200b00401be7053b6mr30210769wmm.15.1697475243658; Mon, 16 Oct 2023 09:54:03 -0700 (PDT) Received: from eriador.lumag.spb.ru ([45.84.211.189]) by smtp.gmail.com with ESMTPSA id s19-20020a05600c45d300b0040648217f4fsm7638996wmo.39.2023.10.16.09.54.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 09:54:03 -0700 (PDT) From: Dmitry Baryshkov To: Dave Stevenson , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Douglas Anderson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , Konrad Dybcio , Jessica Zhang Cc: Marek Vasut , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org Subject: [RFC PATCH 03/10] drm/mipi-dsi: add API for manual control over the DSI link power state Date: Mon, 16 Oct 2023 19:53:48 +0300 Message-ID: <20231016165355.1327217-4-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> References: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The MIPI DSI links do not fully fall into the DRM callbacks model. The drm_bridge_funcs abstraction. Instead of having just two states (off and on) the DSI hosts have separate LP-11 state. In this state the host is on, but the video stream is not yet enabled. Introduce API that allows DSI bridges / panels to control the DSI host power up state. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_mipi_dsi.c | 31 +++++++++++++++++++++++++++++++ include/drm/drm_mipi_dsi.h | 29 +++++++++++++++++++++++++---- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c index 14201f73aab1..c467162cb7d8 100644 --- a/drivers/gpu/drm/drm_mipi_dsi.c +++ b/drivers/gpu/drm/drm_mipi_dsi.c @@ -428,6 +428,37 @@ int devm_mipi_dsi_attach(struct device *dev, } EXPORT_SYMBOL_GPL(devm_mipi_dsi_attach); =20 +bool mipi_dsi_host_power_control_available(struct mipi_dsi_host *host) +{ + const struct mipi_dsi_host_ops *ops =3D host->ops; + + return ops && ops->power_up; +} +EXPORT_SYMBOL_GPL(mipi_dsi_host_power_control_available); + +int mipi_dsi_host_power_up(struct mipi_dsi_host *host) +{ + const struct mipi_dsi_host_ops *ops =3D host->ops; + + if (!mipi_dsi_host_power_control_available(host)) + return -EOPNOTSUPP; + + return ops->power_up ? ops->power_up(host) : 0; +} +EXPORT_SYMBOL_GPL(mipi_dsi_host_power_up); + +void mipi_dsi_host_power_down(struct mipi_dsi_host *host) +{ + const struct mipi_dsi_host_ops *ops =3D host->ops; + + if (!mipi_dsi_host_power_control_available(host)) + return; + + if (ops->power_down) + ops->power_down(host); +} +EXPORT_SYMBOL_GPL(mipi_dsi_host_power_down); + static ssize_t mipi_dsi_device_transfer(struct mipi_dsi_device *dsi, struct mipi_dsi_msg *msg) { diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h index 167742e579e3..e503c3e4d057 100644 --- a/include/drm/drm_mipi_dsi.h +++ b/include/drm/drm_mipi_dsi.h @@ -68,6 +68,8 @@ int mipi_dsi_create_packet(struct mipi_dsi_packet *packet, * @attach: attach DSI device to DSI host * @detach: detach DSI device from DSI host * @transfer: transmit a DSI packet + * @power_up: enable DSI link and bring it to the LP-11 state + * @power_down: fully disable DSI link * * DSI packets transmitted by .transfer() are passed in as mipi_dsi_msg * structures. This structure contains information about the type of packet @@ -81,10 +83,18 @@ int mipi_dsi_create_packet(struct mipi_dsi_packet *pack= et, * function will seldomly return anything other than the number of bytes * contained in the transmit buffer on success. * - * Also note that those callbacks can be called no matter the state the - * host is in. Drivers that need the underlying device to be powered to - * perform these operations will first need to make sure it's been - * properly enabled. + * Note: currently there are two modes of DSI power control. Legacy drivers + * will call those callbacks no matter the state the host is in. DSI host + * drivers that need the underlying device to be powered to perform these + * operations will first need to make sure it's been properly enabled. + * + * Newer drivers will set the @MIPI_DSI_MANUAL_POWERUP flag to indicate th= at + * they will call @mipi_dsi_power_up() and @mipi_dsi_power_down() to contr= ol + * the link state of the DSI host or they will set @MIPI_DSI_AUTO_POWERUP = to + * indicate that the driver is fine with the link being powered up in DSI + * host's (atomic_)pre_enable() callback and then being disabled in the + * (atomic_)post_disable() callback. The transfer callback must only be ca= lled + * if the DSI host has been powered up and was not brought down. * * Note: some hosts (sunxi) can not send LP commands between HS video * packets. Thus all DSI transfers sent in LP mode should be limited to the @@ -97,6 +107,8 @@ struct mipi_dsi_host_ops { struct mipi_dsi_device *dsi); ssize_t (*transfer)(struct mipi_dsi_host *host, const struct mipi_dsi_msg *msg); + int (*power_up)(struct mipi_dsi_host *host); + void (*power_down)(struct mipi_dsi_host *host); }; =20 /** @@ -143,6 +155,10 @@ struct mipi_dsi_host *of_find_mipi_dsi_host_by_node(st= ruct device_node *node); #define MIPI_DSI_MODE_LPM BIT(11) /* transmit data ending at the same time for all lanes within one hsync */ #define MIPI_DSI_HS_PKT_END_ALIGNED BIT(12) +/* DSI peripheral driver manually controls DSI link powerup */ +#define MIPI_DSI_MANUAL_POWERUP BIT(13) +/* DSI peripheral driver is fine with automatic DSI link power control */ +#define MIPI_DSI_AUTO_POWERUP BIT(14) =20 enum mipi_dsi_pixel_format { MIPI_DSI_FMT_RGB888, @@ -235,6 +251,11 @@ void mipi_dsi_device_unregister(struct mipi_dsi_device= *dsi); struct mipi_dsi_device * devm_mipi_dsi_device_register_full(struct device *dev, struct mipi_dsi_hos= t *host, const struct mipi_dsi_device_info *info); + +bool mipi_dsi_host_power_control_available(struct mipi_dsi_host *host); +int mipi_dsi_host_power_up(struct mipi_dsi_host *host); +void mipi_dsi_host_power_down(struct mipi_dsi_host *host); + struct mipi_dsi_device *of_find_mipi_dsi_device_by_node(struct device_node= *np); int mipi_dsi_attach(struct mipi_dsi_device *dsi); int mipi_dsi_detach(struct mipi_dsi_device *dsi); --=20 2.42.0 From nobody Sun Sep 21 21:38:53 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4CF81CDB465 for ; Mon, 16 Oct 2023 16:57:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234413AbjJPQ5j (ORCPT ); Mon, 16 Oct 2023 12:57:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56412 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234455AbjJPQ4k (ORCPT ); Mon, 16 Oct 2023 12:56:40 -0400 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 174A22133 for ; Mon, 16 Oct 2023 09:54:07 -0700 (PDT) Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-40684f53bfcso44071365e9.0 for ; Mon, 16 Oct 2023 09:54:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697475245; x=1698080045; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Gh1i1qC5dBtLH8fnR85p04AUelnLL/86pQbMA34ZucQ=; b=vzHcoHsLhS7Ac6lXY9AEuKugvuwVMLa/702wfzhO2OHGHKi92a1lWVDvVcE39Et4xE mmxy3c9tqYzuAj9FO6qTYdUUMNY6Mz6aAFrHYYZhEfWyqBQTZ7VOO/QRd393HiTkdW78 zFw8SkPNo8Vclboj6FXPIsWrKiKrvZ0wlRfSRm1/Q58jamBoexjbMh01OeUHxPcluZZP UadpRGfKMDdFd1pL4X5BobrqU5q8sbC7FE8D2lsKPfG/y8mTOONjQMpapdahirOAcuRZ CkTJk5PbL5UMu/woAY7hXO/Gw4mdT/7TXELSW5Mo5o/j0XS0gL2JIwTeeHgEd9zu6jzu EHUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697475245; x=1698080045; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Gh1i1qC5dBtLH8fnR85p04AUelnLL/86pQbMA34ZucQ=; b=PBW1OXcskAKvP905b21DXDnvRV7Xep6TUBvQ/v+DO/U/aCp/uhOqd50mqB4tvd0Qpo 3QrKIsmxpaBNFOz/IqIX8Y7JfPCL8YSjqJR2l3Sinw+DfGFkQhmGPe3B2kctxr70A1w7 XDE8AQUSMgZ7C1aef1BhjTsYqF+lboXh9Dw3tWGrQ2ieWxeop9DoUa0hpTMhiBpQzIz6 zlfhMc+Isk6QArMDnbyizF//+bZkoocjwtfCzq9rr94TRFq02n6Sg4H3ivdWYkUQNHW4 uIPOX+5hveoxe5xzx3fYu6TGqAbFuMNAbK6KcRtmQIx7SqeuZmgsU/EL/YQf9iULaW2f pXRg== X-Gm-Message-State: AOJu0YwhNd9wWkIhWYFKQdXG4GFp5+e5LCLIZPx1aQhMTs6qUCw7Dy5y iKeltqNDQC4xEvRGCSQYayNc+g== X-Google-Smtp-Source: AGHT+IE0ZfNIwOf9qoBMcCLzP2Zitib4HQoRxmYe1CQIkuDQPdAYbM6sYWt+8StvzHVCWDqd+MMgNA== X-Received: by 2002:a7b:c419:0:b0:3fe:d630:f568 with SMTP id k25-20020a7bc419000000b003fed630f568mr29322698wmi.39.1697475245495; Mon, 16 Oct 2023 09:54:05 -0700 (PDT) Received: from eriador.lumag.spb.ru ([45.84.211.189]) by smtp.gmail.com with ESMTPSA id s19-20020a05600c45d300b0040648217f4fsm7638996wmo.39.2023.10.16.09.54.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 09:54:05 -0700 (PDT) From: Dmitry Baryshkov To: Dave Stevenson , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Douglas Anderson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , Konrad Dybcio , Jessica Zhang Cc: Marek Vasut , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org Subject: [RFC PATCH 04/10] drm/msm/dsi: use dsi_mgr_bridge_power_off in dsi_mgr_bridge_post_disable Date: Mon, 16 Oct 2023 19:53:49 +0300 Message-ID: <20231016165355.1327217-5-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> References: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Simplify dsi_mgr_bridge_post_disable() by using dsi_mgr_bridge_power_off() instead of hand-coding the same call sequence. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dsi/dsi_manager.c | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/ds= i/dsi_manager.c index 896f369fdd53..9fa1f29ec11a 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_manager.c +++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c @@ -372,8 +372,10 @@ static void dsi_mgr_bridge_post_disable(struct drm_bri= dge *bridge) * It is safe to call dsi_mgr_phy_disable() here because a single PHY * won't be diabled until both PHYs request disable. */ - if (is_bonded_dsi && !IS_MASTER_DSI_LINK(id)) - goto disable_phy; + if (is_bonded_dsi && !IS_MASTER_DSI_LINK(id)) { + dsi_mgr_phy_disable(id); + return; + } =20 ret =3D msm_dsi_host_disable(host); if (ret) @@ -385,26 +387,10 @@ static void dsi_mgr_bridge_post_disable(struct drm_br= idge *bridge) pr_err("%s: host1 disable failed, %d\n", __func__, ret); } =20 - msm_dsi_host_disable_irq(host); - if (is_bonded_dsi && msm_dsi1) - msm_dsi_host_disable_irq(msm_dsi1->host); - /* Save PHY status if it is a clock source */ msm_dsi_phy_pll_save_state(msm_dsi->phy); =20 - ret =3D msm_dsi_host_power_off(host); - if (ret) - pr_err("%s: host %d power off failed,%d\n", __func__, id, ret); - - if (is_bonded_dsi && msm_dsi1) { - ret =3D msm_dsi_host_power_off(msm_dsi1->host); - if (ret) - pr_err("%s: host1 power off failed, %d\n", - __func__, ret); - } - -disable_phy: - dsi_mgr_phy_disable(id); + dsi_mgr_bridge_power_off(bridge); } =20 static void dsi_mgr_bridge_mode_set(struct drm_bridge *bridge, --=20 2.42.0 From nobody Sun Sep 21 21:38:53 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CBDB4C41513 for ; Mon, 16 Oct 2023 16:57:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234567AbjJPQ5b (ORCPT ); Mon, 16 Oct 2023 12:57:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234011AbjJPQ4l (ORCPT ); Mon, 16 Oct 2023 12:56:41 -0400 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B72F5262A for ; Mon, 16 Oct 2023 09:54:08 -0700 (PDT) Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-40684f53bfcso44071585e9.0 for ; Mon, 16 Oct 2023 09:54:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697475247; x=1698080047; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jimH2tfDdFWkB0SZHBV7Ktkx0rri8vXGCD3VUxA9GeA=; b=yHjvUQmxK1Kaums4YIdQCsa+OqESqk8P3PMH/OCkPUkgHlLNyJj39LqHFyVwGiHAMc qy3dMopCMCLyt1sYYCVnuqH7VsdaOaHJVvXasX+YeeUnGxJnxmptHWyjS2dm+1e1ucVL dxHKa7IiJZ1y1W3Xx+FpxVmcau4drvMksrYP8ceWYE8iN001oumg/2wdPPFOfE3gt8QY jClpyoP6+ITv05o++JvjzzANcaZaL3w79wltt2fdYd4I77e+IErkdASD4IbcQkxaQ7uJ 8dEwyIRu+FgbkUbga3nFxlfXlUZxG1r7MKwfVV0t0OCToLwrzMC/JHyIW6BX1FRgYJHf Ga4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697475247; x=1698080047; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jimH2tfDdFWkB0SZHBV7Ktkx0rri8vXGCD3VUxA9GeA=; b=NojH5VX6Gw6/1gxN8nlczLJXmCHb8Zi+1D2qLNYrExQiQNnlSFQMIrQG5Nc+9GuAtO uzbtWE7z5ep6QS74tp7gDWsfZMMowxwfqzme/Kdx+8evvvSxmjbESFsiAgVZgmGt1E1P Di8AqrJ1UdOnDMFLV2sM429HHblVy/CZlR9TivmcNi3g8bmsFNJDsLC1qisloTxkTbMS E76Y4oE1We8ldXezDwQFN5H3eXtY98ufMXxwISzfmOFtFvNp3BVwXJpgk84AT9optc0+ gzsg4SOjn4M17yKTdjKKxib3So1SUSGXosBrW9esGYEJO5oRMUISXeFslfZum/zSKkCk b3iQ== X-Gm-Message-State: AOJu0YzxclZYBw+t+rXIuBTpsdpb0ANtaNXUwaNpGjztU6NLDCR21M+l wGsnSMzewfqcaCkc3pgcMwl/1w== X-Google-Smtp-Source: AGHT+IFDCXD+4t3VPxLJVJO+pq+UmMCJZ9tCFqBC/3siQaBareVnnULXc6m32AkE8Mx8Tvt2g0WS8w== X-Received: by 2002:a05:600c:2a4e:b0:405:49aa:d578 with SMTP id x14-20020a05600c2a4e00b0040549aad578mr30626127wme.37.1697475247221; Mon, 16 Oct 2023 09:54:07 -0700 (PDT) Received: from eriador.lumag.spb.ru ([45.84.211.189]) by smtp.gmail.com with ESMTPSA id s19-20020a05600c45d300b0040648217f4fsm7638996wmo.39.2023.10.16.09.54.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 09:54:06 -0700 (PDT) From: Dmitry Baryshkov To: Dave Stevenson , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Douglas Anderson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , Konrad Dybcio , Jessica Zhang Cc: Marek Vasut , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org Subject: [RFC PATCH 05/10] drm/msm/dsi: implement manual power control Date: Mon, 16 Oct 2023 19:53:50 +0300 Message-ID: <20231016165355.1327217-6-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> References: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Implement new API for tight control over the DSI link's power state. This allows bridge and panel drivers to send DSI commands at a proper time. Note, this also brings back the ps8640 workaround (to be removed later, once ps8640 driver sets up the MIPI_DSI_MANUAL_POWERUP flag).. We have to make sure that the DSI link stays disabled in case of this bridge, otherwise it will not work. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dsi/dsi.h | 4 ++ drivers/gpu/drm/msm/dsi/dsi_host.c | 44 +++++++++++++++++ drivers/gpu/drm/msm/dsi/dsi_manager.c | 68 +++++++++++++++++++++++---- 3 files changed, 106 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi.h b/drivers/gpu/drm/msm/dsi/dsi.h index a01c326774a6..e0ae2cb144de 100644 --- a/drivers/gpu/drm/msm/dsi/dsi.h +++ b/drivers/gpu/drm/msm/dsi/dsi.h @@ -63,6 +63,8 @@ bool msm_dsi_manager_cmd_xfer_trigger(int id, u32 dma_bas= e, u32 len); int msm_dsi_manager_register(struct msm_dsi *msm_dsi); void msm_dsi_manager_unregister(struct msm_dsi *msm_dsi); void msm_dsi_manager_tpg_enable(void); +int msm_dsi_manager_power_up(int id); +void msm_dsi_manager_power_down(int id); =20 /* msm dsi */ static inline bool msm_dsi_device_connected(struct msm_dsi *msm_dsi) @@ -108,6 +110,8 @@ void msm_dsi_host_get_phy_clk_req(struct mipi_dsi_host = *host, void msm_dsi_host_destroy(struct mipi_dsi_host *host); int msm_dsi_host_modeset_init(struct mipi_dsi_host *host, struct drm_device *dev); +bool msm_dsi_host_auto_powerup(struct mipi_dsi_host *host); +bool msm_dsi_host_early_powerup(struct mipi_dsi_host *host); int msm_dsi_host_init(struct msm_dsi *msm_dsi); int msm_dsi_runtime_suspend(struct device *dev); int msm_dsi_runtime_resume(struct device *dev); diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/d= si_host.c index fd2201cb62db..7010a6f17c5f 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_host.c +++ b/drivers/gpu/drm/msm/dsi/dsi_host.c @@ -1671,10 +1671,54 @@ static ssize_t dsi_host_transfer(struct mipi_dsi_ho= st *host, return ret; } =20 +static bool msm_dsi_host_manual_powerup(struct mipi_dsi_host *host) +{ + struct msm_dsi_host *msm_host =3D to_msm_dsi_host(host); + + return msm_host->mode_flags & MIPI_DSI_MANUAL_POWERUP; +} + +bool msm_dsi_host_auto_powerup(struct mipi_dsi_host *host) +{ + struct msm_dsi_host *msm_host =3D to_msm_dsi_host(host); + + return msm_host->mode_flags & MIPI_DSI_AUTO_POWERUP; +} + +bool msm_dsi_host_early_powerup(struct mipi_dsi_host *host) +{ + struct msm_dsi_host *msm_host =3D to_msm_dsi_host(host); + + return !msm_dsi_host_manual_powerup(host) && + !msm_dsi_host_auto_powerup(host); +} + +static int msm_dsi_host_power_up(struct mipi_dsi_host *host) +{ + struct msm_dsi_host *msm_host =3D to_msm_dsi_host(host); + + if (msm_dsi_host_auto_powerup(host)) + return 0; + + return msm_dsi_manager_power_up(msm_host->id); +} + +static void msm_dsi_host_power_down(struct mipi_dsi_host *host) +{ + struct msm_dsi_host *msm_host =3D to_msm_dsi_host(host); + + if (!msm_dsi_host_manual_powerup(host)) + return; + + msm_dsi_manager_power_down(msm_host->id); +} + static const struct mipi_dsi_host_ops dsi_host_ops =3D { .attach =3D dsi_host_attach, .detach =3D dsi_host_detach, .transfer =3D dsi_host_transfer, + .power_up =3D msm_dsi_host_power_up, + .power_down =3D msm_dsi_host_power_down, }; =20 /* diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/ds= i/dsi_manager.c index 9fa1f29ec11a..2d7040d21239 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_manager.c +++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c @@ -198,6 +198,44 @@ static int dsi_mgr_bridge_get_id(struct drm_bridge *br= idge) return dsi_bridge->id; } =20 +/* + * If the next bridge in the chain is the Parade ps8640 bridge chip then d= on't + * power on early since it seems to violate the expectations of the firmwa= re + * that the bridge chip is running. + */ +static bool dsi_mgr_next_is_ps8640(struct drm_bridge *bridge) +{ + struct drm_bridge *next_bridge =3D drm_bridge_get_next_bridge(bridge); + + return next_bridge && + next_bridge->of_node && + of_device_is_compatible(next_bridge->of_node, "parade,ps8640"); +} + +static bool dsi_mgr_auto_powerup(struct drm_bridge *bridge) +{ + int id =3D dsi_mgr_bridge_get_id(bridge); + struct msm_dsi *msm_dsi =3D dsi_mgr_get_dsi(id); + struct mipi_dsi_host *host =3D msm_dsi->host; + + if (dsi_mgr_next_is_ps8640(bridge)) + return true; + + return msm_dsi_host_auto_powerup(host); +} + +static bool dsi_mgr_early_powerup(struct drm_bridge *bridge) +{ + int id =3D dsi_mgr_bridge_get_id(bridge); + struct msm_dsi *msm_dsi =3D dsi_mgr_get_dsi(id); + struct mipi_dsi_host *host =3D msm_dsi->host; + + if (dsi_mgr_next_is_ps8640(bridge)) + return false; + + return msm_dsi_host_early_powerup(host); +} + static void msm_dsi_manager_set_split_display(u8 id) { struct msm_dsi *msm_dsi =3D dsi_mgr_get_dsi(id); @@ -228,9 +266,8 @@ static void msm_dsi_manager_set_split_display(u8 id) } } =20 -static int dsi_mgr_bridge_power_on(struct drm_bridge *bridge) +int msm_dsi_manager_power_up(int id) { - int id =3D dsi_mgr_bridge_get_id(bridge); struct msm_dsi *msm_dsi =3D dsi_mgr_get_dsi(id); struct msm_dsi *msm_dsi1 =3D dsi_mgr_get_dsi(DSI_1); struct mipi_dsi_host *host =3D msm_dsi->host; @@ -240,6 +277,10 @@ static int dsi_mgr_bridge_power_on(struct drm_bridge *= bridge) =20 DBG("id=3D%d", id); =20 + /* Do nothing with the host if it is slave-DSI in case of bonded DSI */ + if (is_bonded_dsi && !IS_MASTER_DSI_LINK(id)) + return 0; + ret =3D dsi_mgr_phy_enable(id, phy_shared_timings); if (ret) goto phy_en_fail; @@ -278,9 +319,8 @@ static int dsi_mgr_bridge_power_on(struct drm_bridge *b= ridge) return ret; } =20 -static void dsi_mgr_bridge_power_off(struct drm_bridge *bridge) +void msm_dsi_manager_power_down(int id) { - int id =3D dsi_mgr_bridge_get_id(bridge); struct msm_dsi *msm_dsi =3D dsi_mgr_get_dsi(id); struct msm_dsi *msm_dsi1 =3D dsi_mgr_get_dsi(DSI_1); struct mipi_dsi_host *host =3D msm_dsi->host; @@ -312,10 +352,12 @@ static void dsi_mgr_bridge_pre_enable(struct drm_brid= ge *bridge) if (is_bonded_dsi && !IS_MASTER_DSI_LINK(id)) return; =20 - ret =3D dsi_mgr_bridge_power_on(bridge); - if (ret) { - dev_err(&msm_dsi->pdev->dev, "Power on failed: %d\n", ret); - return; + if (dsi_mgr_auto_powerup(bridge)) { + ret =3D msm_dsi_manager_power_up(id); + if (ret) { + dev_err(&msm_dsi->pdev->dev, "Power on failed: %d\n", ret); + return; + } } =20 ret =3D msm_dsi_host_enable(host); @@ -337,7 +379,8 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge= *bridge) host1_en_fail: msm_dsi_host_disable(host); host_en_fail: - dsi_mgr_bridge_power_off(bridge); + if (dsi_mgr_auto_powerup(bridge)) + msm_dsi_manager_power_down(id); } =20 void msm_dsi_manager_tpg_enable(void) @@ -390,7 +433,9 @@ static void dsi_mgr_bridge_post_disable(struct drm_brid= ge *bridge) /* Save PHY status if it is a clock source */ msm_dsi_phy_pll_save_state(msm_dsi->phy); =20 - dsi_mgr_bridge_power_off(bridge); + if (dsi_mgr_auto_powerup(bridge) || + dsi_mgr_early_powerup(bridge)) + msm_dsi_manager_power_down(id); } =20 static void dsi_mgr_bridge_mode_set(struct drm_bridge *bridge, @@ -411,6 +456,9 @@ static void dsi_mgr_bridge_mode_set(struct drm_bridge *= bridge, msm_dsi_host_set_display_mode(host, adjusted_mode); if (is_bonded_dsi && other_dsi) msm_dsi_host_set_display_mode(other_dsi->host, adjusted_mode); + + if (dsi_mgr_early_powerup(bridge)) + msm_dsi_manager_power_up(id); } =20 static enum drm_mode_status dsi_mgr_bridge_mode_valid(struct drm_bridge *b= ridge, --=20 2.42.0 From nobody Sun Sep 21 21:38:53 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0C81ACDB465 for ; Mon, 16 Oct 2023 16:57:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233884AbjJPQ47 (ORCPT ); Mon, 16 Oct 2023 12:56:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56396 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234374AbjJPQ4l (ORCPT ); Mon, 16 Oct 2023 12:56:41 -0400 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91065324A for ; Mon, 16 Oct 2023 09:54:10 -0700 (PDT) Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-40776b200e5so26431565e9.2 for ; Mon, 16 Oct 2023 09:54:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697475249; x=1698080049; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AhGTCeJTgvu597dzkwlQwgzYcEyeuUmDXvIZAq5l/4I=; b=KIXmQqYeNZ+MQKazc4bVk01kpUUKf4aansqE25G3Y9+IaGJtwLEzmrQ91UzNhb5hA2 lO0u1A4BpsFA7AgwdgF6R1TJ1HSGfTs02FCtsIJElbx27a+d9pz0QM1Ilmlp/X4ZanX9 eDnDqDSr/P4mJF1cKtNwxKQKtGvtjfw/cUxp6FpowDpuI/ecljtUkS4s3JnFZ+DAIXKN RTypNew6bXAgjGBkLqIJQ/uWH4IZbMnRmOC0HTO70rfZAq/80oNFur/EiydrpmCIxkfI VNp1mGX5Rr9BjajfjS25mMA20jdKRxUaQ2t35YUGLmK/q61gK/RKlgUtIU4/3AFfLC5a 2QFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697475249; x=1698080049; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AhGTCeJTgvu597dzkwlQwgzYcEyeuUmDXvIZAq5l/4I=; b=bTwqkcOddndNJNzhAw9FSKhNcNgoPxCwODPYzTFoccsTLfCKi9b601uScIMaNnIvtC CviYKB4IbBDy2zJ1yQr5dKSJBzmkSrhwvJeBM4lhSNiSitUpxH7fYyc1darKkK8mG0rq 31wzf5Jlqeu+EoVAew5kwsS5wCYAcfsxzcosM4BD6fDe3cbJT+AmCZj8lITtPeBHJQha ZFnksL8wMzp63cjU57J6OFsOrVTYMKG970qSbzya2PbBBDqBcCE4lYUBb+aqF9dqUbM5 fdVNtnTSrNeuRh4nsnOX0B25mvgJ+GSz7U8D6QzaHGkZEq7Ewr4z8CXBNkn/lRYE3zMK bHYw== X-Gm-Message-State: AOJu0YyvMBbYoSkHEFusB4MuP05p1hhO5yM6Sgktt2AbDihiWaydsRLy 8jRzbvaOqM978T6Y6NPw6DC7cA== X-Google-Smtp-Source: AGHT+IFMc1ydiV35u/i4xaIUD7bB3YsAkS433GNNfx1qmd94WFx7VWq0imHb4rjYzorutlJy9cRnjA== X-Received: by 2002:a05:600c:4f49:b0:407:8b61:da70 with SMTP id m9-20020a05600c4f4900b004078b61da70mr784351wmq.9.1697475248812; Mon, 16 Oct 2023 09:54:08 -0700 (PDT) Received: from eriador.lumag.spb.ru ([45.84.211.189]) by smtp.gmail.com with ESMTPSA id s19-20020a05600c45d300b0040648217f4fsm7638996wmo.39.2023.10.16.09.54.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 09:54:08 -0700 (PDT) From: Dmitry Baryshkov To: Dave Stevenson , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Douglas Anderson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , Konrad Dybcio , Jessica Zhang Cc: Marek Vasut , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org Subject: [RFC PATCH 06/10] drm/bridge: tc358762: add support for manual DSI power control Date: Mon, 16 Oct 2023 19:53:51 +0300 Message-ID: <20231016165355.1327217-7-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> References: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Start migrating tc358762 bridge to new manual DSI power control API. If the tight power control is not available, default to the existing pre_enable_prev_first flag. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/bridge/tc358762.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/tc358762.c b/drivers/gpu/drm/bridge/tc3= 58762.c index 7b9f05f95fd1..efb1da4487c9 100644 --- a/drivers/gpu/drm/bridge/tc358762.c +++ b/drivers/gpu/drm/bridge/tc358762.c @@ -72,6 +72,7 @@ struct tc358762 { struct device *dev; struct drm_bridge bridge; struct regulator *regulator; + struct mipi_dsi_host *dsi_host; struct drm_bridge *panel_bridge; struct gpio_desc *reset_gpio; struct drm_display_mode mode; @@ -163,6 +164,8 @@ static void tc358762_post_disable(struct drm_bridge *br= idge, struct drm_bridge_s =20 ctx->pre_enabled =3D false; =20 + mipi_dsi_host_power_down(ctx->dsi_host); + if (ctx->reset_gpio) gpiod_set_value_cansleep(ctx->reset_gpio, 0); =20 @@ -185,6 +188,10 @@ static void tc358762_pre_enable(struct drm_bridge *bri= dge, struct drm_bridge_sta usleep_range(5000, 10000); } =20 + ret =3D mipi_dsi_host_power_up(ctx->dsi_host); + if (ret < 0) + dev_err(ctx->dev, "error powering up the DSI host (%d)\n", ret); + ret =3D tc358762_init(ctx); if (ret < 0) dev_err(ctx->dev, "error initializing bridge (%d)\n", ret); @@ -277,10 +284,16 @@ static int tc358762_probe(struct mipi_dsi_device *dsi) if (ret < 0) return ret; =20 + ctx->dsi_host =3D dsi->host; + ctx->bridge.funcs =3D &tc358762_bridge_funcs; ctx->bridge.type =3D DRM_MODE_CONNECTOR_DPI; ctx->bridge.of_node =3D dev->of_node; - ctx->bridge.pre_enable_prev_first =3D true; + + if (mipi_dsi_host_power_control_available(dsi->host)) + dsi->mode_flags |=3D MIPI_DSI_MANUAL_POWERUP; + else + ctx->bridge.pre_enable_prev_first =3D true; =20 drm_bridge_add(&ctx->bridge); =20 --=20 2.42.0 From nobody Sun Sep 21 21:38:53 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AF610CDB465 for ; Mon, 16 Oct 2023 16:57:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234364AbjJPQ5G (ORCPT ); Mon, 16 Oct 2023 12:57:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38114 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234388AbjJPQ4l (ORCPT ); Mon, 16 Oct 2023 12:56:41 -0400 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 18DB53841 for ; Mon, 16 Oct 2023 09:54:12 -0700 (PDT) Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-4075c58ac39so48876275e9.3 for ; Mon, 16 Oct 2023 09:54:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697475250; x=1698080050; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tDlsbj0O4m938XJJJjIOKHw+A0HfBTEQDaR3qGbI7EM=; b=ebRdFCkTp69mnesA4vlUP9qPwXgAjbDp4ttEGNZADsJK35BzSGJpjHDA6dB6/IbUl8 3B7tBYYoe3uS+wQIHeyXN0EcdR2sFJU1cxV7sX21nhk+riZphRYMr200XHEkeeu3Axzx iDFVhkIm0Uh3t9bbBnWA4B+shgKFsONE1jjTmn2k2L5m7N37dSOej+B94a1noOPIEoNG PnoG3QjLrsw5OPp7qdnMGQGgmgelvKtvYAohwU3ggc2wsCTh11IsDutMQQJBFHXM42kL 0rMDZ4yF5V23jfH4u+pLiaNGgIvbZZC9uWDtk31IenfRM8rqhR7j1cyc2gsA22XKqQOp OCLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697475250; x=1698080050; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tDlsbj0O4m938XJJJjIOKHw+A0HfBTEQDaR3qGbI7EM=; b=IPpfZ2M3Xx+Tl4c4C8iZ/9C6YA3k5uGGEFtDTmVAmuh9gSPg1/v9b1qhQCeMBaNc/L L9sskabj/Gq1hlhpQDZLvDYVFdR8YfmVMGrol4uQjsjiVRwA/EWCwoYDYudaXqvjHguY pmWD3yw2wmBbQRiX12lixCmO8bKApXKJGOjq12KIpmNp2voCN4Q1tXW7SfpJAivOFFM3 zryQ6hp+Q4ZFB5Qs3w6kAFF9HccCRz1EAQsBKddPDho1XnWcMXMzwaMvAEJI3ePJjdN1 ijp7TqC1jAr3TYxgQrZr5mCi+ExtISXwq4bjMJza4HfBG8EeApxwuMJ150CL7CsxSqhJ B4Gg== X-Gm-Message-State: AOJu0YwWQzKKIBt/fY5mqlYRA9kbG6Le3mSQF23DW2ayeEDM9+uwvgXu bHjNamAo6Bh3ZkItCazaflP4sA== X-Google-Smtp-Source: AGHT+IHo4VTLj6QFSkMq4vzDZuAnsr0A18LuIJLePvTKSU99Hb1c9SVuY4KiSXHIr1fuYLLcUJPY5Q== X-Received: by 2002:a7b:c7d7:0:b0:3fd:2e89:31bd with SMTP id z23-20020a7bc7d7000000b003fd2e8931bdmr30618680wmk.14.1697475250508; Mon, 16 Oct 2023 09:54:10 -0700 (PDT) Received: from eriador.lumag.spb.ru ([45.84.211.189]) by smtp.gmail.com with ESMTPSA id s19-20020a05600c45d300b0040648217f4fsm7638996wmo.39.2023.10.16.09.54.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 09:54:10 -0700 (PDT) From: Dmitry Baryshkov To: Dave Stevenson , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Douglas Anderson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , Konrad Dybcio , Jessica Zhang Cc: Marek Vasut , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org Subject: [RFC PATCH 07/10] drm/bridge: ps8640: require manual DSI power control Date: Mon, 16 Oct 2023 19:53:52 +0300 Message-ID: <20231016165355.1327217-8-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> References: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The Parade PS8640 bridge will fail to start if the DSI link is enabled when the bridge is being reset / powered up (even to the LP-11 state). To ensure that the DSI link is powered down, require manual control over the DSI link state. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/bridge/parade-ps8640.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridg= e/parade-ps8640.c index 8161b1a1a4b1..6c5daaa70cb7 100644 --- a/drivers/gpu/drm/bridge/parade-ps8640.c +++ b/drivers/gpu/drm/bridge/parade-ps8640.c @@ -458,6 +458,10 @@ static void ps8640_atomic_pre_enable(struct drm_bridge= *bridge, =20 ps8640_bridge_vdo_control(ps_bridge, ENABLE); =20 + ret =3D mipi_dsi_host_power_up(ps_bridge->dsi->host); + if (ret < 0) + dev_warn(dev, "failed to power up DSI host: %d\n", ret); + ps_bridge->pre_enabled =3D true; } =20 @@ -468,6 +472,8 @@ static void ps8640_atomic_post_disable(struct drm_bridg= e *bridge, =20 ps_bridge->pre_enabled =3D false; =20 + mipi_dsi_host_power_down(ps_bridge->dsi->host); + ps8640_bridge_vdo_control(ps_bridge, DISABLE); pm_runtime_put_sync_suspend(&ps_bridge->page[PAGE0_DP_CNTL]->dev); } @@ -562,6 +568,11 @@ static int ps8640_bridge_get_dsi_resources(struct devi= ce *dev, struct ps8640 *ps if (!host) return -EPROBE_DEFER; =20 + if (!mipi_dsi_host_power_control_available(host)) { + dev_err(dev, "MIPI DSI host doesn't provide tight power control\n"); + return -ENODEV; + } + dsi =3D devm_mipi_dsi_device_register_full(dev, host, &info); if (IS_ERR(dsi)) { dev_err(dev, "failed to create dsi device\n"); @@ -572,7 +583,8 @@ static int ps8640_bridge_get_dsi_resources(struct devic= e *dev, struct ps8640 *ps =20 dsi->host =3D host; dsi->mode_flags =3D MIPI_DSI_MODE_VIDEO | - MIPI_DSI_MODE_VIDEO_SYNC_PULSE; + MIPI_DSI_MODE_VIDEO_SYNC_PULSE | + MIPI_DSI_MANUAL_POWERUP; dsi->format =3D MIPI_DSI_FMT_RGB888; dsi->lanes =3D NUM_MIPI_LANES; =20 --=20 2.42.0 From nobody Sun Sep 21 21:38:53 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 55DE4CDB465 for ; Mon, 16 Oct 2023 16:57:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234540AbjJPQ5W (ORCPT ); Mon, 16 Oct 2023 12:57:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37134 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233860AbjJPQ4m (ORCPT ); Mon, 16 Oct 2023 12:56:42 -0400 Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A6A0F3873 for ; Mon, 16 Oct 2023 09:54:13 -0700 (PDT) Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-4065dea9a33so45537755e9.3 for ; Mon, 16 Oct 2023 09:54:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697475252; x=1698080052; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7atWdHX87tg37dPcf4FsazD++qIF8t5k5lbbaEv6EjQ=; b=Uprv4Hn2IPCDeTaUEae+9zl2q9+xhk5RCmPvOG5bmHC0AIy3gLI8pjNUrs30Y6R4+r J64hKtTrOd6IgvFDXfG9JIIduVzcHoP3gbHUSNI6TuYCeO24AzPANLqeRpJEa9TYGAyM IocR6XGReWRJ09TOl47SokkVCj9ZUX1cGG8dJMJ04huJjkR6UmsIPBMh1/vBjB+NKHl0 5hyzkHbcGBcNSXwAfb5WzFw7LKdub1NxlE/DHXhwc1umcZRHntdDUaZn2Umg4w1aBruE cnY+I8kAkYuEbbahdrQR8BJdRZwYDm9NvxRsEKd1lOd3/EdPBvMt1zPCHZ5Rbxz41Nhw pIyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697475252; x=1698080052; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7atWdHX87tg37dPcf4FsazD++qIF8t5k5lbbaEv6EjQ=; b=IUUWwoSKfSfhtt/t+GO6zY+ZKH4pC3I81gm9VyPo3tbDuvi4b124Ni84CMLyNkm1Au m+TR/5oTTzu//88hmpiKlBxxu0wid4ZnBT2U7gTPbFJjvfTA2U+kv2PRurMWI+5SA5BT yUJaMhro4E/R+fqMOs5oZC8hUkAMyaOckv62Fsn9F6FCXpDvElcVnVrOQcW4N6TkkrhW 2M0MYAkn1F70ywnGKkxKkkI3lCEGaIC8EQmGm+BEs7a6hcb99fpOfihRMILTK0vpL+4R ap4/T2jFENx811e7NhWyEw+uP4m6YU+FQAP4cPBe1uvraFmbO6PkVaVDNmCA9JpIFZPy 4RLA== X-Gm-Message-State: AOJu0YxND3NF2FzVk8BIgDIvNlEKC3EYNYvJWawFhr+PH1w0X9RfOapF u02W1JYTtghFf/Y2xILp0zdDhQ== X-Google-Smtp-Source: AGHT+IFkELKtKgynuffB+oWpclXHrxccbH7YSTd/rxvV58WereDXS35Dcn2oCjeZlgI0vrzf+kaXkQ== X-Received: by 2002:a7b:c5c9:0:b0:403:272:4414 with SMTP id n9-20020a7bc5c9000000b0040302724414mr29903330wmk.0.1697475252155; Mon, 16 Oct 2023 09:54:12 -0700 (PDT) Received: from eriador.lumag.spb.ru ([45.84.211.189]) by smtp.gmail.com with ESMTPSA id s19-20020a05600c45d300b0040648217f4fsm7638996wmo.39.2023.10.16.09.54.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 09:54:11 -0700 (PDT) From: Dmitry Baryshkov To: Dave Stevenson , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Douglas Anderson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , Konrad Dybcio , Jessica Zhang Cc: Marek Vasut , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org Subject: [RFC PATCH 08/10] drm/bridge: lt9611: mark for automatic DSI power control Date: Mon, 16 Oct 2023 19:53:53 +0300 Message-ID: <20231016165355.1327217-9-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> References: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The Lontium LT9611 driver doesn't need to control DSI power lines manually. Mark it for automatic power control. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/bridge/lontium-lt9611.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c b/drivers/gpu/drm/brid= ge/lontium-lt9611.c index 9663601ce098..10b7093bd5c5 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9611.c +++ b/drivers/gpu/drm/bridge/lontium-lt9611.c @@ -774,7 +774,7 @@ static struct mipi_dsi_device *lt9611_attach_dsi(struct= lt9611 *lt9611, dsi->lanes =3D 4; dsi->format =3D MIPI_DSI_FMT_RGB888; dsi->mode_flags =3D MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE | - MIPI_DSI_MODE_VIDEO_HSE; + MIPI_DSI_MODE_VIDEO_HSE | MIPI_DSI_AUTO_POWERUP; =20 ret =3D devm_mipi_dsi_attach(dev, dsi); if (ret < 0) { --=20 2.42.0 From nobody Sun Sep 21 21:38:53 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 35A60CDB474 for ; Mon, 16 Oct 2023 16:57:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234348AbjJPQ5N (ORCPT ); Mon, 16 Oct 2023 12:57:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234169AbjJPQ4m (ORCPT ); Mon, 16 Oct 2023 12:56:42 -0400 Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A9183210A for ; Mon, 16 Oct 2023 09:54:15 -0700 (PDT) Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-3248ac76acbso3918233f8f.1 for ; Mon, 16 Oct 2023 09:54:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697475254; x=1698080054; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zpGIiUMbok8vBwc13/k0XLEAhZoDX5uqz8AGagQ5Hmc=; b=rQ8QLDL2UJWSvpTZwfiKnAkE5JK5NclU0ZhgMbI0lPQgGYqrOb5yMq7qpHQbAJg3W5 tPyAcAqt44cuUfYIshdzRx8wbXK7HUE0oHuYw2LNG2FUeVSsyEetN/BAQIniZgKzu6ra fd+K+8LA9WKO47E9jxCVH724El3S/D5V1Ma23p3u9jKjBZCghWNo9wyUgXypWXPjpIxB xyMSG+BiSWBqk1fka1/Qop67koEA2wgiVZTMMiUkKJStXxkyyn5FtPMe1mGuG4CsReUg +5jZRWE6zbQSujcX+qIm7gA/ZF6oDWUqanKnbx6awvfjWESy7sUPdlXNdgEp4yHxRQ6U rQlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697475254; x=1698080054; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zpGIiUMbok8vBwc13/k0XLEAhZoDX5uqz8AGagQ5Hmc=; b=Ga8O25oRZN7VyD2DAGqp0nVLiiy864+7MlYNDBETVEiH1Yb4Dzlr+2FWTwJt86pcMm cdgZJtDfAh88tai5UdoDh0CYFW6K27G2gQUUvEtMdCvI3Rm+v8nXEGCNet7qmmgLikDu ieOOnhDQwFxO5bhdKxVYWl9lsN2MQ3ML2DIv1jlu7OAJoLKlnkgM3Hxo68Ket4InCxTx CLrN/Rz5sAyowWmb7T958aiGGGwD7uzktBXOdouzwXhFHCLIplhp2Rv0v06J+OU7RodT bGp3HO3wkHhVE/dyUhLm43zC2uHMiRxoS2jao6KFLatvKFHKZRvQmzizJhogJKsmVz2p BKuw== X-Gm-Message-State: AOJu0YzTQy5OUYcrCBdZFjklMZTahDoOmoQf1vSpRKl+5DP28U+NyOBo Kmx/Yg4x5bS7OOF4khoF+jLIhA== X-Google-Smtp-Source: AGHT+IGv6IJmbuk/e/mZEXSBzwHspez+g7aAQkIvi456hEyHQKQI7pI4oTBdD/5E0EVsTbEEtp3zKw== X-Received: by 2002:a05:6000:80a:b0:32d:857c:d51c with SMTP id bt10-20020a056000080a00b0032d857cd51cmr16399678wrb.43.1697475254257; Mon, 16 Oct 2023 09:54:14 -0700 (PDT) Received: from eriador.lumag.spb.ru ([45.84.211.189]) by smtp.gmail.com with ESMTPSA id s19-20020a05600c45d300b0040648217f4fsm7638996wmo.39.2023.10.16.09.54.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 09:54:13 -0700 (PDT) From: Dmitry Baryshkov To: Dave Stevenson , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Douglas Anderson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , Konrad Dybcio , Jessica Zhang Cc: Marek Vasut , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org Subject: [RFC PATCH 09/10] drm/bridge: lt9611uxc: implement automatic DSI power control Date: Mon, 16 Oct 2023 19:53:54 +0300 Message-ID: <20231016165355.1327217-10-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> References: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The Lontium LT9611UXC driver doesn't need to control DSI power lines manually. Mark it for automatic power control. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c b/drivers/gpu/drm/b= ridge/lontium-lt9611uxc.c index 7835738a532e..ace7a6ee890b 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c +++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c @@ -279,7 +279,7 @@ static struct mipi_dsi_device *lt9611uxc_attach_dsi(str= uct lt9611uxc *lt9611uxc, dsi->lanes =3D 4; dsi->format =3D MIPI_DSI_FMT_RGB888; dsi->mode_flags =3D MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE | - MIPI_DSI_MODE_VIDEO_HSE; + MIPI_DSI_MODE_VIDEO_HSE | MIPI_DSI_AUTO_POWERUP; =20 ret =3D devm_mipi_dsi_attach(dev, dsi); if (ret < 0) { --=20 2.42.0 From nobody Sun Sep 21 21:38:53 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1D11CCDB465 for ; Mon, 16 Oct 2023 16:57:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234303AbjJPQ5S (ORCPT ); Mon, 16 Oct 2023 12:57:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44770 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234238AbjJPQ4n (ORCPT ); Mon, 16 Oct 2023 12:56:43 -0400 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CDD203C25 for ; Mon, 16 Oct 2023 09:54:17 -0700 (PDT) Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-40535597f01so46842915e9.3 for ; Mon, 16 Oct 2023 09:54:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697475256; x=1698080056; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Z2KAQh5biIaDjy3JspEokfbAFpOptd05O572lVX96aY=; b=b16gH0mUBocs5VLOa0oKJnzWyP2wr6PBOpMJgT0H0PPo+joXWMArPcZs8zkRWZrjqP hlgpRPTum5bT+FO/P77WqYszXeXNIqZ/i2P5JIGakO8r2xsMw+ln7zsl2V/5XpRjtbjB xFz5ULF98c/nQOqFxLdUVeRHCvWPVOBO13hSg0mO9Zrmom2DTpnnt8HkCGGLuiqqQwss zVdMa8/WiPzc6ajsaNkfUlOY8UA+BfXOFnGVT4eSdtI7jLnshuWsf+3Um4XYQpzbgtyu kTY9J8/td9YqwKK5vlUx3Qz7a8RtPg0eeA9VLAzMLCiHLL96cEaVQWqLn62uE1ci4uR0 q39w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697475256; x=1698080056; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Z2KAQh5biIaDjy3JspEokfbAFpOptd05O572lVX96aY=; b=vFCmnoRm4FYnsxEiDFFzovTpjtCbmIFmwrNDjxI4QvTUsXz8Iu2gVok9CO6inRiDJz Dpyt3sg74HcYIq9PVz06hVk8Bik/Q7jUz4NG/yO4F4WK9H61mROM6LHFciWs+ShgIL9G WaeO3dqUP6M5b71NjL3cFpjuFe1QzR0fCb1tqbi8ikMno1k8EFVb98AvMvSxDKuhrsa9 ZxDQgvAemZrGUD4ixZ3fzGwR/x//dh/WaSUhmq3oZqqiqsSumqqORiKI6CafYA0GZT0o NbrwzC29warGagNcwgWIsRWmkweqbNckWOoURB6TQrfl5OjmnDgIpIz/isPEjEYKoiXc 4RoA== X-Gm-Message-State: AOJu0Yyf2LUaii/sC2uXe/47KZV3Ujzgl8SdoZdT3R6ehk4SXihq6PFp InG8OVvHwqPO3ua8AiZNHb64pw== X-Google-Smtp-Source: AGHT+IEqmnobiCsIMYAdCDeaCtj3AGb0jtlboDlqcQ+Atx1a8i0m4PfESVkAoxvu6F9wIJAh3Bb39A== X-Received: by 2002:a1c:7711:0:b0:405:959e:dc7c with SMTP id t17-20020a1c7711000000b00405959edc7cmr29757671wmi.30.1697475256293; Mon, 16 Oct 2023 09:54:16 -0700 (PDT) Received: from eriador.lumag.spb.ru ([45.84.211.189]) by smtp.gmail.com with ESMTPSA id s19-20020a05600c45d300b0040648217f4fsm7638996wmo.39.2023.10.16.09.54.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Oct 2023 09:54:15 -0700 (PDT) From: Dmitry Baryshkov To: Dave Stevenson , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , Douglas Anderson , Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , Marijn Suijten , Konrad Dybcio , Jessica Zhang Cc: Marek Vasut , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org Subject: [RFC PATCH 10/10] drm/msm/dsi: drop (again) the ps8640 workaround Date: Mon, 16 Oct 2023 19:53:55 +0300 Message-ID: <20231016165355.1327217-11-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> References: <20231016165355.1327217-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Now as the Parade PS8640 driver sets the MIPI_DSI_MANUAL_POWERUP flag, drop the workaround enforcing the late DSI link powerup in the case the next bridge is ps8640. Signed-off-by: Dmitry Baryshkov --- drivers/gpu/drm/msm/dsi/dsi_manager.c | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/ds= i/dsi_manager.c index 2d7040d21239..b6b8171cf382 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_manager.c +++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c @@ -198,29 +198,12 @@ static int dsi_mgr_bridge_get_id(struct drm_bridge *b= ridge) return dsi_bridge->id; } =20 -/* - * If the next bridge in the chain is the Parade ps8640 bridge chip then d= on't - * power on early since it seems to violate the expectations of the firmwa= re - * that the bridge chip is running. - */ -static bool dsi_mgr_next_is_ps8640(struct drm_bridge *bridge) -{ - struct drm_bridge *next_bridge =3D drm_bridge_get_next_bridge(bridge); - - return next_bridge && - next_bridge->of_node && - of_device_is_compatible(next_bridge->of_node, "parade,ps8640"); -} - static bool dsi_mgr_auto_powerup(struct drm_bridge *bridge) { int id =3D dsi_mgr_bridge_get_id(bridge); struct msm_dsi *msm_dsi =3D dsi_mgr_get_dsi(id); struct mipi_dsi_host *host =3D msm_dsi->host; =20 - if (dsi_mgr_next_is_ps8640(bridge)) - return true; - return msm_dsi_host_auto_powerup(host); } =20 @@ -230,9 +213,6 @@ static bool dsi_mgr_early_powerup(struct drm_bridge *br= idge) struct msm_dsi *msm_dsi =3D dsi_mgr_get_dsi(id); struct mipi_dsi_host *host =3D msm_dsi->host; =20 - if (dsi_mgr_next_is_ps8640(bridge)) - return false; - return msm_dsi_host_early_powerup(host); } =20 --=20 2.42.0