From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 69774211468 for ; Thu, 13 Feb 2025 14:43:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457837; cv=none; b=YW/WvEh/TzR68C/MNE2kd51qY6kEfb7niYOW7PMhYQ/rxpV0uwj+f5oNFTFBrN8rCa0c9/RXeY3Ez886Txq30q3S6yS5I2cLSOojG0uMfvBspkduFBevLYley/icqqMRcsprImXGD4X2FyOmJe0tDmRxeMUZIz8FgkxOfT7HTWw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457837; c=relaxed/simple; bh=6Q8/Gx7S1MXgTUh2LRdvJil1muXBWlk69MwbKDeH5bI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RhzHDSvGzU+LxwtcvR5BpTqxEDjhUHuWi3pXt7jplIRD+GKubwHTrcbG/yFyGTM/17LwEfDRXuTrwJBQZl6j0LrlDT/zA6XBZ9y7C16uf7LmKvpQMJKGnBEDyN5p+Y5rw9OsId3bGfbwIHo/R7V1cMdXBUyDrPIcI4qZku77k3A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=s6PJj3Ku; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="s6PJj3Ku" Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC408C4CED1; Thu, 13 Feb 2025 14:43:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457837; bh=6Q8/Gx7S1MXgTUh2LRdvJil1muXBWlk69MwbKDeH5bI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=s6PJj3KuLOghevIpVBummJzuGhds9mgMyO3FdYdadQQiUfRpj4lEc2HDt4QOzB84N wTQJB/pL/zSRguPRWZY/AYv7PFI6C2dRevbMIC+LAtA8F0Rq2sTDSWbDesPn4dW66r EsmEptW7gpDLz5VFnhuXG509h+2EweJXMAqBd0rIPgCD7MvbY3PScJpPDiKEWc3o+B jhcPx3V6vLg1eYXRxOMlQDuQ9H6yQxUrFaFdElEgGBCXyjE0sdrjIqZXoga4EQKeNv uImI0tcAVQPIrL6H1647qXIs3R4m1Jd6k1pZkVjgMeN/1WFcx6UqA5RKNZ9lr3jOLp D/rcvnuXf6m9g== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:20 +0100 Subject: [PATCH v3 01/37] drm/atomic: Document history of drm_atomic_state Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-1-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Simona Vetter X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2948; i=mripard@kernel.org; h=from:subject:message-id; bh=6Q8/Gx7S1MXgTUh2LRdvJil1muXBWlk69MwbKDeH5bI=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWMXaPMy/TNdTVD7VYb1iZ8q/tXP1PggKzHp55MaRC RwVEwRNOqayMAhzMsiKKbI8kQk7vbx9cZWD/cofMHNYmUCGMHBxCsBEPG8w1pnpGZ3ZL2Vu/6Nc 7r5pklnQQosNWXJz2j7+mMC/rtqtav2i5odhGzQuBi7q+9T94V2CIWPDnpC7GfUBP3p5lsmfanh ccysp+p+ZcPX9mZbrt3TpFHf+aufo5RP44/+8K7auvsxg9VQA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D After some discussions on the mailing-list for an earlier revision of the series, it was suggested to document the evolution of drm_atomic_state and its use by drivers to explain some of the confusion one might still encounter when reading the framework code. Suggested-by: Simona Vetter Link: https://lore.kernel.org/dri-devel/Z4jtKHY4qN3RNZNG@phenom.ffwll.local/ Signed-off-by: Maxime Ripard Reviewed-by: Simona Vetter --- include/drm/drm_atomic.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h index 1ded9a8d4e84d7d9879d7f60a876ba9d69785766..4c673f0698fef6b60f77db98037= 8d5e88e0e250e 100644 --- a/include/drm/drm_atomic.h +++ b/include/drm/drm_atomic.h @@ -355,10 +355,41 @@ struct __drm_private_objs_state { * these. * * States are added to an atomic update by calling drm_atomic_get_crtc_sta= te(), * drm_atomic_get_plane_state(), drm_atomic_get_connector_state(), or for * private state structures, drm_atomic_get_private_obj_state(). + * + * NOTE: struct drm_atomic_state first started as a single collection of + * entities state pointers (drm_plane_state, drm_crtc_state, etc.). + * + * At atomic_check time, you could get the state about to be committed + * from drm_atomic_state, and the one currently running from the + * entities state pointer (drm_crtc.state, for example). After the call + * to drm_atomic_helper_swap_state(), the entities state pointer would + * contain the state previously checked, and the drm_atomic_state + * structure the old state. + * + * Over time, and in order to avoid confusion, drm_atomic_state has + * grown to have both the old state (ie, the state we replace) and the + * new state (ie, the state we want to apply). Those names are stable + * during the commit process, which makes it easier to reason about. + * + * You can still find some traces of that evolution through some hooks + * or callbacks taking a drm_atomic_state parameter called names like + * "old_state". This doesn't necessarily mean that the previous + * drm_atomic_state is passed, but rather that this used to be the state + * collection we were replacing after drm_atomic_helper_swap_state(), + * but the variable name was never updated. + * + * Some atomic operations implementations followed a similar process. We + * first started to pass the entity state only. However, it was pretty + * cumbersome for drivers, and especially CRTCs, to retrieve the states + * of other components. Thus, we switched to passing the whole + * drm_atomic_state as a parameter to those operations. Similarly, the + * transition isn't complete yet, and one might still find atomic + * operations taking a drm_atomic_state pointer, or a component state + * pointer. The former is the preferred form. */ struct drm_atomic_state { /** * @ref: * --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 700E9227EB5 for ; Thu, 13 Feb 2025 14:44:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457840; cv=none; b=XyDfwjZoyG/QiONhh7IaPUw1ofZMdmxoyiEJIzpXHXM54Yy2BwgOf2TBqNdWRjp69Wmb8ua0U72IpoWRDQ/vO3Ac7AnMkuLIp7XDemiZ0Z+CA1iZ4S4STCPAphTMFQfPfhQC/AYURIp/528wkauhyFcbgyUlMm1aGWIirp5Qdkg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457840; c=relaxed/simple; bh=ea9WzSwxBcxRmUJsGjKXuEwzfaNYA7kcMOJgBOqObC4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kDFb9YWH3VORmR8fHMT6Bl6kgtu+PLrwNyuzhOOPFNNOh3nzgPkK3CuN0Xwvho6/hQJASenEb5esMh20kCrp3F8k7rCiAROm5zhT8ulYcR1gTRGdVSWclinGK6mouzVAFIVbhsWq3TtFRKgAD1aks7ijTl2ZUhXNIShwU2/jn+k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=G50Epbc/; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="G50Epbc/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id F1B73C4CED1; Thu, 13 Feb 2025 14:43:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457840; bh=ea9WzSwxBcxRmUJsGjKXuEwzfaNYA7kcMOJgBOqObC4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=G50Epbc/bgGgOhgNUFeL8CRuCAGESmVzY01FzEzh0a7pIe0L19RZg3slQLmvNfgw8 N7q8jzIxt8HZTb9OVBSzIX8zzsNt0sR/GmH8ALaxCS9eOcPRkum+3cd+YYBGFbWas+ JbLwal5bF5CD6EtRvVOMy7r7k1GEXZgGfSnc0XQEc0YVcVuucM+LP61A9lC2tAVEN7 0qXwvNVADLrFrweDdiplX+H33VeQFDewl6R9FalU7dqMp4GVg4XEAa7092KTHNefDd sJaYY4HO7JUaAyaBYQU35tMi/tjmHFv8JXK3G7omkWdqOKDrQVTbZsImISYMkg6Skl e1ci+uluAZIOg== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:21 +0100 Subject: [PATCH v3 02/37] drm/bridge: Pass full state to atomic_pre_enable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-2-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=17090; i=mripard@kernel.org; h=from:subject:message-id; bh=ea9WzSwxBcxRmUJsGjKXuEwzfaNYA7kcMOJgBOqObC4=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWMXsnBhLQypMGP3PCN98yb7Cxm3zkgkZ4vH7OiNTb y4w11HvmMrCIMzJICumyPJEJuz08vbFVQ72K3/AzGFlAhnCwMUpABP5/ZWx4QvD66fCO4pNTrtO Cppl9Lmx+PuysF3zlROmHtYIEwidZH4npHvLVunVMYGtvjWztxUeYGyYzsW3RE79Tor7CmHr58I Rc64mpO9glI/+4uuyZcene2nxIflHjP18Loro2F/suXu04SEA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D It's pretty inconvenient to access the full atomic state from drm_bridges, so let's change the atomic_pre_enable hook prototype to pass it directly. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard Reviewed-by: Douglas Anderson Tested-by: Douglas Anderson --- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 6 ++---- drivers/gpu/drm/bridge/chipone-icn6211.c | 2 +- drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c | 7 +++---- drivers/gpu/drm/bridge/ite-it6505.c | 2 +- drivers/gpu/drm/bridge/lontium-lt9611.c | 2 +- drivers/gpu/drm/bridge/panel.c | 3 +-- drivers/gpu/drm/bridge/parade-ps8640.c | 2 +- drivers/gpu/drm/bridge/samsung-dsim.c | 2 +- drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 2 +- drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c | 2 +- drivers/gpu/drm/bridge/tc358762.c | 3 ++- drivers/gpu/drm/bridge/ti-dlpc3433.c | 2 +- drivers/gpu/drm/bridge/ti-sn65dsi83.c | 3 +-- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 2 +- drivers/gpu/drm/drm_bridge.c | 15 +++------------ drivers/gpu/drm/mediatek/mtk_dsi.c | 2 +- drivers/gpu/drm/mediatek/mtk_hdmi.c | 2 +- drivers/gpu/drm/vc4/vc4_dsi.c | 3 +-- include/drm/drm_bridge.h | 2 +- 19 files changed, 25 insertions(+), 39 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index bfa88409a7ff0fea8f6f8852b428bee8f2c729bd..e097d97fb7d9f1523ec2162c2a7= a7df104fcaa99 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1195,15 +1195,13 @@ struct drm_crtc *analogix_dp_get_new_crtc(struct an= alogix_dp_device *dp, return NULL; =20 return conn_state->crtc; } =20 -static void -analogix_dp_bridge_atomic_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void analogix_dp_bridge_atomic_pre_enable(struct drm_bridge *bridge, + struct drm_atomic_state *old_state) { - struct drm_atomic_state *old_state =3D old_bridge_state->base.state; struct analogix_dp_device *dp =3D bridge->driver_private; struct drm_crtc *crtc; struct drm_crtc_state *old_crtc_state; int ret; =20 diff --git a/drivers/gpu/drm/bridge/chipone-icn6211.c b/drivers/gpu/drm/bri= dge/chipone-icn6211.c index d47703559b0dec13fa4478d90ca29be2e899637a..7a009ab57f9ec8e944d1410373a= c9e06db12a815 100644 --- a/drivers/gpu/drm/bridge/chipone-icn6211.c +++ b/drivers/gpu/drm/bridge/chipone-icn6211.c @@ -443,11 +443,11 @@ static void chipone_atomic_enable(struct drm_bridge *= bridge, =20 usleep_range(10000, 11000); } =20 static void chipone_atomic_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct chipone *icn =3D bridge_to_chipone(bridge); int ret; =20 if (icn->vdd1) { diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c b/drivers/gpu/drm/bri= dge/imx/imx8qxp-ldb.c index 7bce2305d676714cdec7ce085cb53b25ce42f8e7..009c7fcb3d595d7bfabde298511= fde89a85dc890 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c +++ b/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c @@ -201,13 +201,12 @@ imx8qxp_ldb_bridge_mode_set(struct drm_bridge *bridge, =20 if (is_split && companion) companion->funcs->mode_set(companion, mode, adjusted_mode); } =20 -static void -imx8qxp_ldb_bridge_atomic_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void imx8qxp_ldb_bridge_atomic_pre_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct ldb_channel *ldb_ch =3D bridge->driver_private; struct ldb *ldb =3D ldb_ch->ldb; struct imx8qxp_ldb *imx8qxp_ldb =3D base_to_imx8qxp_ldb(ldb); struct drm_bridge *companion =3D imx8qxp_ldb->companion; @@ -215,11 +214,11 @@ imx8qxp_ldb_bridge_atomic_pre_enable(struct drm_bridg= e *bridge, =20 clk_prepare_enable(imx8qxp_ldb->clk_pixel); clk_prepare_enable(imx8qxp_ldb->clk_bypass); =20 if (is_split && companion) - companion->funcs->atomic_pre_enable(companion, old_bridge_state); + companion->funcs->atomic_pre_enable(companion, state); } =20 static void imx8qxp_ldb_bridge_atomic_enable(struct drm_bridge *bridge, struct drm_bridge_state *old_bridge_state) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index 76dabca04d0d191b3bdee23c6a3e55f4b6d3bad4..647579342a0a82ce4f4f4f04ea5= d0633e4d03af8 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -3252,11 +3252,11 @@ static void it6505_bridge_atomic_disable(struct drm= _bridge *bridge, it6505_video_disable(it6505); } } =20 static void it6505_bridge_atomic_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { struct it6505 *it6505 =3D bridge_to_it6505(bridge); struct device *dev =3D it6505->dev; =20 DRM_DEV_DEBUG_DRIVER(dev, "start"); diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c b/drivers/gpu/drm/brid= ge/lontium-lt9611.c index e650cd83fc8d880012edb8a85c69b2f1d378f64c..5d3bbfeaf2299e2425e0079cff0= 805b37180351b 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9611.c +++ b/drivers/gpu/drm/bridge/lontium-lt9611.c @@ -765,11 +765,11 @@ static enum drm_mode_status lt9611_bridge_mode_valid(= struct drm_bridge *bridge, =20 return MODE_OK; } =20 static void lt9611_bridge_atomic_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct lt9611 *lt9611 =3D bridge_to_lt9611(bridge); static const struct reg_sequence reg_cfg[] =3D { { 0x8102, 0x12 }, { 0x8123, 0x40 }, diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c index 6e88339dec0f5faee690b7c53e8dcd0f1ee2281c..1dbe1c2139879c8c8b6ffa150bc= f57fcad2af964 100644 --- a/drivers/gpu/drm/bridge/panel.c +++ b/drivers/gpu/drm/bridge/panel.c @@ -107,14 +107,13 @@ static void panel_bridge_detach(struct drm_bridge *br= idge) if (connector->dev) drm_connector_cleanup(connector); } =20 static void panel_bridge_atomic_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *atomic_state) { struct panel_bridge *panel_bridge =3D drm_bridge_to_panel_bridge(bridge); - struct drm_atomic_state *atomic_state =3D old_bridge_state->base.state; struct drm_encoder *encoder =3D bridge->encoder; struct drm_crtc *crtc; struct drm_crtc_state *old_crtc_state; =20 crtc =3D drm_atomic_get_new_crtc_for_encoder(atomic_state, encoder); diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridg= e/parade-ps8640.c index b0e38177c1ecb803e5e61b223b2bd7568c36de25..7ec674bffa81327ebeacecce091= 364e0f3e9a4f9 100644 --- a/drivers/gpu/drm/bridge/parade-ps8640.c +++ b/drivers/gpu/drm/bridge/parade-ps8640.c @@ -435,11 +435,11 @@ static const struct dev_pm_ops ps8640_pm_ops =3D { SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, pm_runtime_force_resume) }; =20 static void ps8640_atomic_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct ps8640 *ps_bridge =3D bridge_to_ps8640(bridge); struct regmap *map =3D ps_bridge->regmap[PAGE2_TOP_CNTL]; struct device *dev =3D &ps_bridge->page[PAGE0_DP_CNTL]->dev; int ret; diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge= /samsung-dsim.c index f8b4fb8357659018ec0db65374ee5d05330639ae..415ce14e747dfca0c5395e18f11= 95733e17616da 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -1455,11 +1455,11 @@ static int samsung_dsim_init(struct samsung_dsim *d= si) =20 return 0; } =20 static void samsung_dsim_atomic_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct samsung_dsim *dsi =3D bridge_to_dsi(bridge); int ret; =20 if (dsi->state & DSIM_STATE_ENABLED) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/dr= m/bridge/synopsys/dw-mipi-dsi.c index 0fb02e4e7f4e5fcf1ad0b606b1485ab05ceb53f8..9731a6b45a52b54fdf910a3cc84= d8f97b0c37c91 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c @@ -1020,11 +1020,11 @@ static void dw_mipi_dsi_mode_set(struct dw_mipi_dsi= *dsi, if (phy_ops->power_on) phy_ops->power_on(dsi->plat_data->priv_data); } =20 static void dw_mipi_dsi_bridge_atomic_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct dw_mipi_dsi *dsi =3D bridge_to_dsi(bridge); =20 /* Power up the dsi ctl into a command mode */ dw_mipi_dsi_mode_set(dsi, &dsi->mode); diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c b/drivers/gpu/d= rm/bridge/synopsys/dw-mipi-dsi2.c index d7569bf2d9c3ef1f22ac07c95d112d1c62dd67a1..194ac6e192f4c2a89048e241da7= b7d0e2db75149 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c @@ -819,11 +819,11 @@ static void dw_mipi_dsi2_mode_set(struct dw_mipi_dsi2= *dsi2, =20 dw_mipi_dsi2_ipi_set(dsi2); } =20 static void dw_mipi_dsi2_bridge_atomic_pre_enable(struct drm_bridge *bridg= e, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct dw_mipi_dsi2 *dsi2 =3D bridge_to_dsi2(bridge); =20 /* Power up the dsi ctl into a command mode */ dw_mipi_dsi2_mode_set(dsi2, &dsi2->mode); diff --git a/drivers/gpu/drm/bridge/tc358762.c b/drivers/gpu/drm/bridge/tc3= 58762.c index f92aff3d515a3354f7e447495adb3e18514b029a..15daf6d97365e6127273079a6e3= b48597398fd37 100644 --- a/drivers/gpu/drm/bridge/tc358762.c +++ b/drivers/gpu/drm/bridge/tc358762.c @@ -169,11 +169,12 @@ static void tc358762_post_disable(struct drm_bridge *= bridge, struct drm_bridge_s ret =3D regulator_disable(ctx->regulator); if (ret < 0) dev_err(ctx->dev, "error disabling regulators (%d)\n", ret); } =20 -static void tc358762_pre_enable(struct drm_bridge *bridge, struct drm_brid= ge_state *state) +static void tc358762_pre_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct tc358762 *ctx =3D bridge_to_tc358762(bridge); int ret; =20 ret =3D regulator_enable(ctx->regulator); diff --git a/drivers/gpu/drm/bridge/ti-dlpc3433.c b/drivers/gpu/drm/bridge/= ti-dlpc3433.c index eaec70fa42b6213df75b9a9ee581a61c116acb3c..c513cd1902048d52088b946691d= b8a1aa24a5a32 100644 --- a/drivers/gpu/drm/bridge/ti-dlpc3433.c +++ b/drivers/gpu/drm/bridge/ti-dlpc3433.c @@ -168,11 +168,11 @@ static void dlpc_atomic_enable(struct drm_bridge *bri= dge, =20 msleep(10); } =20 static void dlpc_atomic_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct dlpc *dlpc =3D bridge_to_dlpc(bridge); int ret; =20 gpiod_set_value(dlpc->enable_gpio, 1); diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi83.c b/drivers/gpu/drm/bridge= /ti-sn65dsi83.c index f6728c491cc5c6d90d93b733c46732f80cdebf69..049d73526b904637dc1162893fa= 11d002c7b77d1 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi83.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi83.c @@ -361,14 +361,13 @@ static u8 sn65dsi83_get_dsi_div(struct sn65dsi83 *ctx) =20 return dsi_div - 1; } =20 static void sn65dsi83_atomic_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct sn65dsi83 *ctx =3D bridge_to_sn65dsi83(bridge); - struct drm_atomic_state *state =3D old_bridge_state->base.state; const struct drm_bridge_state *bridge_state; const struct drm_crtc_state *crtc_state; const struct drm_display_mode *mode; struct drm_connector *connector; struct drm_crtc *crtc; diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge= /ti-sn65dsi86.c index 205bd0fde4f8b3400caa8507092308e50eb172b7..86bbfdc37d97f0ee33a7b116f89= f885b527dc3d8 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -1162,11 +1162,11 @@ static void ti_sn_bridge_atomic_enable(struct drm_b= ridge *bridge, regmap_update_bits(pdata->regmap, SN_ENH_FRAME_REG, VSTREAM_ENABLE, VSTREAM_ENABLE); } =20 static void ti_sn_bridge_atomic_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct ti_sn65dsi86 *pdata =3D bridge_to_ti_sn65dsi86(bridge); =20 pm_runtime_get_sync(pdata->dev); =20 diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index 241a384ebce39b4a3db58c208af27960904fc662..e6bf964ddd82e4e2eea5c8e8320= 1d08bb50a3137 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -696,23 +696,14 @@ void drm_atomic_bridge_chain_post_disable(struct drm_= bridge *bridge, EXPORT_SYMBOL(drm_atomic_bridge_chain_post_disable); =20 static void drm_atomic_bridge_call_pre_enable(struct drm_bridge *bridge, struct drm_atomic_state *old_state) { - if (old_state && bridge->funcs->atomic_pre_enable) { - struct drm_bridge_state *old_bridge_state; - - old_bridge_state =3D - drm_atomic_get_old_bridge_state(old_state, - bridge); - if (WARN_ON(!old_bridge_state)) - return; - - bridge->funcs->atomic_pre_enable(bridge, old_bridge_state); - } else if (bridge->funcs->pre_enable) { + if (old_state && bridge->funcs->atomic_pre_enable) + bridge->funcs->atomic_pre_enable(bridge, old_state); + else if (bridge->funcs->pre_enable) bridge->funcs->pre_enable(bridge); - } } =20 /** * drm_atomic_bridge_chain_pre_enable - prepares for enabling all bridges = in * the encoder chain diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/= mtk_dsi.c index 40752f2320548fbf6c7de96b18e8a636ac9c31be..aed9d03bcf012fc555277da8fe6= adfbd6b839070 100644 --- a/drivers/gpu/drm/mediatek/mtk_dsi.c +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c @@ -843,11 +843,11 @@ static void mtk_dsi_bridge_atomic_enable(struct drm_b= ridge *bridge, =20 mtk_output_dsi_enable(dsi); } =20 static void mtk_dsi_bridge_atomic_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct mtk_dsi *dsi =3D bridge_to_dsi(bridge); int ret; =20 ret =3D mtk_dsi_poweron(dsi); diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek= /mtk_hdmi.c index ca82bc829cb96446d4d34eeef45848df03bd716b..928909b4403a4c7ee6b919056f9= cfd0c01d13cbd 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c @@ -1360,11 +1360,11 @@ static void mtk_hdmi_bridge_mode_set(struct drm_bri= dge *bridge, =20 drm_mode_copy(&hdmi->mode, adjusted_mode); } =20 static void mtk_hdmi_bridge_atomic_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { struct mtk_hdmi *hdmi =3D hdmi_ctx_from_bridge(bridge); =20 mtk_hdmi_hw_make_reg_writable(hdmi, true); mtk_hdmi_hw_1p4_version_enable(hdmi, true); diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c index 5eb293bdb363d81341b20c11b8041bdb34663a1b..eb747ea3325c1d487ac879a91d2= b5436f5cd10c7 100644 --- a/drivers/gpu/drm/vc4/vc4_dsi.c +++ b/drivers/gpu/drm/vc4/vc4_dsi.c @@ -871,13 +871,12 @@ static bool vc4_dsi_bridge_mode_fixup(struct drm_brid= ge *bridge, =20 return true; } =20 static void vc4_dsi_bridge_pre_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { - struct drm_atomic_state *state =3D old_state->base.state; struct vc4_dsi *dsi =3D bridge_to_vc4_dsi(bridge); const struct drm_crtc_state *crtc_state; struct device *dev =3D &dsi->pdev->dev; const struct drm_display_mode *mode; struct drm_connector *connector; diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index 496dbbd2ad7edff7f091adfbe62de1e33ef0cf07..eef4487f45af50dccbee5144378= dbb3b5972a210 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -303,11 +303,11 @@ struct drm_bridge_funcs { * there is one) when this callback is called. * * The @atomic_pre_enable callback is optional. */ void (*atomic_pre_enable)(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state); + struct drm_atomic_state *state); =20 /** * @atomic_enable: * * This callback should enable the bridge. It is called right after --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 99B4C23A995 for ; Thu, 13 Feb 2025 14:44:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457843; cv=none; b=Nk38bDbipyBoAp1KcD5/p924dFFfz0l7MBiwNpSvzF6OJlbnTnyDUNIE1d+26HqOwzgpqDlKBnlI2dVqoubSYMQ4jmbD8etWqyyovYhEWEcuPjRImOwByJ20rFEWB+eRcUbKfO2CfCzJ3KI7GeGmKmfBd/Y3Mn/ypTR1aRtVWFs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457843; c=relaxed/simple; bh=Ao8CFv29puHGuHdCCMOvwL1SP8xf25M1lOJbOifFnfM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=scSC1OD/oGes1P7DcDBKlyIlLr+YhNvqNsVCfm3smoIeKWdBDYldSun1oGmrNj9zJB7uF60wva9s+C+YY6Pq3IHen8pM9yJ3mI3As2GPS26vQTDJtEOIXinbUL+YwObDn5ZkAEUnFjN5AWqx8Dy8Zij7DquieSFev8U0hGKxlTI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RB6M1a/U; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="RB6M1a/U" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EF78AC4CED1; Thu, 13 Feb 2025 14:44:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457843; bh=Ao8CFv29puHGuHdCCMOvwL1SP8xf25M1lOJbOifFnfM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=RB6M1a/USrdIGgV1Z7fkdWqosgTQsK3wkXv2vXmz0Myz0BkacPDui8GkWmrCpcUo2 iwUZmIUoLXWS8Hc91f3+aJaKUA7M1drkwsByn9meZm2l/KUjD8E2bUmYVWJ3+cRMFu 4DksHdibmr+cBx4xaAD9jyVOYTTV8bfUiDKXaBip0BThTgwA9BuCj/i4BMLcQTKnyk VjOQpGDlZdh+K819pZEiReIVLWbrULIDQugss3Yfpm3BgKZoGs1Jc7MOJt1Q/weiL9 qk3lFGpiHrMkcqMLOzvIX6TANsIaaP/Ma6BlRC+Ccc43x/fFgLxhATTXqRUw63MhSW 691fhorXo1thA== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:22 +0100 Subject: [PATCH v3 03/37] drm/bridge: Pass full state to atomic_enable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-3-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=50673; i=mripard@kernel.org; h=from:subject:message-id; bh=Ao8CFv29puHGuHdCCMOvwL1SP8xf25M1lOJbOifFnfM=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWMVtKybYHedZbWQ6f87JDet/vpH5l/Las+JTqq+25 NKzkRsOdkxlYRDmZJAVU2R5IhN2enn74ioH+5U/YOawMoEMYeDiFICJTCtgbJjyfvN58ekyy4sq b096UuSlJLprmfBNxo7TDFvrhF+4xvaYrb9yImbj/Sd73p37FP9nxUvGetepb1u49RV71T/dL4k od8xmTxdN391af/P2zD+rOTlnz361jfnTrmXHFTwiO/vCn69OBwA= X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D It's pretty inconvenient to access the full atomic state from drm_bridges, so let's change the atomic_enable hook prototype to pass it directly. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard Reviewed-by: Douglas Anderson Tested-by: Douglas Anderson --- drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 2 +- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 6 ++---- drivers/gpu/drm/bridge/analogix/anx7625.c | 6 +++--- drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c | 3 +-- drivers/gpu/drm/bridge/chipone-icn6211.c | 3 +-- drivers/gpu/drm/bridge/fsl-ldb.c | 3 +-- drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c | 5 +++-- drivers/gpu/drm/bridge/imx/imx8qm-ldb.c | 5 ++--- drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c | 7 +++---- drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c | 5 ++--- drivers/gpu/drm/bridge/ite-it6263.c | 6 ++---- drivers/gpu/drm/bridge/ite-it6505.c | 3 +-- drivers/gpu/drm/bridge/ite-it66121.c | 3 +-- drivers/gpu/drm/bridge/lontium-lt9211.c | 3 +-- drivers/gpu/drm/bridge/lontium-lt9611.c | 6 ++---- drivers/gpu/drm/bridge/nwl-dsi.c | 5 ++--- drivers/gpu/drm/bridge/panel.c | 3 +-- drivers/gpu/drm/bridge/samsung-dsim.c | 2 +- drivers/gpu/drm/bridge/sii902x.c | 2 +- drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c | 3 +-- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 3 +-- drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 2 +- drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c | 2 +- drivers/gpu/drm/bridge/tc358762.c | 3 ++- drivers/gpu/drm/bridge/tc358767.c | 10 ++++------ drivers/gpu/drm/bridge/ti-dlpc3433.c | 2 +- drivers/gpu/drm/bridge/ti-sn65dsi83.c | 2 +- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 4 ++-- drivers/gpu/drm/bridge/ti-tdp158.c | 3 ++- drivers/gpu/drm/drm_bridge.c | 10 +--------- drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 2 +- drivers/gpu/drm/mediatek/mtk_dp.c | 4 ++-- drivers/gpu/drm/mediatek/mtk_dsi.c | 2 +- drivers/gpu/drm/mediatek/mtk_hdmi.c | 3 +-- drivers/gpu/drm/meson/meson_encoder_cvbs.c | 3 +-- drivers/gpu/drm/meson/meson_encoder_dsi.c | 3 +-- drivers/gpu/drm/meson/meson_encoder_hdmi.c | 3 +-- drivers/gpu/drm/msm/dp/dp_display.c | 12 ++++++------ drivers/gpu/drm/msm/dp/dp_drm.c | 9 ++++----- drivers/gpu/drm/msm/dp/dp_drm.h | 2 +- drivers/gpu/drm/omapdrm/dss/hdmi4.c | 3 +-- drivers/gpu/drm/omapdrm/dss/hdmi5.c | 3 +-- drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c | 3 +-- drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c | 2 +- drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 3 +-- drivers/gpu/drm/stm/lvds.c | 3 +-- drivers/gpu/drm/vc4/vc4_dsi.c | 2 +- drivers/gpu/drm/xlnx/zynqmp_dp.c | 10 ++++------ include/drm/drm_bridge.h | 2 +- 49 files changed, 79 insertions(+), 117 deletions(-) diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm= /bridge/adv7511/adv7511_drv.c index 19f4319eb6473699fac90d36a12159fe9edd2913..3d22685d33b51f59115b289b70c= 990d585aa5230 100644 --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c @@ -909,11 +909,11 @@ static struct adv7511 *bridge_to_adv7511(struct drm_b= ridge *bridge) { return container_of(bridge, struct adv7511, bridge); } =20 static void adv7511_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct adv7511 *adv =3D bridge_to_adv7511(bridge); =20 adv7511_power_on(adv); } diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index e097d97fb7d9f1523ec2162c2a7a7df104fcaa99..7939d622d6a24657092d0cd9ebd= f835e092c51ee 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1253,15 +1253,13 @@ static int analogix_dp_set_bridge(struct analogix_d= p_device *dp) pm_runtime_put_sync(dp->dev); =20 return ret; } =20 -static void -analogix_dp_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void analogix_dp_bridge_atomic_enable(struct drm_bridge *bridge, + struct drm_atomic_state *old_state) { - struct drm_atomic_state *old_state =3D old_bridge_state->base.state; struct analogix_dp_device *dp =3D bridge->driver_private; struct drm_crtc *crtc; struct drm_crtc_state *old_crtc_state; int timeout_loop =3D 0; int ret; diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/br= idge/analogix/anx7625.c index 4be34d5c7a3b8295f6b4593b3734ec8131bb3a4a..79f78dbe96351ef5fb746dc6731= 176a8d2989376 100644 --- a/drivers/gpu/drm/bridge/analogix/anx7625.c +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c @@ -2378,20 +2378,20 @@ static int anx7625_bridge_atomic_check(struct drm_b= ridge *bridge, =20 return 0; } =20 static void anx7625_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *state) + struct drm_atomic_state *state) { struct anx7625_data *ctx =3D bridge_to_anx7625(bridge); struct device *dev =3D ctx->dev; struct drm_connector *connector; struct drm_connector_state *conn_state; =20 dev_dbg(dev, "drm atomic enable\n"); =20 - connector =3D drm_atomic_get_new_connector_for_encoder(state->base.state, + connector =3D drm_atomic_get_new_connector_for_encoder(state, bridge->encoder); if (!connector) return; =20 ctx->connector =3D connector; @@ -2399,11 +2399,11 @@ static void anx7625_bridge_atomic_enable(struct drm= _bridge *bridge, pm_runtime_get_sync(dev); _anx7625_hpd_polling(ctx, 5000 * 100); =20 anx7625_dp_start(ctx); =20 - conn_state =3D drm_atomic_get_new_connector_state(state->base.state, conn= ector); + conn_state =3D drm_atomic_get_new_connector_state(state, connector); =20 if (WARN_ON(!conn_state)) return; =20 if (conn_state->content_protection =3D=3D DRM_MODE_CONTENT_PROTECTION_DES= IRED) { diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-core.c index 25345c3274e341bbb09cd9f6442e7730e2f4b5c8..d3cebc79aaef75bd745892b7987= f0a64bdc327f4 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c @@ -1977,14 +1977,13 @@ static void cdns_mhdp_sst_enable(struct cdns_mhdp_d= evice *mhdp, =20 cdns_mhdp_configure_video(mhdp, mode); } =20 static void cdns_mhdp_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct cdns_mhdp_device *mhdp =3D bridge_to_mhdp(bridge); - struct drm_atomic_state *state =3D bridge_state->base.state; struct cdns_mhdp_bridge_state *mhdp_state; struct drm_crtc_state *crtc_state; struct drm_connector *connector; struct drm_connector_state *conn_state; struct drm_bridge_state *new_state; diff --git a/drivers/gpu/drm/bridge/chipone-icn6211.c b/drivers/gpu/drm/bri= dge/chipone-icn6211.c index 7a009ab57f9ec8e944d1410373ac9e06db12a815..2d9e3add135c45f63966ee9df8d= 4cbe3b215aa1f 100644 --- a/drivers/gpu/drm/bridge/chipone-icn6211.c +++ b/drivers/gpu/drm/bridge/chipone-icn6211.c @@ -339,14 +339,13 @@ static void chipone_configure_pll(struct chipone *icn, chipone_writeb(icn, PLL_REF_DIV, ref_div); chipone_writeb(icn, PLL_INT(0), best_m); } =20 static void chipone_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct chipone *icn =3D bridge_to_chipone(bridge); - struct drm_atomic_state *state =3D old_bridge_state->base.state; struct drm_display_mode *mode =3D &icn->mode; const struct drm_bridge_state *bridge_state; u16 hfp, hbp, hsync; u32 bus_flags; u8 pol, sys_ctrl_1, id[4]; diff --git a/drivers/gpu/drm/bridge/fsl-ldb.c b/drivers/gpu/drm/bridge/fsl-= ldb.c index 0fc8a14fd80062248a43b8b93272101a7ca6158a..0ba8bbc1afaec9cd7ae420568f9= 8d21a31759614 100644 --- a/drivers/gpu/drm/bridge/fsl-ldb.c +++ b/drivers/gpu/drm/bridge/fsl-ldb.c @@ -120,14 +120,13 @@ static int fsl_ldb_attach(struct drm_bridge *bridge, return drm_bridge_attach(bridge->encoder, fsl_ldb->panel_bridge, bridge, flags); } =20 static void fsl_ldb_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct fsl_ldb *fsl_ldb =3D to_fsl_ldb(bridge); - struct drm_atomic_state *state =3D old_bridge_state->base.state; const struct drm_bridge_state *bridge_state; const struct drm_crtc_state *crtc_state; const struct drm_display_mode *mode; struct drm_connector *connector; struct drm_crtc *crtc; diff --git a/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c b/drivers/gpu/drm= /bridge/imx/imx8mp-hdmi-pvi.c index 0d1ac3edcab41658cf604a8a994026b4bf40cf27..9ee645489ea30a0478b114457aa= 0768dd7f2952e 100644 --- a/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c +++ b/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c @@ -47,20 +47,21 @@ static int imx8mp_hdmi_pvi_bridge_attach(struct drm_bri= dge *bridge, return drm_bridge_attach(bridge->encoder, pvi->next_bridge, bridge, flags); } =20 static void imx8mp_hdmi_pvi_bridge_enable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { - struct drm_atomic_state *state =3D bridge_state->base.state; struct imx8mp_hdmi_pvi *pvi =3D to_imx8mp_hdmi_pvi(bridge); struct drm_connector_state *conn_state; + struct drm_bridge_state *bridge_state; const struct drm_display_mode *mode; struct drm_crtc_state *crtc_state; struct drm_connector *connector; u32 bus_flags =3D 0, val; =20 + bridge_state =3D drm_atomic_get_new_bridge_state(state, bridge); connector =3D drm_atomic_get_new_connector_for_encoder(state, bridge->enc= oder); conn_state =3D drm_atomic_get_new_connector_state(state, connector); crtc_state =3D drm_atomic_get_new_crtc_state(state, conn_state->crtc); =20 if (WARN_ON(pm_runtime_resume_and_get(pvi->dev))) diff --git a/drivers/gpu/drm/bridge/imx/imx8qm-ldb.c b/drivers/gpu/drm/brid= ge/imx/imx8qm-ldb.c index dd5823f04c700f7890c4a28cb7ef12ff16b20c18..fe2313aa2051c9d36ec0edbbd27= d103229da6a9b 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qm-ldb.c +++ b/drivers/gpu/drm/bridge/imx/imx8qm-ldb.c @@ -198,13 +198,12 @@ imx8qm_ldb_bridge_mode_set(struct drm_bridge *bridge, else if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) regmap_update_bits(ldb->regmap, SS_CTRL, CH_HSYNC_M(chno), CH_PHSYNC(chno)); } =20 -static void -imx8qm_ldb_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void imx8qm_ldb_bridge_atomic_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct ldb_channel *ldb_ch =3D bridge->driver_private; struct ldb *ldb =3D ldb_ch->ldb; struct imx8qm_ldb_channel *imx8qm_ldb_ch =3D base_to_imx8qm_ldb_channel(ldb_ch); diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c b/drivers/gpu/drm/bri= dge/imx/imx8qxp-ldb.c index 009c7fcb3d595d7bfabde298511fde89a85dc890..f3f5b7b810f682f9973413ad1d6= 5c9764437e94a 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c +++ b/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c @@ -217,13 +217,12 @@ static void imx8qxp_ldb_bridge_atomic_pre_enable(stru= ct drm_bridge *bridge, =20 if (is_split && companion) companion->funcs->atomic_pre_enable(companion, state); } =20 -static void -imx8qxp_ldb_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void imx8qxp_ldb_bridge_atomic_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct ldb_channel *ldb_ch =3D bridge->driver_private; struct ldb *ldb =3D ldb_ch->ldb; struct imx8qxp_ldb_channel *imx8qxp_ldb_ch =3D base_to_imx8qxp_ldb_channel(ldb_ch); @@ -249,11 +248,11 @@ imx8qxp_ldb_bridge_atomic_enable(struct drm_bridge *b= ridge, ret =3D phy_power_on(imx8qxp_ldb_ch->phy); if (ret) DRM_DEV_ERROR(dev, "failed to power on PHY: %d\n", ret); =20 if (is_split && companion) - companion->funcs->atomic_enable(companion, old_bridge_state); + companion->funcs->atomic_enable(companion, state); } =20 static void imx8qxp_ldb_bridge_atomic_disable(struct drm_bridge *bridge, struct drm_bridge_state *old_bridge_state) diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c b/drivers/gpu/= drm/bridge/imx/imx8qxp-pixel-link.c index 4b0715ed6f38c9b6a1d24cb0142ca94cfd6042e1..9b79e5dbcaca7f2b24a4183bcea= 4d6aac4464165 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c +++ b/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c @@ -151,13 +151,12 @@ imx8qxp_pixel_link_bridge_mode_set(struct drm_bridge = *bridge, struct imx8qxp_pixel_link *pl =3D bridge->driver_private; =20 imx8qxp_pixel_link_set_mst_addr(pl); } =20 -static void -imx8qxp_pixel_link_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void imx8qxp_pixel_link_bridge_atomic_enable(struct drm_bridge *bri= dge, + struct drm_atomic_state *state) { struct imx8qxp_pixel_link *pl =3D bridge->driver_private; =20 imx8qxp_pixel_link_enable_mst_en(pl); imx8qxp_pixel_link_enable_mst_vld(pl); diff --git a/drivers/gpu/drm/bridge/ite-it6263.c b/drivers/gpu/drm/bridge/i= te-it6263.c index 306b5e374b9eaf9875ad2faaa7691aca61162ac2..0cf624a8495c00c15158aed6e0e= c7227bcad529d 100644 --- a/drivers/gpu/drm/bridge/ite-it6263.c +++ b/drivers/gpu/drm/bridge/ite-it6263.c @@ -579,15 +579,13 @@ it6263_bridge_atomic_disable(struct drm_bridge *bridg= e, regmap_write(it->hdmi_regmap, HDMI_REG_PKT_GENERAL_CTRL, 0); regmap_write(it->hdmi_regmap, HDMI_REG_AFE_DRV_CTRL, AFE_DRV_RST | AFE_DRV_PWD); } =20 -static void -it6263_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void it6263_bridge_atomic_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { - struct drm_atomic_state *state =3D old_bridge_state->base.state; struct it6263 *it =3D bridge_to_it6263(bridge); const struct drm_crtc_state *crtc_state; struct regmap *regmap =3D it->hdmi_regmap; const struct drm_display_mode *mode; struct drm_connector *connector; diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index 647579342a0a82ce4f4f4f04ea5d0633e4d03af8..159fdce3512978daae28d652d3d= 91e4968d4a729 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -3181,15 +3181,14 @@ it6505_bridge_mode_valid(struct drm_bridge *bridge, =20 return MODE_OK; } =20 static void it6505_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { struct it6505 *it6505 =3D bridge_to_it6505(bridge); struct device *dev =3D it6505->dev; - struct drm_atomic_state *state =3D old_state->base.state; struct hdmi_avi_infoframe frame; struct drm_crtc_state *crtc_state; struct drm_connector_state *conn_state; struct drm_display_mode *mode; struct drm_connector *connector; diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/= ite-it66121.c index 23edcde6b9a7d4f67313492d776b37f0126b6b95..4b784ac04b3a0284c4ff4b62a39= 0ade75d686c21 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -719,14 +719,13 @@ static u32 *it66121_bridge_atomic_get_input_bus_fmts(= struct drm_bridge *bridge, =20 return input_fmts; } =20 static void it66121_bridge_enable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct it66121_ctx *ctx =3D container_of(bridge, struct it66121_ctx, brid= ge); - struct drm_atomic_state *state =3D bridge_state->base.state; =20 ctx->connector =3D drm_atomic_get_new_connector_for_encoder(state, bridge= ->encoder); =20 it66121_set_mute(ctx, false); } diff --git a/drivers/gpu/drm/bridge/lontium-lt9211.c b/drivers/gpu/drm/brid= ge/lontium-lt9211.c index 999ddebb832de1a3e4a4174c3d5d4cfb3bfcee74..65d5cdfe0d32cf9dca6582a6022= 5db335c80172c 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9211.c +++ b/drivers/gpu/drm/bridge/lontium-lt9211.c @@ -453,14 +453,13 @@ static int lt9211_configure_tx(struct lt9211 *ctx, bo= ol jeida, =20 return 0; } =20 static void lt9211_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct lt9211 *ctx =3D bridge_to_lt9211(bridge); - struct drm_atomic_state *state =3D old_bridge_state->base.state; const struct drm_bridge_state *bridge_state; const struct drm_crtc_state *crtc_state; const struct drm_display_mode *mode; struct drm_connector *connector; struct drm_crtc *crtc; diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c b/drivers/gpu/drm/brid= ge/lontium-lt9611.c index 5d3bbfeaf2299e2425e0079cff0805b37180351b..521cce42d0332564dfa1bb1cb06= 012711198022e 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9611.c +++ b/drivers/gpu/drm/bridge/lontium-lt9611.c @@ -638,16 +638,14 @@ lt9611_get_edid_block(void *data, u8 *buf, unsigned i= nt block, size_t len) =20 return 0; } =20 /* bridge funcs */ -static void -lt9611_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void lt9611_bridge_atomic_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct lt9611 *lt9611 =3D bridge_to_lt9611(bridge); - struct drm_atomic_state *state =3D old_bridge_state->base.state; struct drm_connector *connector; struct drm_connector_state *conn_state; struct drm_crtc_state *crtc_state; struct drm_display_mode *mode; unsigned int postdiv; diff --git a/drivers/gpu/drm/bridge/nwl-dsi.c b/drivers/gpu/drm/bridge/nwl-= dsi.c index 1e5b2a37cb8c9a7be4438039502226255cc952bb..00a2ffb3dc7d93be70496de53a9= de1195a4d2b18 100644 --- a/drivers/gpu/drm/bridge/nwl-dsi.c +++ b/drivers/gpu/drm/bridge/nwl-dsi.c @@ -896,13 +896,12 @@ nwl_dsi_bridge_mode_set(struct drm_bridge *bridge, =20 runtime_put: pm_runtime_put_sync(dev); } =20 -static void -nwl_dsi_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void nwl_dsi_bridge_atomic_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct nwl_dsi *dsi =3D bridge_to_dsi(bridge); int ret; =20 /* Step 5 from DSI reset-out instructions */ diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c index 1dbe1c2139879c8c8b6ffa150bcf57fcad2af964..c8988de36ba3b5a76f221a61cb3= 007a815b8c58a 100644 --- a/drivers/gpu/drm/bridge/panel.c +++ b/drivers/gpu/drm/bridge/panel.c @@ -126,14 +126,13 @@ static void panel_bridge_atomic_pre_enable(struct drm= _bridge *bridge, =20 drm_panel_prepare(panel_bridge->panel); } =20 static void panel_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *atomic_state) { struct panel_bridge *panel_bridge =3D drm_bridge_to_panel_bridge(bridge); - struct drm_atomic_state *atomic_state =3D old_bridge_state->base.state; struct drm_encoder *encoder =3D bridge->encoder; struct drm_crtc *crtc; struct drm_crtc_state *old_crtc_state; =20 crtc =3D drm_atomic_get_new_crtc_for_encoder(atomic_state, encoder); diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge= /samsung-dsim.c index 415ce14e747dfca0c5395e18f1195733e17616da..ddf55fad2815125e70c2c7029d2= 6e7ba036eb9ad 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -1483,11 +1483,11 @@ static void samsung_dsim_atomic_pre_enable(struct d= rm_bridge *bridge, return; } } =20 static void samsung_dsim_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct samsung_dsim *dsi =3D bridge_to_dsi(bridge); =20 samsung_dsim_set_display_mode(dsi); samsung_dsim_set_display_enable(dsi, true); diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii9= 02x.c index bf2d1632b020c38fec39f217b53f8e02ea862454..ae53d94a39317b4f753d4d59184= f7ee5858e44d9 100644 --- a/drivers/gpu/drm/bridge/sii902x.c +++ b/drivers/gpu/drm/bridge/sii902x.c @@ -337,11 +337,11 @@ static void sii902x_bridge_atomic_disable(struct drm_= bridge *bridge, =20 mutex_unlock(&sii902x->mutex); } =20 static void sii902x_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct sii902x *sii902x =3D bridge_to_sii902x(bridge); =20 mutex_lock(&sii902x->mutex); =20 diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c b/drivers/gpu/drm= /bridge/synopsys/dw-hdmi-qp.c index b281cabfe992eff88a4ba7bc903758bb119281f2..e480842016232d36014a849d6b1= cc0f29b409cc7 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c @@ -360,14 +360,13 @@ static int dw_hdmi_qp_config_drm_infoframe(struct dw_= hdmi_qp *hdmi, =20 return 0; } =20 static void dw_hdmi_qp_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { struct dw_hdmi_qp *hdmi =3D bridge->driver_private; - struct drm_atomic_state *state =3D old_state->base.state; struct drm_connector_state *conn_state; struct drm_connector *connector; unsigned int op_mode; =20 connector =3D drm_atomic_get_new_connector_for_encoder(state, bridge->enc= oder); diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index d1256c82de96a43211af64ad70848cd18d5044e5..b92e1fa9f3526c3d81b50cf95f4= fc4d447907975 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2957,14 +2957,13 @@ static void dw_hdmi_bridge_atomic_disable(struct dr= m_bridge *bridge, handle_plugged_change(hdmi, false); mutex_unlock(&hdmi->mutex); } =20 static void dw_hdmi_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { struct dw_hdmi *hdmi =3D bridge->driver_private; - struct drm_atomic_state *state =3D old_state->base.state; struct drm_connector *connector; =20 connector =3D drm_atomic_get_new_connector_for_encoder(state, bridge->encoder); =20 diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/dr= m/bridge/synopsys/dw-mipi-dsi.c index 9731a6b45a52b54fdf910a3cc84d8f97b0c37c91..f9371b19a476bbba17165632e4f= 2230ac9d48e9d 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c @@ -1041,11 +1041,11 @@ static void dw_mipi_dsi_bridge_mode_set(struct drm_= bridge *bridge, /* Store the display mode for later use in pre_enable callback */ drm_mode_copy(&dsi->mode, adjusted_mode); } =20 static void dw_mipi_dsi_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct dw_mipi_dsi *dsi =3D bridge_to_dsi(bridge); =20 /* Switch to video mode for panel-bridge enable & panel enable */ dw_mipi_dsi_set_mode(dsi, MIPI_DSI_MODE_VIDEO); diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c b/drivers/gpu/d= rm/bridge/synopsys/dw-mipi-dsi2.c index 194ac6e192f4c2a89048e241da7b7d0e2db75149..1d9d16fbcc7f2231fa71cc6a22a= 34be6f2ba46fd 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c @@ -838,11 +838,11 @@ static void dw_mipi_dsi2_bridge_mode_set(struct drm_b= ridge *bridge, /* Store the display mode for later use in pre_enable callback */ drm_mode_copy(&dsi2->mode, adjusted_mode); } =20 static void dw_mipi_dsi2_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct dw_mipi_dsi2 *dsi2 =3D bridge_to_dsi2(bridge); =20 /* Switch to video mode for panel-bridge enable & panel enable */ if (dsi2->mode_flags & MIPI_DSI_MODE_VIDEO) diff --git a/drivers/gpu/drm/bridge/tc358762.c b/drivers/gpu/drm/bridge/tc3= 58762.c index 15daf6d97365e6127273079a6e3b48597398fd37..6ed8ae6ffc3defa9857397a7f47= d44195ac0f774 100644 --- a/drivers/gpu/drm/bridge/tc358762.c +++ b/drivers/gpu/drm/bridge/tc358762.c @@ -187,11 +187,12 @@ static void tc358762_pre_enable(struct drm_bridge *br= idge, } =20 ctx->pre_enabled =3D true; } =20 -static void tc358762_enable(struct drm_bridge *bridge, struct drm_bridge_s= tate *state) +static void tc358762_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct tc358762 *ctx =3D bridge_to_tc358762(bridge); int ret; =20 ret =3D tc358762_init(ctx); diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc3= 58767.c index 4637bf6ea7a360c0000ab6f88cefaa50060687e2..a1f72e61b9444cc79bf1bb7bed5= 52c302bc30873 100644 --- a/drivers/gpu/drm/bridge/tc358767.c +++ b/drivers/gpu/drm/bridge/tc358767.c @@ -1546,13 +1546,12 @@ static int tc_edp_stream_disable(struct tc_data *tc) tc_pxl_pll_dis(tc); =20 return 0; } =20 -static void -tc_dpi_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void tc_dpi_bridge_atomic_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) =20 { struct tc_data *tc =3D bridge_to_tc(bridge); int ret; =20 @@ -1574,13 +1573,12 @@ tc_dpi_bridge_atomic_disable(struct drm_bridge *bri= dge, ret =3D tc_dpi_stream_disable(tc); if (ret < 0) dev_err(tc->dev, "main link stream stop error: %d\n", ret); } =20 -static void -tc_edp_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void tc_edp_bridge_atomic_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct tc_data *tc =3D bridge_to_tc(bridge); int ret; =20 ret =3D tc_get_display_props(tc); diff --git a/drivers/gpu/drm/bridge/ti-dlpc3433.c b/drivers/gpu/drm/bridge/= ti-dlpc3433.c index c513cd1902048d52088b946691db8a1aa24a5a32..963af4fc28a88f7ed0b0f01933d= 96dd8077c6602 100644 --- a/drivers/gpu/drm/bridge/ti-dlpc3433.c +++ b/drivers/gpu/drm/bridge/ti-dlpc3433.c @@ -103,11 +103,11 @@ static const struct regmap_config dlpc_regmap_config = =3D { .cache_type =3D REGCACHE_MAPLE, .name =3D "dlpc3433", }; =20 static void dlpc_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct dlpc *dlpc =3D bridge_to_dlpc(bridge); struct device *dev =3D dlpc->dev; struct drm_display_mode *mode =3D &dlpc->mode; struct regmap *regmap =3D dlpc->regmap; diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi83.c b/drivers/gpu/drm/bridge= /ti-sn65dsi83.c index 049d73526b904637dc1162893fa11d002c7b77d1..b2ff5cdb7fd26bfeb75af741aba= d06b21a765316 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi83.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi83.c @@ -531,11 +531,11 @@ static void sn65dsi83_atomic_pre_enable(struct drm_br= idge *bridge, /* Wait for 10ms after soft reset as specified in datasheet */ usleep_range(10000, 12000); } =20 static void sn65dsi83_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct sn65dsi83 *ctx =3D bridge_to_sn65dsi83(bridge); unsigned int pval; =20 /* Clear all errors that got asserted during initialization. */ diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge= /ti-sn65dsi86.c index 86bbfdc37d97f0ee33a7b116f89f885b527dc3d8..c3ad7e326ae809eda8e61c905d3= 7a85ff2137487 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -1071,11 +1071,11 @@ static int ti_sn_link_training(struct ti_sn65dsi86 = *pdata, int dp_rate_idx, =20 return ret; } =20 static void ti_sn_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct ti_sn65dsi86 *pdata =3D bridge_to_ti_sn65dsi86(bridge); struct drm_connector *connector; const char *last_err_str =3D "No supported DP rate"; unsigned int valid_rates; @@ -1083,11 +1083,11 @@ static void ti_sn_bridge_atomic_enable(struct drm_b= ridge *bridge, unsigned int val; int ret =3D -EINVAL; int max_dp_lanes; unsigned int bpp; =20 - connector =3D drm_atomic_get_new_connector_for_encoder(old_bridge_state->= base.state, + connector =3D drm_atomic_get_new_connector_for_encoder(state, bridge->encoder); if (!connector) { dev_err_ratelimited(pdata->dev, "Could not get the connector\n"); return; } diff --git a/drivers/gpu/drm/bridge/ti-tdp158.c b/drivers/gpu/drm/bridge/ti= -tdp158.c index 3472ed5924e8b939d6b55a489fbb9989114d35db..c0308f997445f52f7f9c680eb67= dde55edcb1049 100644 --- a/drivers/gpu/drm/bridge/ti-tdp158.c +++ b/drivers/gpu/drm/bridge/ti-tdp158.c @@ -16,11 +16,12 @@ struct tdp158 { struct regulator *vcc; // 3.3V struct regulator *vdd; // 1.1V struct device *dev; }; =20 -static void tdp158_enable(struct drm_bridge *bridge, struct drm_bridge_sta= te *prev) +static void tdp158_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { int err; struct tdp158 *tdp158 =3D bridge->driver_private; =20 err =3D regulator_enable(tdp158->vcc); diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index e6bf964ddd82e4e2eea5c8e83201d08bb50a3137..7d9d176347f37569dddeb8fc0db= dcdebe4445a60 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -804,19 +804,11 @@ void drm_atomic_bridge_chain_enable(struct drm_bridge= *bridge, return; =20 encoder =3D bridge->encoder; list_for_each_entry_from(bridge, &encoder->bridge_chain, chain_node) { if (bridge->funcs->atomic_enable) { - struct drm_bridge_state *old_bridge_state; - - old_bridge_state =3D - drm_atomic_get_old_bridge_state(old_state, - bridge); - if (WARN_ON(!old_bridge_state)) - return; - - bridge->funcs->atomic_enable(bridge, old_bridge_state); + bridge->funcs->atomic_enable(bridge, old_state); } else if (bridge->funcs->enable) { bridge->funcs->enable(bridge); } } } diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/in= genic/ingenic-drm-drv.c index c23ee2d214de67706f7de99fce01066f59898fa4..e52d8c4f0b7e93d6be88e3b3897= e711a12bc70c1 100644 --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c @@ -227,11 +227,11 @@ static int ingenic_drm_update_pixclk(struct notifier_= block *nb, return NOTIFY_OK; } } =20 static void ingenic_drm_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct ingenic_drm *priv =3D drm_device_get_priv(bridge->dev); =20 regmap_write(priv->map, JZ_REG_LCD_STATE, 0); =20 diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c b/drivers/gpu/drm/mediatek/m= tk_dp.c index cd385ba4c66aaad8649fa0c138273489ced5e39b..bd67423556b789be74fe648fd5c= a6141a8ab9fb8 100644 --- a/drivers/gpu/drm/mediatek/mtk_dp.c +++ b/drivers/gpu/drm/mediatek/mtk_dp.c @@ -2348,16 +2348,16 @@ static void mtk_dp_bridge_detach(struct drm_bridge = *bridge) mtk_dp_poweroff(mtk_dp); drm_dp_aux_unregister(&mtk_dp->aux); } =20 static void mtk_dp_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { struct mtk_dp *mtk_dp =3D mtk_dp_from_bridge(bridge); int ret; =20 - mtk_dp->conn =3D drm_atomic_get_new_connector_for_encoder(old_state->base= .state, + mtk_dp->conn =3D drm_atomic_get_new_connector_for_encoder(state, bridge->encoder); if (!mtk_dp->conn) { drm_err(mtk_dp->drm_dev, "Can't enable bridge as connector is missing\n"); return; diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/= mtk_dsi.c index aed9d03bcf012fc555277da8fe6adfbd6b839070..be21f8e643172b5fe07ce640af2= c33f060a3bb24 100644 --- a/drivers/gpu/drm/mediatek/mtk_dsi.c +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c @@ -832,11 +832,11 @@ static void mtk_dsi_bridge_atomic_disable(struct drm_= bridge *bridge, =20 mtk_output_dsi_disable(dsi); } =20 static void mtk_dsi_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct mtk_dsi *dsi =3D bridge_to_dsi(bridge); =20 if (dsi->refcount =3D=3D 0) return; diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek= /mtk_hdmi.c index 928909b4403a4c7ee6b919056f9cfd0c01d13cbd..a1904480fff8dcc0b4f3da883b9= abe3238653253 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c @@ -1381,13 +1381,12 @@ static void mtk_hdmi_send_infoframe(struct mtk_hdmi= *hdmi, if (mode->flags & DRM_MODE_FLAG_3D_MASK) mtk_hdmi_setup_vendor_specific_infoframe(hdmi, mode); } =20 static void mtk_hdmi_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { - struct drm_atomic_state *state =3D old_state->base.state; struct mtk_hdmi *hdmi =3D hdmi_ctx_from_bridge(bridge); =20 /* Retrieve the connector through the atomic state. */ hdmi->curr_conn =3D drm_atomic_get_new_connector_for_encoder(state, bridge->encoder); diff --git a/drivers/gpu/drm/meson/meson_encoder_cvbs.c b/drivers/gpu/drm/m= eson/meson_encoder_cvbs.c index d1191de855d910f9845bf2d5aef336e391982ba2..b535e74345f02079e22a18c8d99= 1adeb03c5e41a 100644 --- a/drivers/gpu/drm/meson/meson_encoder_cvbs.c +++ b/drivers/gpu/drm/meson/meson_encoder_cvbs.c @@ -137,14 +137,13 @@ static int meson_encoder_cvbs_atomic_check(struct drm= _bridge *bridge, =20 return -EINVAL; } =20 static void meson_encoder_cvbs_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct meson_encoder_cvbs *encoder_cvbs =3D bridge_to_meson_encoder_cvbs(= bridge); - struct drm_atomic_state *state =3D bridge_state->base.state; struct meson_drm *priv =3D encoder_cvbs->priv; const struct meson_cvbs_mode *meson_mode; struct drm_connector_state *conn_state; struct drm_crtc_state *crtc_state; struct drm_connector *connector; diff --git a/drivers/gpu/drm/meson/meson_encoder_dsi.c b/drivers/gpu/drm/me= son/meson_encoder_dsi.c index 7816902f590753d2f5e15aea45df0ce86e7595fb..140b3604dba10ac2aabadae065c= 2d9de8169ed03 100644 --- a/drivers/gpu/drm/meson/meson_encoder_dsi.c +++ b/drivers/gpu/drm/meson/meson_encoder_dsi.c @@ -40,14 +40,13 @@ static int meson_encoder_dsi_attach(struct drm_bridge *= bridge, return drm_bridge_attach(bridge->encoder, encoder_dsi->next_bridge, &encoder_dsi->bridge, flags); } =20 static void meson_encoder_dsi_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct meson_encoder_dsi *encoder_dsi =3D bridge_to_meson_encoder_dsi(bri= dge); - struct drm_atomic_state *state =3D bridge_state->base.state; struct meson_drm *priv =3D encoder_dsi->priv; struct drm_connector_state *conn_state; struct drm_crtc_state *crtc_state; struct drm_connector *connector; =20 diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/m= eson/meson_encoder_hdmi.c index 0593a1cde906ffab10c010c40942fb910059b2ab..7544c4e6af635b7e612a1a97098= 7e0e15e054cf1 100644 --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c @@ -184,14 +184,13 @@ static enum drm_mode_status meson_encoder_hdmi_mode_v= alid(struct drm_bridge *bri =20 return meson_vclk_vic_supported_freq(priv, phy_freq, vclk_freq); } =20 static void meson_encoder_hdmi_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct meson_encoder_hdmi *encoder_hdmi =3D bridge_to_meson_encoder_hdmi(= bridge); - struct drm_atomic_state *state =3D bridge_state->base.state; unsigned int ycrcb_map =3D VPU_HDMI_OUTPUT_CBYCR; struct meson_drm *priv =3D encoder_hdmi->priv; struct drm_connector_state *conn_state; const struct drm_display_mode *mode; struct drm_crtc_state *crtc_state; diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index 24dd37f1682bf5016bb0efbeb44489061deff060..ffb9c80543ad2306b2148b6f05a= 803d7634334d5 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1489,17 +1489,17 @@ int msm_dp_modeset_init(struct msm_dp *msm_dp_displ= ay, struct drm_device *dev, =20 return 0; } =20 void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(drm_bridge); struct msm_dp *dp =3D msm_dp_bridge->msm_dp_display; int rc =3D 0; struct msm_dp_display_private *msm_dp_display; - u32 state; + u32 hpd_state; bool force_link_train =3D false; =20 msm_dp_display =3D container_of(dp, struct msm_dp_display_private, msm_dp= _display); if (!msm_dp_display->msm_dp_mode.drm_mode.clock) { DRM_ERROR("invalid params\n"); @@ -1514,12 +1514,12 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge = *drm_bridge, DRM_ERROR("failed to pm_runtime_resume\n"); mutex_unlock(&msm_dp_display->event_mutex); return; } =20 - state =3D msm_dp_display->hpd_state; - if (state !=3D ST_DISPLAY_OFF && state !=3D ST_MAINLINK_READY) { + hpd_state =3D msm_dp_display->hpd_state; + if (hpd_state !=3D ST_DISPLAY_OFF && hpd_state !=3D ST_MAINLINK_READY) { mutex_unlock(&msm_dp_display->event_mutex); return; } =20 rc =3D msm_dp_display_set_mode(dp, &msm_dp_display->msm_dp_mode); @@ -1527,13 +1527,13 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge = *drm_bridge, DRM_ERROR("Failed to perform a mode set, rc=3D%d\n", rc); mutex_unlock(&msm_dp_display->event_mutex); return; } =20 - state =3D msm_dp_display->hpd_state; + hpd_state =3D msm_dp_display->hpd_state; =20 - if (state =3D=3D ST_DISPLAY_OFF) { + if (hpd_state =3D=3D ST_DISPLAY_OFF) { msm_dp_display_host_phy_init(msm_dp_display); force_link_train =3D true; } =20 msm_dp_display_enable(msm_dp_display, force_link_train); diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_dr= m.c index d3e241ea6941615b8e274dd17426c2f8557f09b5..eae8e849edc54da1faa9c557757= 873561fa223a1 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.c +++ b/drivers/gpu/drm/msm/dp/dp_drm.c @@ -135,13 +135,12 @@ static int msm_edp_bridge_atomic_check(struct drm_bri= dge *drm_bridge, =20 return 0; } =20 static void msm_edp_bridge_atomic_enable(struct drm_bridge *drm_bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { - struct drm_atomic_state *atomic_state =3D old_bridge_state->base.state; struct drm_crtc *crtc; struct drm_crtc_state *old_crtc_state; struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(drm_bridge); struct msm_dp *dp =3D msm_dp_bridge->msm_dp_display; =20 @@ -149,23 +148,23 @@ static void msm_edp_bridge_atomic_enable(struct drm_b= ridge *drm_bridge, * Check the old state of the crtc to determine if the panel * was put into psr state previously by the msm_edp_bridge_atomic_disable. * If the panel is in psr, just exit psr state and skip the full * bridge enable sequence. */ - crtc =3D drm_atomic_get_new_crtc_for_encoder(atomic_state, + crtc =3D drm_atomic_get_new_crtc_for_encoder(state, drm_bridge->encoder); if (!crtc) return; =20 - old_crtc_state =3D drm_atomic_get_old_crtc_state(atomic_state, crtc); + old_crtc_state =3D drm_atomic_get_old_crtc_state(state, crtc); =20 if (old_crtc_state && old_crtc_state->self_refresh_active) { msm_dp_display_set_psr(dp, false); return; } =20 - msm_dp_bridge_atomic_enable(drm_bridge, old_bridge_state); + msm_dp_bridge_atomic_enable(drm_bridge, state); } =20 static void msm_edp_bridge_atomic_disable(struct drm_bridge *drm_bridge, struct drm_bridge_state *old_bridge_state) { diff --git a/drivers/gpu/drm/msm/dp/dp_drm.h b/drivers/gpu/drm/msm/dp/dp_dr= m.h index 8eae2f74839f71cd3ef8511df4bb1aaa235abf1b..d54253ecbbff85f06112a1f6298= 1c724774c237a 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.h +++ b/drivers/gpu/drm/msm/dp/dp_drm.h @@ -24,11 +24,11 @@ struct drm_connector *msm_dp_drm_connector_init(struct = msm_dp *msm_dp_display, int msm_dp_bridge_init(struct msm_dp *msm_dp_display, struct drm_device *d= ev, struct drm_encoder *encoder, bool yuv_supported); =20 void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge, - struct drm_bridge_state *old_bridge_state); + struct drm_atomic_state *state); void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge, struct drm_bridge_state *old_bridge_state); void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge, struct drm_bridge_state *old_bridge_state); enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge, diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi4.c b/drivers/gpu/drm/omapdrm/= dss/hdmi4.c index 4435f0027c78d75067be42b1c097db2980828ed8..c43f4a5218d1227a7431cccb015= 530e1b1543329 100644 --- a/drivers/gpu/drm/omapdrm/dss/hdmi4.c +++ b/drivers/gpu/drm/omapdrm/dss/hdmi4.c @@ -339,14 +339,13 @@ static void hdmi4_bridge_mode_set(struct drm_bridge *= bridge, =20 mutex_unlock(&hdmi->lock); } =20 static void hdmi4_bridge_enable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct omap_hdmi *hdmi =3D drm_bridge_to_hdmi(bridge); - struct drm_atomic_state *state =3D bridge_state->base.state; struct drm_connector_state *conn_state; struct drm_connector *connector; struct drm_crtc_state *crtc_state; unsigned long flags; int ret; diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi5.c b/drivers/gpu/drm/omapdrm/= dss/hdmi5.c index a8c740df3146eb9dd2b64b2520cfd07e46bc2539..49a4d31243e7dbb4ad6a9136e16= 032fd15dbe607 100644 --- a/drivers/gpu/drm/omapdrm/dss/hdmi5.c +++ b/drivers/gpu/drm/omapdrm/dss/hdmi5.c @@ -337,14 +337,13 @@ static void hdmi5_bridge_mode_set(struct drm_bridge *= bridge, =20 mutex_unlock(&hdmi->lock); } =20 static void hdmi5_bridge_enable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct omap_hdmi *hdmi =3D drm_bridge_to_hdmi(bridge); - struct drm_atomic_state *state =3D bridge_state->base.state; struct drm_connector_state *conn_state; struct drm_connector *connector; struct drm_crtc_state *crtc_state; unsigned long flags; int ret; diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c b/drivers/gpu/drm/= renesas/rcar-du/rcar_lvds.c index e8d64583e3bdb9b0cb35622b1bbe6d9fc88daadf..86e112fe1fc44603585d916fc70= c0a3bd7ab1313 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c @@ -580,13 +580,12 @@ EXPORT_SYMBOL_GPL(rcar_lvds_pclk_disable); /* -----------------------------------------------------------------------= ------ * Bridge */ =20 static void rcar_lvds_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { - struct drm_atomic_state *state =3D old_bridge_state->base.state; struct drm_connector *connector; struct drm_crtc *crtc; =20 connector =3D drm_atomic_get_new_connector_for_encoder(state, bridge->encoder); diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c b/drivers/gpu/= drm/renesas/rcar-du/rcar_mipi_dsi.c index 3c0c18d5249ae47c85676253d39664e009b19d1e..4c8f63bd106e12b62e6c5006a43= 9305f979beb64 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c @@ -806,11 +806,11 @@ static int rcar_mipi_dsi_attach(struct drm_bridge *br= idge, return drm_bridge_attach(bridge->encoder, dsi->next_bridge, bridge, flags); } =20 static void rcar_mipi_dsi_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct rcar_mipi_dsi *dsi =3D bridge_to_rcar_mipi_dsi(bridge); =20 rcar_mipi_dsi_start_video(dsi); } diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c b/drivers/gpu/d= rm/renesas/rz-du/rzg2l_mipi_dsi.c index fa7a1ae22aa3d9bbe7995edef040ac69d922ca2d..1eafb637092b1731a606ed50d7c= c8f89a7964606 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c @@ -530,13 +530,12 @@ static int rzg2l_mipi_dsi_attach(struct drm_bridge *b= ridge, return drm_bridge_attach(bridge->encoder, dsi->next_bridge, bridge, flags); } =20 static void rzg2l_mipi_dsi_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { - struct drm_atomic_state *state =3D old_bridge_state->base.state; struct rzg2l_mipi_dsi *dsi =3D bridge_to_rzg2l_mipi_dsi(bridge); const struct drm_display_mode *mode; struct drm_connector *connector; struct drm_crtc *crtc; int ret; diff --git a/drivers/gpu/drm/stm/lvds.c b/drivers/gpu/drm/stm/lvds.c index 06f2d7a56cc963faa87307b96146cb08adf8b248..7ec44f2264038c3642c40202bc0= 14c438ecee104 100644 --- a/drivers/gpu/drm/stm/lvds.c +++ b/drivers/gpu/drm/stm/lvds.c @@ -978,13 +978,12 @@ static int lvds_attach(struct drm_bridge *bridge, =20 return ret; } =20 static void lvds_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { - struct drm_atomic_state *state =3D old_bridge_state->base.state; struct stm_lvds *lvds =3D bridge_to_stm_lvds(bridge); struct drm_connector_state *conn_state; struct drm_connector *connector; int ret; =20 diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c index eb747ea3325c1d487ac879a91d2b5436f5cd10c7..59d881ddf0eebf1265875c3cad7= cce45990cde4d 100644 --- a/drivers/gpu/drm/vc4/vc4_dsi.c +++ b/drivers/gpu/drm/vc4/vc4_dsi.c @@ -1140,11 +1140,11 @@ static void vc4_dsi_bridge_pre_enable(struct drm_br= idge *bridge, DSI_DISP0_COMMAND_MODE); } } =20 static void vc4_dsi_bridge_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { struct vc4_dsi *dsi =3D bridge_to_vc4_dsi(bridge); bool debug_dump_regs =3D false; u32 disp0_ctrl; =20 diff --git a/drivers/gpu/drm/xlnx/zynqmp_dp.c b/drivers/gpu/drm/xlnx/zynqmp= _dp.c index 979f6d3239ba69ce0dbf6d55447b423875612fee..1715e42d0b70cb23cfb4eeeefd8= 51299cf6d46a4 100644 --- a/drivers/gpu/drm/xlnx/zynqmp_dp.c +++ b/drivers/gpu/drm/xlnx/zynqmp_dp.c @@ -1435,22 +1435,21 @@ zynqmp_dp_disp_connected_live_layer(struct zynqmp_d= p *dp) else return NULL; } =20 static void zynqmp_dp_disp_enable(struct zynqmp_dp *dp, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct zynqmp_disp_layer *layer; struct drm_bridge_state *bridge_state; u32 bus_fmt; =20 layer =3D zynqmp_dp_disp_connected_live_layer(dp); if (!layer) return; =20 - bridge_state =3D drm_atomic_get_new_bridge_state(old_bridge_state->base.s= tate, - old_bridge_state->bridge); + bridge_state =3D drm_atomic_get_new_bridge_state(state, &dp->bridge); if (WARN_ON(!bridge_state)) return; =20 bus_fmt =3D bridge_state->input_bus_cfg.format; zynqmp_disp_layer_set_live_format(layer, bus_fmt); @@ -1547,14 +1546,13 @@ zynqmp_dp_bridge_mode_valid(struct drm_bridge *brid= ge, =20 return MODE_OK; } =20 static void zynqmp_dp_bridge_atomic_enable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct zynqmp_dp *dp =3D bridge_to_dp(bridge); - struct drm_atomic_state *state =3D old_bridge_state->base.state; const struct drm_crtc_state *crtc_state; const struct drm_display_mode *adjusted_mode; const struct drm_display_mode *mode; struct drm_connector *connector; struct drm_crtc *crtc; @@ -1563,11 +1561,11 @@ static void zynqmp_dp_bridge_atomic_enable(struct d= rm_bridge *bridge, int ret; =20 pm_runtime_get_sync(dp->dev); =20 guard(mutex)(&dp->lock); - zynqmp_dp_disp_enable(dp, old_bridge_state); + zynqmp_dp_disp_enable(dp, state); =20 /* * Retrieve the CRTC mode and adjusted mode. This requires a little * dance to go from the bridge to the encoder, to the connector and to * the CRTC. diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index eef4487f45af50dccbee5144378dbb3b5972a210..4c5e231230301f08ed568edbb4b= 6b2020234c012 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -323,11 +323,11 @@ struct drm_bridge_funcs { * chain if there is one. * * The @atomic_enable callback is optional. */ void (*atomic_enable)(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state); + struct drm_atomic_state *state); /** * @atomic_disable: * * This callback should disable the bridge. It is called right before * the preceding element in the display pipe is disabled. If the --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9E77523A9B5 for ; Thu, 13 Feb 2025 14:44:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457846; cv=none; b=egHxoE+d7/bVOa7OIS6iGdVDPNS8R3iLVF7i147wnKXU798Crs+Mmi9FCrDdEsq3Vam6me5xCmQm0m632/D+AgwT8xgMPL+nB705VOs9I56AwAOUIjSLwRNxbkMdVc5ib7Mpnxf3syhXCmw8hRCtdn32aud9BpFwf0xGUsvNu18= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457846; c=relaxed/simple; bh=ye8slN0BE7WonTxnqLlOcrzizy/dbbJIwfjvRCxYa/I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WUN7Pw/OKK9yt6vzEXf4PGsM/xan1dE9TEilN28OCtLDpEzHvGsV5iUnUMyILpkGX/hYeP5mP6x0lJKYywRD3xpbhklUk4rcgYcQJVgV8Vy4PjynK5be8XG20BzSVNR0JBL8fnRYPWShsVnlIrqEli6tFxwcPhaKGPRc8ot9o5E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Uu/+2J6+; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Uu/+2J6+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D8BB9C4CED1; Thu, 13 Feb 2025 14:44:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457846; bh=ye8slN0BE7WonTxnqLlOcrzizy/dbbJIwfjvRCxYa/I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Uu/+2J6+nn61QuIhdr8Irh+JWXPX0R2RovoHi8svkmAFjd3EeQZgnhO6omdNHutvq Gzk33wJUeLbhpxT5LaIxY7unwZCeCx6sNq5+JKf0uogz1urUlmPKA1tCVWmhRJ1Y+W oflf4BVFq7BsRYTEh7yIZasCT2c65gQxuJCHKEDf/gRh0CcvPLWIBVncr2dtIIKL1B hdEovOvw+Iubm9TYgyZiGFUjk4d+/J7eholQfkrQjYeeKX5JuczCc0CFvw9HVLdhjY 8+ND4HHLMg75lpTdV4C7LomTkUqRFvCPrB9uZZhqts6qV2+RbDRwLfJYZpHYCfQrSf Kz4lkIakZCwwQ== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:23 +0100 Subject: [PATCH v3 04/37] drm/bridge: Pass full state to atomic_disable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-4-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=40432; i=mripard@kernel.org; h=from:subject:message-id; bh=ye8slN0BE7WonTxnqLlOcrzizy/dbbJIwfjvRCxYa/I=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWMVPaYZZpcU89fO81SY1+a1z3/uTPdeufpqlpfT5/ 5GlfgePdUxlYRDmZJAVU2R5IhN2enn74ioH+5U/YOawMoEMYeDiFICJbLZkbJh+R7qmsvhhV/xG ze33vM8YF/ju864I1eHwe7eelz9uDotT+byXkz89bD8/2fyeZOmKZYwNi05b6qcUiLt/TPDezZf /dfc58d3Pt56YEbE7KL1PkXNp6a47t4S1HoieuS3ddzEqN9oYAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D It's pretty inconvenient to access the full atomic state from drm_bridges, so let's change the atomic_disable hook prototype to pass it directly. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard Reviewed-by: Douglas Anderson Tested-by: Douglas Anderson --- drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 2 +- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 6 ++---- drivers/gpu/drm/bridge/analogix/anx7625.c | 2 +- drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c | 2 +- drivers/gpu/drm/bridge/fsl-ldb.c | 2 +- drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c | 2 +- drivers/gpu/drm/bridge/imx/imx8qm-ldb.c | 5 ++--- drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c | 7 +++---- drivers/gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c | 5 ++--- drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c | 5 ++--- drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c | 8 +++----- drivers/gpu/drm/bridge/ite-it6263.c | 5 ++--- drivers/gpu/drm/bridge/ite-it6505.c | 2 +- drivers/gpu/drm/bridge/ite-it66121.c | 2 +- drivers/gpu/drm/bridge/lontium-lt9211.c | 2 +- drivers/gpu/drm/bridge/lontium-lt9611.c | 5 ++--- drivers/gpu/drm/bridge/nwl-dsi.c | 5 ++--- drivers/gpu/drm/bridge/panel.c | 3 +-- drivers/gpu/drm/bridge/samsung-dsim.c | 2 +- drivers/gpu/drm/bridge/sii902x.c | 2 +- drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c | 2 +- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 2 +- drivers/gpu/drm/bridge/tc358767.c | 10 ++++------ drivers/gpu/drm/bridge/ti-sn65dsi83.c | 2 +- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 2 +- drivers/gpu/drm/bridge/ti-tdp158.c | 3 ++- drivers/gpu/drm/drm_bridge.c | 10 +--------- drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 2 +- drivers/gpu/drm/mediatek/mtk_dp.c | 2 +- drivers/gpu/drm/mediatek/mtk_dsi.c | 2 +- drivers/gpu/drm/mediatek/mtk_hdmi.c | 2 +- drivers/gpu/drm/meson/meson_encoder_cvbs.c | 2 +- drivers/gpu/drm/meson/meson_encoder_dsi.c | 2 +- drivers/gpu/drm/meson/meson_encoder_hdmi.c | 2 +- drivers/gpu/drm/msm/dp/dp_display.c | 2 +- drivers/gpu/drm/msm/dp/dp_drm.c | 5 ++--- drivers/gpu/drm/msm/dp/dp_drm.h | 2 +- drivers/gpu/drm/omapdrm/dss/hdmi4.c | 2 +- drivers/gpu/drm/omapdrm/dss/hdmi5.c | 2 +- drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c | 2 +- drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c | 2 +- drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 2 +- drivers/gpu/drm/stm/lvds.c | 2 +- drivers/gpu/drm/vc4/vc4_dsi.c | 2 +- drivers/gpu/drm/xlnx/zynqmp_dp.c | 4 +++- include/drm/drm_bridge.h | 2 +- 46 files changed, 64 insertions(+), 84 deletions(-) diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm= /bridge/adv7511/adv7511_drv.c index 3d22685d33b51f59115b289b70c990d585aa5230..050dae338ffee36a8d6ee6fcce6= 9f51486a957fe 100644 --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c @@ -917,11 +917,11 @@ static void adv7511_bridge_atomic_enable(struct drm_b= ridge *bridge, =20 adv7511_power_on(adv); } =20 static void adv7511_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct adv7511 *adv =3D bridge_to_adv7511(bridge); =20 adv7511_power_off(adv); } diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index 7939d622d6a24657092d0cd9ebdf835e092c51ee..5ebda1ca880439db8fbfa048be7= 274f763b82f51 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1321,15 +1321,13 @@ static void analogix_dp_bridge_disable(struct drm_b= ridge *bridge) dp->fast_train_enable =3D false; dp->psr_supported =3D false; dp->dpms_mode =3D DRM_MODE_DPMS_OFF; } =20 -static void -analogix_dp_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void analogix_dp_bridge_atomic_disable(struct drm_bridge *bridge, + struct drm_atomic_state *old_state) { - struct drm_atomic_state *old_state =3D old_bridge_state->base.state; struct analogix_dp_device *dp =3D bridge->driver_private; struct drm_crtc *old_crtc, *new_crtc; struct drm_crtc_state *old_crtc_state =3D NULL; struct drm_crtc_state *new_crtc_state =3D NULL; int ret; diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/br= idge/analogix/anx7625.c index 79f78dbe96351ef5fb746dc6731176a8d2989376..0b97b66de577421b0e68e748d00= 75f674c71fbf1 100644 --- a/drivers/gpu/drm/bridge/analogix/anx7625.c +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c @@ -2417,11 +2417,11 @@ static void anx7625_bridge_atomic_enable(struct drm= _bridge *bridge, } } } =20 static void anx7625_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old) + struct drm_atomic_state *state) { struct anx7625_data *ctx =3D bridge_to_anx7625(bridge); struct device *dev =3D ctx->dev; =20 dev_dbg(dev, "drm atomic disable\n"); diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-core.c index d3cebc79aaef75bd745892b7987f0a64bdc327f4..ef586e7df83b96f39ab552171d2= ef665971a81ef 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c @@ -2067,11 +2067,11 @@ static void cdns_mhdp_atomic_enable(struct drm_brid= ge *bridge, if (ret < 0) schedule_work(&mhdp->modeset_retry_work); } =20 static void cdns_mhdp_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct cdns_mhdp_device *mhdp =3D bridge_to_mhdp(bridge); u32 resp; =20 dev_dbg(mhdp->dev, "%s\n", __func__); diff --git a/drivers/gpu/drm/bridge/fsl-ldb.c b/drivers/gpu/drm/bridge/fsl-= ldb.c index 0ba8bbc1afaec9cd7ae420568f98d21a31759614..26ae1ab5237f81ebd6c56075a18= 136f4a5b56ec9 100644 --- a/drivers/gpu/drm/bridge/fsl-ldb.c +++ b/drivers/gpu/drm/bridge/fsl-ldb.c @@ -221,11 +221,11 @@ static void fsl_ldb_atomic_enable(struct drm_bridge *= bridge, =20 regmap_write(fsl_ldb->regmap, fsl_ldb->devdata->lvds_ctrl, reg); } =20 static void fsl_ldb_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct fsl_ldb *fsl_ldb =3D to_fsl_ldb(bridge); =20 /* Stop channel(s). */ if (fsl_ldb->devdata->lvds_en_bit) diff --git a/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c b/drivers/gpu/drm= /bridge/imx/imx8mp-hdmi-pvi.c index 9ee645489ea30a0478b114457aa0768dd7f2952e..a17433a7c75530668662ed8dd15= 26b44f9a32f32 100644 --- a/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c +++ b/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c @@ -87,11 +87,11 @@ static void imx8mp_hdmi_pvi_bridge_enable(struct drm_br= idge *bridge, =20 writel(val, pvi->regs + HTX_PVI_CTRL); } =20 static void imx8mp_hdmi_pvi_bridge_disable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct imx8mp_hdmi_pvi *pvi =3D to_imx8mp_hdmi_pvi(bridge); =20 writel(0x0, pvi->regs + HTX_PVI_CTRL); =20 diff --git a/drivers/gpu/drm/bridge/imx/imx8qm-ldb.c b/drivers/gpu/drm/brid= ge/imx/imx8qm-ldb.c index fe2313aa2051c9d36ec0edbbd27d103229da6a9b..524aac751359f5cd377807508cb= eeb6a597529e1 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qm-ldb.c +++ b/drivers/gpu/drm/bridge/imx/imx8qm-ldb.c @@ -244,13 +244,12 @@ static void imx8qm_ldb_bridge_atomic_enable(struct dr= m_bridge *bridge, } =20 ldb_bridge_enable_helper(bridge); } =20 -static void -imx8qm_ldb_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void imx8qm_ldb_bridge_atomic_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct ldb_channel *ldb_ch =3D bridge->driver_private; struct ldb *ldb =3D ldb_ch->ldb; struct imx8qm_ldb_channel *imx8qm_ldb_ch =3D base_to_imx8qm_ldb_channel(ldb_ch); diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c b/drivers/gpu/drm/bri= dge/imx/imx8qxp-ldb.c index f3f5b7b810f682f9973413ad1d65c9764437e94a..3cb484773ddf95695111d4d64c1= eba4fbb363dc3 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c +++ b/drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c @@ -251,13 +251,12 @@ static void imx8qxp_ldb_bridge_atomic_enable(struct d= rm_bridge *bridge, =20 if (is_split && companion) companion->funcs->atomic_enable(companion, state); } =20 -static void -imx8qxp_ldb_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void imx8qxp_ldb_bridge_atomic_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct ldb_channel *ldb_ch =3D bridge->driver_private; struct ldb *ldb =3D ldb_ch->ldb; struct imx8qxp_ldb_channel *imx8qxp_ldb_ch =3D base_to_imx8qxp_ldb_channel(ldb_ch); @@ -279,11 +278,11 @@ imx8qxp_ldb_bridge_atomic_disable(struct drm_bridge *= bridge, =20 clk_disable_unprepare(imx8qxp_ldb->clk_bypass); clk_disable_unprepare(imx8qxp_ldb->clk_pixel); =20 if (is_split && companion) - companion->funcs->atomic_disable(companion, old_bridge_state); + companion->funcs->atomic_disable(companion, state); =20 ret =3D pm_runtime_put(dev); if (ret < 0) DRM_DEV_ERROR(dev, "failed to put runtime PM: %d\n", ret); } diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c b/drivers/= gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c index 1812bd106261b802658dfbd9d52ecab7de1036e2..1d9529dc7f2a93e7547ae1f4c61= 93598a5574135 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c +++ b/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c @@ -174,13 +174,12 @@ imx8qxp_pc_bridge_mode_set(struct drm_bridge *bridge, imx8qxp_pc_write_set(pc, PC_CTRL_REG, PC_DISP_BYPASS(ch->stream_id)); =20 clk_disable_unprepare(pc->clk_apb); } =20 -static void -imx8qxp_pc_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void imx8qxp_pc_bridge_atomic_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct imx8qxp_pc_channel *ch =3D bridge->driver_private; struct imx8qxp_pc *pc =3D ch->pc; int ret; =20 diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c b/drivers/gpu/= drm/bridge/imx/imx8qxp-pixel-link.c index 9b79e5dbcaca7f2b24a4183bcea4d6aac4464165..cd6818db0fd332cac03241917bb= b107b7261097c 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c +++ b/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c @@ -161,13 +161,12 @@ static void imx8qxp_pixel_link_bridge_atomic_enable(s= truct drm_bridge *bridge, imx8qxp_pixel_link_enable_mst_en(pl); imx8qxp_pixel_link_enable_mst_vld(pl); imx8qxp_pixel_link_enable_sync(pl); } =20 -static void -imx8qxp_pixel_link_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void imx8qxp_pixel_link_bridge_atomic_disable(struct drm_bridge *br= idge, + struct drm_atomic_state *state) { struct imx8qxp_pixel_link *pl =3D bridge->driver_private; =20 imx8qxp_pixel_link_disable_mst_en(pl); imx8qxp_pixel_link_disable_mst_vld(pl); diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c b/drivers/gpu/drm= /bridge/imx/imx8qxp-pxl2dpi.c index 65cf3a6c8ec692488aaf421946c6b2180fcebcc1..49dd4f96d52c966d9a038b0b040= 07631d0837f4d 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c +++ b/drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c @@ -120,24 +120,22 @@ imx8qxp_pxl2dpi_bridge_mode_set(struct drm_bridge *br= idge, p2d->companion->funcs->mode_set(p2d->companion, mode, adjusted_mode); } } =20 -static void -imx8qxp_pxl2dpi_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void imx8qxp_pxl2dpi_bridge_atomic_disable(struct drm_bridge *bridg= e, + struct drm_atomic_state *state) { struct imx8qxp_pxl2dpi *p2d =3D bridge->driver_private; int ret; =20 ret =3D pm_runtime_put(p2d->dev); if (ret < 0) DRM_DEV_ERROR(p2d->dev, "failed to put runtime PM: %d\n", ret); =20 if (p2d->companion) - p2d->companion->funcs->atomic_disable(p2d->companion, - old_bridge_state); + p2d->companion->funcs->atomic_disable(p2d->companion, state); } =20 static const u32 imx8qxp_pxl2dpi_bus_output_fmts[] =3D { MEDIA_BUS_FMT_RGB888_1X24, MEDIA_BUS_FMT_RGB666_1X24_CPADHI, diff --git a/drivers/gpu/drm/bridge/ite-it6263.c b/drivers/gpu/drm/bridge/i= te-it6263.c index 0cf624a8495c00c15158aed6e0ec7227bcad529d..21152a1c28f7f5e326794488f47= 3b030219a2f65 100644 --- a/drivers/gpu/drm/bridge/ite-it6263.c +++ b/drivers/gpu/drm/bridge/ite-it6263.c @@ -567,13 +567,12 @@ static int it6263_read_edid(void *data, u8 *buf, unsi= gned int block, size_t len) } =20 return 0; } =20 -static void -it6263_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void it6263_bridge_atomic_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct it6263 *it =3D bridge_to_it6263(bridge); =20 regmap_write_bits(it->hdmi_regmap, HDMI_REG_GCP, AVMUTE, AVMUTE); regmap_write(it->hdmi_regmap, HDMI_REG_PKT_GENERAL_CTRL, 0); diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index 159fdce3512978daae28d652d3d91e4968d4a729..d8265a205c0dc17e38c426e225e= 33c361a41a256 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -3236,11 +3236,11 @@ static void it6505_bridge_atomic_enable(struct drm_= bridge *bridge, it6505_drm_dp_link_set_power(&it6505->aux, &it6505->link, DP_SET_POWER_D0); } =20 static void it6505_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { struct it6505 *it6505 =3D bridge_to_it6505(bridge); struct device *dev =3D it6505->dev; =20 DRM_DEV_DEBUG_DRIVER(dev, "start"); diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/= ite-it66121.c index 4b784ac04b3a0284c4ff4b62a390ade75d686c21..b9f90f32145de0f17eadfdf0efb= e95a2b5ca026d 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -729,11 +729,11 @@ static void it66121_bridge_enable(struct drm_bridge *= bridge, =20 it66121_set_mute(ctx, false); } =20 static void it66121_bridge_disable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct it66121_ctx *ctx =3D container_of(bridge, struct it66121_ctx, brid= ge); =20 it66121_set_mute(ctx, true); =20 diff --git a/drivers/gpu/drm/bridge/lontium-lt9211.c b/drivers/gpu/drm/brid= ge/lontium-lt9211.c index 65d5cdfe0d32cf9dca6582a60225db335c80172c..0fc5ea18fe6a8d0c1578dcae960= d78cc33f4fb6d 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9211.c +++ b/drivers/gpu/drm/bridge/lontium-lt9211.c @@ -550,11 +550,11 @@ static void lt9211_atomic_enable(struct drm_bridge *b= ridge, =20 dev_dbg(ctx->dev, "LT9211 enabled.\n"); } =20 static void lt9211_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct lt9211 *ctx =3D bridge_to_lt9211(bridge); int ret; =20 /* diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c b/drivers/gpu/drm/brid= ge/lontium-lt9611.c index 521cce42d0332564dfa1bb1cb06012711198022e..bacc8d373fe7c8af1370afef258= 8d9c41fd7f5f3 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9611.c +++ b/drivers/gpu/drm/bridge/lontium-lt9611.c @@ -685,13 +685,12 @@ static void lt9611_bridge_atomic_enable(struct drm_br= idge *bridge, =20 /* Enable HDMI output */ regmap_write(lt9611->regmap, 0x8130, 0xea); } =20 -static void -lt9611_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void lt9611_bridge_atomic_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct lt9611 *lt9611 =3D bridge_to_lt9611(bridge); int ret; =20 /* Disable HDMI output */ diff --git a/drivers/gpu/drm/bridge/nwl-dsi.c b/drivers/gpu/drm/bridge/nwl-= dsi.c index 00a2ffb3dc7d93be70496de53a9de1195a4d2b18..09b8b2e7d9fb358b5fb11d9646c= f9c2f13221f3c 100644 --- a/drivers/gpu/drm/bridge/nwl-dsi.c +++ b/drivers/gpu/drm/bridge/nwl-dsi.c @@ -734,13 +734,12 @@ static int nwl_dsi_disable(struct nwl_dsi *dsi) clk_disable_unprepare(dsi->tx_esc_clk); =20 return 0; } =20 -static void -nwl_dsi_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void nwl_dsi_bridge_atomic_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct nwl_dsi *dsi =3D bridge_to_dsi(bridge); int ret; =20 nwl_dsi_disable(dsi); diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c index c8988de36ba3b5a76f221a61cb3007a815b8c58a..4ac9d32c701eb84df1fdff7d4ef= 06106bfd2e51d 100644 --- a/drivers/gpu/drm/bridge/panel.c +++ b/drivers/gpu/drm/bridge/panel.c @@ -145,14 +145,13 @@ static void panel_bridge_atomic_enable(struct drm_bri= dge *bridge, =20 drm_panel_enable(panel_bridge->panel); } =20 static void panel_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *atomic_state) { struct panel_bridge *panel_bridge =3D drm_bridge_to_panel_bridge(bridge); - struct drm_atomic_state *atomic_state =3D old_bridge_state->base.state; struct drm_encoder *encoder =3D bridge->encoder; struct drm_crtc *crtc; struct drm_crtc_state *new_crtc_state; =20 crtc =3D drm_atomic_get_old_crtc_for_encoder(atomic_state, encoder); diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge= /samsung-dsim.c index ddf55fad2815125e70c2c7029d26e7ba036eb9ad..4a75a49110bca0e4ce71fbb8108= 1fbffd7d72465 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -1494,11 +1494,11 @@ static void samsung_dsim_atomic_enable(struct drm_b= ridge *bridge, =20 dsi->state |=3D DSIM_STATE_VIDOUT_AVAILABLE; } =20 static void samsung_dsim_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct samsung_dsim *dsi =3D bridge_to_dsi(bridge); =20 if (!(dsi->state & DSIM_STATE_ENABLED)) return; diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii9= 02x.c index ae53d94a39317b4f753d4d59184f7ee5858e44d9..2100a687096e50c83a7c554e6d2= 1b3c638ef713b 100644 --- a/drivers/gpu/drm/bridge/sii902x.c +++ b/drivers/gpu/drm/bridge/sii902x.c @@ -323,11 +323,11 @@ static int sii902x_get_modes(struct drm_connector *co= nnector) static const struct drm_connector_helper_funcs sii902x_connector_helper_fu= ncs =3D { .get_modes =3D sii902x_get_modes, }; =20 static void sii902x_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct sii902x *sii902x =3D bridge_to_sii902x(bridge); =20 mutex_lock(&sii902x->mutex); =20 diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c b/drivers/gpu/drm= /bridge/synopsys/dw-hdmi-qp.c index e480842016232d36014a849d6b1cc0f29b409cc7..1d39015f1533e7957fb8bcc5799= 5125dddbd4fd3 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c @@ -393,11 +393,11 @@ static void dw_hdmi_qp_bridge_atomic_enable(struct dr= m_bridge *bridge, =20 drm_atomic_helper_connector_hdmi_update_infoframes(connector, state); } =20 static void dw_hdmi_qp_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { struct dw_hdmi_qp *hdmi =3D bridge->driver_private; =20 hdmi->phy.ops->disable(hdmi, hdmi->phy.data); } diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index b92e1fa9f3526c3d81b50cf95f4fc4d447907975..0890add5f7070f13fefad923526= e92f516f06764 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2943,11 +2943,11 @@ static void dw_hdmi_bridge_mode_set(struct drm_brid= ge *bridge, =20 mutex_unlock(&hdmi->mutex); } =20 static void dw_hdmi_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { struct dw_hdmi *hdmi =3D bridge->driver_private; =20 mutex_lock(&hdmi->mutex); hdmi->disabled =3D true; diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc3= 58767.c index a1f72e61b9444cc79bf1bb7bed552c302bc30873..39e2d3a7a27d2603bb847d55c48= 12fb170389ba0 100644 --- a/drivers/gpu/drm/bridge/tc358767.c +++ b/drivers/gpu/drm/bridge/tc358767.c @@ -1561,13 +1561,12 @@ static void tc_dpi_bridge_atomic_enable(struct drm_= bridge *bridge, tc_main_link_disable(tc); return; } } =20 -static void -tc_dpi_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void tc_dpi_bridge_atomic_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct tc_data *tc =3D bridge_to_tc(bridge); int ret; =20 ret =3D tc_dpi_stream_disable(tc); @@ -1599,13 +1598,12 @@ static void tc_edp_bridge_atomic_enable(struct drm_= bridge *bridge, tc_main_link_disable(tc); return; } } =20 -static void -tc_edp_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void tc_edp_bridge_atomic_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct tc_data *tc =3D bridge_to_tc(bridge); int ret; =20 ret =3D tc_edp_stream_disable(tc); diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi83.c b/drivers/gpu/drm/bridge= /ti-sn65dsi83.c index b2ff5cdb7fd26bfeb75af741abad06b21a765316..ab77dff65607f5eec4b36519dcc= b2465274d2df9 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi83.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi83.c @@ -548,11 +548,11 @@ static void sn65dsi83_atomic_enable(struct drm_bridge= *bridge, if (pval) dev_err(ctx->dev, "Unexpected link status 0x%02x\n", pval); } =20 static void sn65dsi83_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct sn65dsi83 *ctx =3D bridge_to_sn65dsi83(bridge); int ret; =20 /* Put the chip in reset, pull EN line low, and assure 10ms reset low tim= ing. */ diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge= /ti-sn65dsi86.c index c3ad7e326ae809eda8e61c905d37a85ff2137487..38f30aad7d9b72083272702c8bd= a73e61dbe0267 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -811,11 +811,11 @@ ti_sn_bridge_mode_valid(struct drm_bridge *bridge, =20 return MODE_OK; } =20 static void ti_sn_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct ti_sn65dsi86 *pdata =3D bridge_to_ti_sn65dsi86(bridge); =20 /* disable video stream */ regmap_update_bits(pdata->regmap, SN_ENH_FRAME_REG, VSTREAM_ENABLE, 0); diff --git a/drivers/gpu/drm/bridge/ti-tdp158.c b/drivers/gpu/drm/bridge/ti= -tdp158.c index c0308f997445f52f7f9c680eb67dde55edcb1049..22316382451fa3a55e1b3977982= bd306b52b5888 100644 --- a/drivers/gpu/drm/bridge/ti-tdp158.c +++ b/drivers/gpu/drm/bridge/ti-tdp158.c @@ -33,11 +33,12 @@ static void tdp158_enable(struct drm_bridge *bridge, dev_err(tdp158->dev, "failed to enable vdd: %d", err); =20 gpiod_set_value_cansleep(tdp158->enable, 1); } =20 -static void tdp158_disable(struct drm_bridge *bridge, struct drm_bridge_st= ate *prev) +static void tdp158_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct tdp158 *tdp158 =3D bridge->driver_private; =20 gpiod_set_value_cansleep(tdp158->enable, 0); regulator_disable(tdp158->vdd); diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index 7d9d176347f37569dddeb8fc0dbdcdebe4445a60..198083cacfc0924f1fd3bcf7a6a= 690f4e5779de0 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -569,19 +569,11 @@ void drm_atomic_bridge_chain_disable(struct drm_bridg= e *bridge, return; =20 encoder =3D bridge->encoder; list_for_each_entry_reverse(iter, &encoder->bridge_chain, chain_node) { if (iter->funcs->atomic_disable) { - struct drm_bridge_state *old_bridge_state; - - old_bridge_state =3D - drm_atomic_get_old_bridge_state(old_state, - iter); - if (WARN_ON(!old_bridge_state)) - return; - - iter->funcs->atomic_disable(iter, old_bridge_state); + iter->funcs->atomic_disable(iter, old_state); } else if (iter->funcs->disable) { iter->funcs->disable(iter); } =20 if (iter =3D=3D bridge) diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/in= genic/ingenic-drm-drv.c index e52d8c4f0b7e93d6be88e3b3897e711a12bc70c1..20b93fff023995062096941ae57= 1756185688387 100644 --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c @@ -258,11 +258,11 @@ static void ingenic_drm_crtc_atomic_enable(struct drm= _crtc *crtc, =20 drm_crtc_vblank_on(crtc); } =20 static void ingenic_drm_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct ingenic_drm *priv =3D drm_device_get_priv(bridge->dev); unsigned int var; =20 regmap_update_bits(priv->map, JZ_REG_LCD_CTRL, diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c b/drivers/gpu/drm/mediatek/m= tk_dp.c index bd67423556b789be74fe648fd5ca6141a8ab9fb8..3d4648d2e15f1a1a3c6ae596e1a= 35cd654fcc35c 100644 --- a/drivers/gpu/drm/mediatek/mtk_dp.c +++ b/drivers/gpu/drm/mediatek/mtk_dp.c @@ -2398,11 +2398,11 @@ static void mtk_dp_bridge_atomic_enable(struct drm_= bridge *bridge, DP_PWR_STATE_BANDGAP_TPLL, DP_PWR_STATE_MASK); } =20 static void mtk_dp_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { struct mtk_dp *mtk_dp =3D mtk_dp_from_bridge(bridge); =20 mtk_dp->enabled =3D false; mtk_dp_update_plugged_status(mtk_dp); diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/= mtk_dsi.c index be21f8e643172b5fe07ce640af2c33f060a3bb24..661db80b2377fce4ea09a46c4ad= 19a58fab3fe7d 100644 --- a/drivers/gpu/drm/mediatek/mtk_dsi.c +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c @@ -824,11 +824,11 @@ static void mtk_dsi_bridge_mode_set(struct drm_bridge= *bridge, =20 drm_display_mode_to_videomode(adjusted, &dsi->vm); } =20 static void mtk_dsi_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct mtk_dsi *dsi =3D bridge_to_dsi(bridge); =20 mtk_output_dsi_disable(dsi); } diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek= /mtk_hdmi.c index a1904480fff8dcc0b4f3da883b9abe3238653253..602c9d348a7d3ec4f0ba1338650= 8c531772b6e14 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c @@ -1307,11 +1307,11 @@ static bool mtk_hdmi_bridge_mode_fixup(struct drm_b= ridge *bridge, { return true; } =20 static void mtk_hdmi_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct mtk_hdmi *hdmi =3D hdmi_ctx_from_bridge(bridge); =20 if (!hdmi->enabled) return; diff --git a/drivers/gpu/drm/meson/meson_encoder_cvbs.c b/drivers/gpu/drm/m= eson/meson_encoder_cvbs.c index b535e74345f02079e22a18c8d991adeb03c5e41a..e79f7c3ce32efa8e5fe7afe274f= e991ac363b734 100644 --- a/drivers/gpu/drm/meson/meson_encoder_cvbs.c +++ b/drivers/gpu/drm/meson/meson_encoder_cvbs.c @@ -188,11 +188,11 @@ static void meson_encoder_cvbs_atomic_enable(struct d= rm_bridge *bridge, regmap_write(priv->hhi, HHI_VDAC_CNTL1_G12A, 0); } } =20 static void meson_encoder_cvbs_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct meson_encoder_cvbs *meson_encoder_cvbs =3D bridge_to_meson_encoder_cvbs(bridge); struct meson_drm *priv =3D meson_encoder_cvbs->priv; =20 diff --git a/drivers/gpu/drm/meson/meson_encoder_dsi.c b/drivers/gpu/drm/me= son/meson_encoder_dsi.c index 140b3604dba10ac2aabadae065c2d9de8169ed03..fe204437bd6576a258dc11319e2= b905f170a24a1 100644 --- a/drivers/gpu/drm/meson/meson_encoder_dsi.c +++ b/drivers/gpu/drm/meson/meson_encoder_dsi.c @@ -77,11 +77,11 @@ static void meson_encoder_dsi_atomic_enable(struct drm_= bridge *bridge, =20 writel_relaxed(1, priv->io_base + _REG(ENCL_VIDEO_EN)); } =20 static void meson_encoder_dsi_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct meson_encoder_dsi *meson_encoder_dsi =3D bridge_to_meson_encoder_dsi(bridge); struct meson_drm *priv =3D meson_encoder_dsi->priv; =20 diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/m= eson/meson_encoder_hdmi.c index 7544c4e6af635b7e612a1a970987e0e15e054cf1..6d1c9262a2cfb7b08a68efb8682= 1bf5ecf8c0941 100644 --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c @@ -247,11 +247,11 @@ static void meson_encoder_hdmi_atomic_enable(struct d= rm_bridge *bridge, else writel_relaxed(1, priv->io_base + _REG(ENCP_VIDEO_EN)); } =20 static void meson_encoder_hdmi_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct meson_encoder_hdmi *encoder_hdmi =3D bridge_to_meson_encoder_hdmi(= bridge); struct meson_drm *priv =3D encoder_hdmi->priv; =20 writel_bits_relaxed(0x3, 0, diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index ffb9c80543ad2306b2148b6f05a803d7634334d5..77948f0514de572caa9bc776a3d= 0fc178bf3bd51 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1550,11 +1550,11 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge = *drm_bridge, drm_dbg_dp(dp->drm_dev, "type=3D%d Done\n", dp->connector_type); mutex_unlock(&msm_dp_display->event_mutex); } =20 void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(drm_bridge); struct msm_dp *dp =3D msm_dp_bridge->msm_dp_display; struct msm_dp_display_private *msm_dp_display; =20 diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_dr= m.c index eae8e849edc54da1faa9c557757873561fa223a1..84ecec79467dcb1d3c35abf422b= 1d6b7caf8d0ee 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.c +++ b/drivers/gpu/drm/msm/dp/dp_drm.c @@ -164,13 +164,12 @@ static void msm_edp_bridge_atomic_enable(struct drm_b= ridge *drm_bridge, =20 msm_dp_bridge_atomic_enable(drm_bridge, state); } =20 static void msm_edp_bridge_atomic_disable(struct drm_bridge *drm_bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *atomic_state) { - struct drm_atomic_state *atomic_state =3D old_bridge_state->base.state; struct drm_crtc *crtc; struct drm_crtc_state *new_crtc_state =3D NULL, *old_crtc_state =3D NULL; struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(drm_bridge); struct msm_dp *dp =3D msm_dp_bridge->msm_dp_display; =20 @@ -205,11 +204,11 @@ static void msm_edp_bridge_atomic_disable(struct drm_= bridge *drm_bridge, msm_dp_display_set_psr(dp, false); return; } =20 out: - msm_dp_bridge_atomic_disable(drm_bridge, old_bridge_state); + msm_dp_bridge_atomic_disable(drm_bridge, atomic_state); } =20 static void msm_edp_bridge_atomic_post_disable(struct drm_bridge *drm_brid= ge, struct drm_bridge_state *old_bridge_state) { diff --git a/drivers/gpu/drm/msm/dp/dp_drm.h b/drivers/gpu/drm/msm/dp/dp_dr= m.h index d54253ecbbff85f06112a1f62981c724774c237a..faf31a9da752c9ea65e80c8c958= 96fef39ffa8a8 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.h +++ b/drivers/gpu/drm/msm/dp/dp_drm.h @@ -26,11 +26,11 @@ int msm_dp_bridge_init(struct msm_dp *msm_dp_display, s= truct drm_device *dev, bool yuv_supported); =20 void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge, struct drm_atomic_state *state); void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge, - struct drm_bridge_state *old_bridge_state); + struct drm_atomic_state *state); void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge, struct drm_bridge_state *old_bridge_state); enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge, const struct drm_display_info *info, const struct drm_display_mode *mode); diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi4.c b/drivers/gpu/drm/omapdrm/= dss/hdmi4.c index c43f4a5218d1227a7431cccb015530e1b1543329..e1ac447221ee5ae5ee50637acfc= 8a30a8f111850 100644 --- a/drivers/gpu/drm/omapdrm/dss/hdmi4.c +++ b/drivers/gpu/drm/omapdrm/dss/hdmi4.c @@ -407,11 +407,11 @@ static void hdmi4_bridge_enable(struct drm_bridge *br= idge, done: mutex_unlock(&hdmi->lock); } =20 static void hdmi4_bridge_disable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct omap_hdmi *hdmi =3D drm_bridge_to_hdmi(bridge); unsigned long flags; =20 mutex_lock(&hdmi->lock); diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi5.c b/drivers/gpu/drm/omapdrm/= dss/hdmi5.c index 49a4d31243e7dbb4ad6a9136e16032fd15dbe607..fa9904e4c218235bafa87be6006= 80b3e5d5e2ea5 100644 --- a/drivers/gpu/drm/omapdrm/dss/hdmi5.c +++ b/drivers/gpu/drm/omapdrm/dss/hdmi5.c @@ -405,11 +405,11 @@ static void hdmi5_bridge_enable(struct drm_bridge *br= idge, done: mutex_unlock(&hdmi->lock); } =20 static void hdmi5_bridge_disable(struct drm_bridge *bridge, - struct drm_bridge_state *bridge_state) + struct drm_atomic_state *state) { struct omap_hdmi *hdmi =3D drm_bridge_to_hdmi(bridge); unsigned long flags; =20 mutex_lock(&hdmi->lock); diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c b/drivers/gpu/drm/= renesas/rcar-du/rcar_lvds.c index 86e112fe1fc44603585d916fc70c0a3bd7ab1313..380a855b832af9c09652ce39a78= f974b63d949bb 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c @@ -593,11 +593,11 @@ static void rcar_lvds_atomic_enable(struct drm_bridge= *bridge, =20 rcar_lvds_enable(bridge, state, crtc, connector); } =20 static void rcar_lvds_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct rcar_lvds *lvds =3D bridge_to_rcar_lvds(bridge); =20 /* * For D3 and E3, disabling the LVDS encoder before the DU would stall diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c b/drivers/gpu/= drm/renesas/rcar-du/rcar_mipi_dsi.c index 4c8f63bd106e12b62e6c5006a439305f979beb64..d1e626068065c559a708772d3bb= f16efe166ff59 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c @@ -814,11 +814,11 @@ static void rcar_mipi_dsi_atomic_enable(struct drm_br= idge *bridge, =20 rcar_mipi_dsi_start_video(dsi); } =20 static void rcar_mipi_dsi_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct rcar_mipi_dsi *dsi =3D bridge_to_rcar_mipi_dsi(bridge); =20 rcar_mipi_dsi_stop_video(dsi); } diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c b/drivers/gpu/d= rm/renesas/rz-du/rzg2l_mipi_dsi.c index 1eafb637092b1731a606ed50d7cc8f89a7964606..4550c6d847962f06886f2b7645b= ae73646f1ffb6 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c @@ -565,11 +565,11 @@ static void rzg2l_mipi_dsi_atomic_enable(struct drm_b= ridge *bridge, err_stop: rzg2l_mipi_dsi_stop(dsi); } =20 static void rzg2l_mipi_dsi_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct rzg2l_mipi_dsi *dsi =3D bridge_to_rzg2l_mipi_dsi(bridge); =20 rzg2l_mipi_dsi_stop_video(dsi); rzg2l_mipi_dsi_stop_hs_clock(dsi); diff --git a/drivers/gpu/drm/stm/lvds.c b/drivers/gpu/drm/stm/lvds.c index 7ec44f2264038c3642c40202bc014c438ecee104..4613e8e3b8fddc4455be0e3f81e= 0e811418746a0 100644 --- a/drivers/gpu/drm/stm/lvds.c +++ b/drivers/gpu/drm/stm/lvds.c @@ -1014,11 +1014,11 @@ static void lvds_atomic_enable(struct drm_bridge *b= ridge, drm_panel_enable(lvds->panel); } } =20 static void lvds_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct stm_lvds *lvds =3D bridge_to_stm_lvds(bridge); =20 if (lvds->panel) { drm_panel_disable(lvds->panel); diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c index 59d881ddf0eebf1265875c3cad7cce45990cde4d..60b300db52d24af6a04131c99cf= dc05b6e9509aa 100644 --- a/drivers/gpu/drm/vc4/vc4_dsi.c +++ b/drivers/gpu/drm/vc4/vc4_dsi.c @@ -798,11 +798,11 @@ dsi_esc_timing(u32 ns) { return DIV_ROUND_UP(ns, ESC_TIME_NS); } =20 static void vc4_dsi_bridge_disable(struct drm_bridge *bridge, - struct drm_bridge_state *state) + struct drm_atomic_state *state) { struct vc4_dsi *dsi =3D bridge_to_vc4_dsi(bridge); u32 disp0_ctrl; =20 disp0_ctrl =3D DSI_PORT_READ(DISP0_CTRL); diff --git a/drivers/gpu/drm/xlnx/zynqmp_dp.c b/drivers/gpu/drm/xlnx/zynqmp= _dp.c index 1715e42d0b70cb23cfb4eeeefd851299cf6d46a4..1f57935478d395b75842afccf67= 70ccb8d76c0d9 100644 --- a/drivers/gpu/drm/xlnx/zynqmp_dp.c +++ b/drivers/gpu/drm/xlnx/zynqmp_dp.c @@ -1623,12 +1623,14 @@ static void zynqmp_dp_bridge_atomic_enable(struct d= rm_bridge *bridge, ZYNQMP_DP_SOFTWARE_RESET_ALL); zynqmp_dp_write(dp, ZYNQMP_DP_MAIN_STREAM_ENABLE, 1); } =20 static void zynqmp_dp_bridge_atomic_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { + struct drm_bridge_state *old_bridge_state =3D drm_atomic_get_old_bridge_s= tate(state, + bridge); struct zynqmp_dp *dp =3D bridge_to_dp(bridge); =20 mutex_lock(&dp->lock); dp->enabled =3D false; cancel_work(&dp->hpd_work); diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index 4c5e231230301f08ed568edbb4b6b2020234c012..087752226bf9c25b47838be265a= d2e4c3070bc7e 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -340,11 +340,11 @@ struct drm_bridge_funcs { * signals) feeding it is still running when this callback is called. * * The @atomic_disable callback is optional. */ void (*atomic_disable)(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state); + struct drm_atomic_state *state); =20 /** * @atomic_post_disable: * * This callback should disable the bridge. It is called right after the --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 88F242222C7 for ; Thu, 13 Feb 2025 14:44:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457849; cv=none; b=VVl3U7164eKPvrj3EMNeew7xzowgLZN+XXN/YvvdMInpvd6cmUl6kUELH3ZONFgIDP4N9CLdvbL444SSjp9g9FS3mKtuku8GlQGq4sorYxTAXxI28QIsxrtQgy+JDR1yOMkCtCoL7BeckNby/dHW/DXJFD84s6XdBCDLHeEKx9o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457849; c=relaxed/simple; bh=2xfZrbgKwikKjZhrmr2KHwjOjjS2JcCwpBgKdzYX6EM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Jl+0brNrYUVbmldrjxJ6372qeAeJiK2tdDazN0ZWeckSWB/XlyiWasCdO0NBDD1hqGcByu1smV5JGonkXOkj14z8rRbO49WDm0CXNJKL/CvjbZr95q/Ue5R1cLK1RcIU0fenxLh8LOrQYNnNAH1VKeRpI/zbaHsNJBfeEfABNMY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=W9TXMung; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="W9TXMung" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 14B89C4CEE4; Thu, 13 Feb 2025 14:44:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457849; bh=2xfZrbgKwikKjZhrmr2KHwjOjjS2JcCwpBgKdzYX6EM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=W9TXMung3NnULbNVGDLDBiKEuGCecOmzO6C7mY+0FIsBMJC2UFU7nV8VULXr1gBNH V8lJMpSkvd/wEt5/5EgkKNxJVtA5BrwDpRnOKxmOLXpvRpQnebp8l19yPcQ6E3LtdO NcWa9raddijsHYnMbko0S1ZSSPFAmY53WpDLtU3WW9FZ8bGFn6avbWTTW08heYvYm2 5arLYFu8xcskrvtVWTJ5vMNq+XA2ZIf1P+GSipap3UnevbBJujVIW6VD8/1/PQk1Es KmeokO6uox3gakILYDrOz1n5NEqwZ1JVE4CWOVdgvo1ZG7lJ3xFwHKJwgbLmOBRxpK awrfhYbn321qQ== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:24 +0100 Subject: [PATCH v3 05/37] drm/bridge: Pass full state to atomic_post_disable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-5-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=18873; i=mripard@kernel.org; h=from:subject:message-id; bh=2xfZrbgKwikKjZhrmr2KHwjOjjS2JcCwpBgKdzYX6EM=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWCXa4i/vze1Y86SyU73D8c+1d4GBC478Trv8ZNLaM 8y29w0UO6ayMAhzMsiKKbI8kQk7vbx9cZWD/cofMHNYmUCGMHBxCsBERJwYa0X3P4vj/rxqab2t zZe29iV6VmUmb5dEz2rh05+78N+dT5UvlHO/RrP6lH85LyN6JWT+dcb6+k/G8T/uHNdMOirLHaB vElp181IU4yqL8q38LsLGO9drf9gUefSHudatlhDOM/XXK8sB X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D It's pretty inconvenient to access the full atomic state from drm_bridges, so let's change the atomic_post_disable hook prototype to pass it directly. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard Reviewed-by: Douglas Anderson Tested-by: Douglas Anderson --- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 6 ++---- drivers/gpu/drm/bridge/chipone-icn6211.c | 2 +- drivers/gpu/drm/bridge/ite-it6505.c | 2 +- drivers/gpu/drm/bridge/lontium-lt9611.c | 5 ++--- drivers/gpu/drm/bridge/panel.c | 3 +-- drivers/gpu/drm/bridge/parade-ps8640.c | 2 +- drivers/gpu/drm/bridge/samsung-dsim.c | 2 +- drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 2 +- drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c | 2 +- drivers/gpu/drm/bridge/tc358762.c | 3 ++- drivers/gpu/drm/bridge/ti-dlpc3433.c | 2 +- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 2 +- drivers/gpu/drm/drm_bridge.c | 16 +++------------- drivers/gpu/drm/mediatek/mtk_dsi.c | 2 +- drivers/gpu/drm/mediatek/mtk_hdmi.c | 2 +- drivers/gpu/drm/msm/dp/dp_display.c | 14 +++++++------- drivers/gpu/drm/msm/dp/dp_drm.c | 5 ++--- drivers/gpu/drm/msm/dp/dp_drm.h | 2 +- drivers/gpu/drm/vc4/vc4_dsi.c | 2 +- include/drm/drm_bridge.h | 2 +- 20 files changed, 32 insertions(+), 46 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index 5ebda1ca880439db8fbfa048be7274f763b82f51..60ce33eadd97548c39201332e26= b56e71245253a 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1359,15 +1359,13 @@ static void analogix_dp_bridge_atomic_disable(struc= t drm_bridge *bridge, } =20 analogix_dp_bridge_disable(bridge); } =20 -static void -analogix_dp_bridge_atomic_post_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void analogix_dp_bridge_atomic_post_disable(struct drm_bridge *brid= ge, + struct drm_atomic_state *old_state) { - struct drm_atomic_state *old_state =3D old_bridge_state->base.state; struct analogix_dp_device *dp =3D bridge->driver_private; struct drm_crtc *crtc; struct drm_crtc_state *new_crtc_state; int ret; =20 diff --git a/drivers/gpu/drm/bridge/chipone-icn6211.c b/drivers/gpu/drm/bri= dge/chipone-icn6211.c index 2d9e3add135c45f63966ee9df8d4cbe3b215aa1f..81f7c701961fddadbced6e4ad1b= f9f12d3325fa7 100644 --- a/drivers/gpu/drm/bridge/chipone-icn6211.c +++ b/drivers/gpu/drm/bridge/chipone-icn6211.c @@ -479,11 +479,11 @@ static void chipone_atomic_pre_enable(struct drm_brid= ge *bridge, =20 usleep_range(10000, 11000); } =20 static void chipone_atomic_post_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct chipone *icn =3D bridge_to_chipone(bridge); =20 clk_disable_unprepare(icn->refclk); =20 diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index d8265a205c0dc17e38c426e225e33c361a41a256..8a607558ac89ed2961d13515d98= 7c141f2b6e116 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -3262,11 +3262,11 @@ static void it6505_bridge_atomic_pre_enable(struct = drm_bridge *bridge, =20 pm_runtime_get_sync(dev); } =20 static void it6505_bridge_atomic_post_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { struct it6505 *it6505 =3D bridge_to_it6505(bridge); struct device *dev =3D it6505->dev; =20 DRM_DEV_DEBUG_DRIVER(dev, "start"); diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c b/drivers/gpu/drm/brid= ge/lontium-lt9611.c index bacc8d373fe7c8af1370afef2588d9c41fd7f5f3..026803034231f78c17f619dc041= 19bdd9b2b6679 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9611.c +++ b/drivers/gpu/drm/bridge/lontium-lt9611.c @@ -781,13 +781,12 @@ static void lt9611_bridge_atomic_pre_enable(struct dr= m_bridge *bridge, reg_cfg, ARRAY_SIZE(reg_cfg)); =20 lt9611->sleep =3D false; } =20 -static void -lt9611_bridge_atomic_post_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) +static void lt9611_bridge_atomic_post_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct lt9611 *lt9611 =3D bridge_to_lt9611(bridge); =20 lt9611_sleep_setup(lt9611); } diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c index 4ac9d32c701eb84df1fdff7d4ef06106bfd2e51d..890bd45c46eda8366e44974e3ec= 5891aa473fd00 100644 --- a/drivers/gpu/drm/bridge/panel.c +++ b/drivers/gpu/drm/bridge/panel.c @@ -164,14 +164,13 @@ static void panel_bridge_atomic_disable(struct drm_br= idge *bridge, =20 drm_panel_disable(panel_bridge->panel); } =20 static void panel_bridge_atomic_post_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *atomic_state) { struct panel_bridge *panel_bridge =3D drm_bridge_to_panel_bridge(bridge); - struct drm_atomic_state *atomic_state =3D old_bridge_state->base.state; struct drm_encoder *encoder =3D bridge->encoder; struct drm_crtc *crtc; struct drm_crtc_state *new_crtc_state; =20 crtc =3D drm_atomic_get_old_crtc_for_encoder(atomic_state, encoder); diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridg= e/parade-ps8640.c index 7ec674bffa81327ebeacecce091364e0f3e9a4f9..a42138b33258a48a303a97fbb07= 504893aeafaf7 100644 --- a/drivers/gpu/drm/bridge/parade-ps8640.c +++ b/drivers/gpu/drm/bridge/parade-ps8640.c @@ -470,11 +470,11 @@ static void ps8640_atomic_pre_enable(struct drm_bridg= e *bridge, =20 ps_bridge->pre_enabled =3D true; } =20 static void ps8640_atomic_post_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct ps8640 *ps_bridge =3D bridge_to_ps8640(bridge); =20 ps_bridge->pre_enabled =3D false; =20 diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge= /samsung-dsim.c index 4a75a49110bca0e4ce71fbb81081fbffd7d72465..54de6ed2fae81bc13301a6b1ee8= f38183a3118b6 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -1506,11 +1506,11 @@ static void samsung_dsim_atomic_disable(struct drm_= bridge *bridge, samsung_dsim_set_display_enable(dsi, false); dsi->state &=3D ~DSIM_STATE_VIDOUT_AVAILABLE; } =20 static void samsung_dsim_atomic_post_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct samsung_dsim *dsi =3D bridge_to_dsi(bridge); =20 dsi->state &=3D ~DSIM_STATE_ENABLED; pm_runtime_put_sync(dsi->dev); diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/dr= m/bridge/synopsys/dw-mipi-dsi.c index f9371b19a476bbba17165632e4f2230ac9d48e9d..2b6e70a49f438c475bc60d9595b= f246a9e54995b 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c @@ -932,11 +932,11 @@ static void dw_mipi_dsi_clear_err(struct dw_mipi_dsi = *dsi) dsi_write(dsi, DSI_INT_MSK0, 0); dsi_write(dsi, DSI_INT_MSK1, 0); } =20 static void dw_mipi_dsi_bridge_post_atomic_disable(struct drm_bridge *brid= ge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct dw_mipi_dsi *dsi =3D bridge_to_dsi(bridge); const struct dw_mipi_dsi_phy_ops *phy_ops =3D dsi->plat_data->phy_ops; =20 /* diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c b/drivers/gpu/d= rm/bridge/synopsys/dw-mipi-dsi2.c index 1d9d16fbcc7f2231fa71cc6a22a34be6f2ba46fd..5fd7a459efdd4fc4884cdf77ffe= dc19c36d1ca13 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c @@ -743,11 +743,11 @@ static int dw_mipi_dsi2_bridge_atomic_check(struct dr= m_bridge *bridge, =20 return 0; } =20 static void dw_mipi_dsi2_bridge_post_atomic_disable(struct drm_bridge *bri= dge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct dw_mipi_dsi2 *dsi2 =3D bridge_to_dsi2(bridge); const struct dw_mipi_dsi2_phy_ops *phy_ops =3D dsi2->plat_data->phy_ops; =20 regmap_write(dsi2->regmap, DSI2_IPI_PIX_PKT_CFG, 0); diff --git a/drivers/gpu/drm/bridge/tc358762.c b/drivers/gpu/drm/bridge/tc3= 58762.c index 6ed8ae6ffc3defa9857397a7f47d44195ac0f774..49c76027f8316967ea4f7d7dfb8= 5920a025b6df9 100644 --- a/drivers/gpu/drm/bridge/tc358762.c +++ b/drivers/gpu/drm/bridge/tc358762.c @@ -147,11 +147,12 @@ static int tc358762_init(struct tc358762 *ctx) msleep(100); =20 return tc358762_clear_error(ctx); } =20 -static void tc358762_post_disable(struct drm_bridge *bridge, struct drm_br= idge_state *state) +static void tc358762_post_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct tc358762 *ctx =3D bridge_to_tc358762(bridge); int ret; =20 /* diff --git a/drivers/gpu/drm/bridge/ti-dlpc3433.c b/drivers/gpu/drm/bridge/= ti-dlpc3433.c index 963af4fc28a88f7ed0b0f01933d96dd8077c6602..85f2a0e74a1c8aaa272ce828ad1= c82660503b7a8 100644 --- a/drivers/gpu/drm/bridge/ti-dlpc3433.c +++ b/drivers/gpu/drm/bridge/ti-dlpc3433.c @@ -191,11 +191,11 @@ static void dlpc_atomic_pre_enable(struct drm_bridge = *bridge, =20 msleep(10); } =20 static void dlpc_atomic_post_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct dlpc *dlpc =3D bridge_to_dlpc(bridge); =20 regulator_disable(dlpc->vcc_flsh); regulator_disable(dlpc->vcc_intf); diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge= /ti-sn65dsi86.c index 38f30aad7d9b72083272702c8bda73e61dbe0267..ae34585e05b307934d9fbf0dfd7= ad159a99d4c17 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -1176,11 +1176,11 @@ static void ti_sn_bridge_atomic_pre_enable(struct d= rm_bridge *bridge, /* td7: min 100 us after enable before DSI data */ usleep_range(100, 110); } =20 static void ti_sn_bridge_atomic_post_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct ti_sn65dsi86 *pdata =3D bridge_to_ti_sn65dsi86(bridge); =20 /* semi auto link training mode OFF */ regmap_write(pdata->regmap, SN_ML_TX_MODE_REG, 0); diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index 198083cacfc0924f1fd3bcf7a6a690f4e5779de0..cb71ec57c47af889c2028c74d0b= bcfa2fed1f88b 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -583,24 +583,14 @@ void drm_atomic_bridge_chain_disable(struct drm_bridg= e *bridge, EXPORT_SYMBOL(drm_atomic_bridge_chain_disable); =20 static void drm_atomic_bridge_call_post_disable(struct drm_bridge *bridge, struct drm_atomic_state *old_state) { - if (old_state && bridge->funcs->atomic_post_disable) { - struct drm_bridge_state *old_bridge_state; - - old_bridge_state =3D - drm_atomic_get_old_bridge_state(old_state, - bridge); - if (WARN_ON(!old_bridge_state)) - return; - - bridge->funcs->atomic_post_disable(bridge, - old_bridge_state); - } else if (bridge->funcs->post_disable) { + if (old_state && bridge->funcs->atomic_post_disable) + bridge->funcs->atomic_post_disable(bridge, old_state); + else if (bridge->funcs->post_disable) bridge->funcs->post_disable(bridge); - } } =20 /** * drm_atomic_bridge_chain_post_disable - cleans up after disabling all br= idges * in the encoder chain diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/= mtk_dsi.c index 661db80b2377fce4ea09a46c4ad19a58fab3fe7d..b50dc9a013ac5a50e464134f548= fa773a5662138 100644 --- a/drivers/gpu/drm/mediatek/mtk_dsi.c +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c @@ -854,11 +854,11 @@ static void mtk_dsi_bridge_atomic_pre_enable(struct d= rm_bridge *bridge, if (ret < 0) DRM_ERROR("failed to power on dsi\n"); } =20 static void mtk_dsi_bridge_atomic_post_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct mtk_dsi *dsi =3D bridge_to_dsi(bridge); =20 mtk_dsi_poweroff(dsi); } diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek= /mtk_hdmi.c index 602c9d348a7d3ec4f0ba13386508c531772b6e14..ac5e40c2761710dfbe722e1ba56= 9d76e4cd5b8fb 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c @@ -1324,11 +1324,11 @@ static void mtk_hdmi_bridge_atomic_disable(struct d= rm_bridge *bridge, =20 hdmi->enabled =3D false; } =20 static void mtk_hdmi_bridge_atomic_post_disable(struct drm_bridge *bridge, - struct drm_bridge_state *old_state) + struct drm_atomic_state *state) { struct mtk_hdmi *hdmi =3D hdmi_ctx_from_bridge(bridge); =20 if (!hdmi->powered) return; diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/d= p_display.c index 77948f0514de572caa9bc776a3d0fc178bf3bd51..8b1cc8f166b86678ac348eea987= 54e9b75fc7436 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1562,33 +1562,33 @@ void msm_dp_bridge_atomic_disable(struct drm_bridge= *drm_bridge, =20 msm_dp_ctrl_push_idle(msm_dp_display->ctrl); } =20 void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *state) { struct msm_dp_bridge *msm_dp_bridge =3D to_dp_bridge(drm_bridge); struct msm_dp *dp =3D msm_dp_bridge->msm_dp_display; - u32 state; + u32 hpd_state; struct msm_dp_display_private *msm_dp_display; =20 msm_dp_display =3D container_of(dp, struct msm_dp_display_private, msm_dp= _display); =20 if (dp->is_edp) msm_dp_hpd_unplug_handle(msm_dp_display, 0); =20 mutex_lock(&msm_dp_display->event_mutex); =20 - state =3D msm_dp_display->hpd_state; - if (state !=3D ST_DISCONNECT_PENDING && state !=3D ST_CONNECTED) + hpd_state =3D msm_dp_display->hpd_state; + if (hpd_state !=3D ST_DISCONNECT_PENDING && hpd_state !=3D ST_CONNECTED) drm_dbg_dp(dp->drm_dev, "type=3D%d wrong hpd_state=3D%d\n", - dp->connector_type, state); + dp->connector_type, hpd_state); =20 msm_dp_display_disable(msm_dp_display); =20 - state =3D msm_dp_display->hpd_state; - if (state =3D=3D ST_DISCONNECT_PENDING) { + hpd_state =3D msm_dp_display->hpd_state; + if (hpd_state =3D=3D ST_DISCONNECT_PENDING) { /* completed disconnection */ msm_dp_display->hpd_state =3D ST_DISCONNECTED; } else { msm_dp_display->hpd_state =3D ST_DISPLAY_OFF; } diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_dr= m.c index 84ecec79467dcb1d3c35abf422b1d6b7caf8d0ee..dc888f8269d698daa046d5a861a= 2a8bd80aa76d3 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.c +++ b/drivers/gpu/drm/msm/dp/dp_drm.c @@ -208,13 +208,12 @@ static void msm_edp_bridge_atomic_disable(struct drm_= bridge *drm_bridge, out: msm_dp_bridge_atomic_disable(drm_bridge, atomic_state); } =20 static void msm_edp_bridge_atomic_post_disable(struct drm_bridge *drm_brid= ge, - struct drm_bridge_state *old_bridge_state) + struct drm_atomic_state *atomic_state) { - struct drm_atomic_state *atomic_state =3D old_bridge_state->base.state; struct drm_crtc *crtc; struct drm_crtc_state *new_crtc_state =3D NULL; =20 crtc =3D drm_atomic_get_old_crtc_for_encoder(atomic_state, drm_bridge->encoder); @@ -229,11 +228,11 @@ static void msm_edp_bridge_atomic_post_disable(struct= drm_bridge *drm_bridge, * Self refresh mode is already set in msm_edp_bridge_atomic_disable. */ if (new_crtc_state->self_refresh_active) return; =20 - msm_dp_bridge_atomic_post_disable(drm_bridge, old_bridge_state); + msm_dp_bridge_atomic_post_disable(drm_bridge, atomic_state); } =20 /** * msm_edp_bridge_mode_valid - callback to determine if specified mode is = valid * @bridge: Pointer to drm bridge structure diff --git a/drivers/gpu/drm/msm/dp/dp_drm.h b/drivers/gpu/drm/msm/dp/dp_dr= m.h index faf31a9da752c9ea65e80c8c95896fef39ffa8a8..d8c9b905f8bfb5abe47c1cb26d1= 7bc605e3e1ba6 100644 --- a/drivers/gpu/drm/msm/dp/dp_drm.h +++ b/drivers/gpu/drm/msm/dp/dp_drm.h @@ -28,11 +28,11 @@ int msm_dp_bridge_init(struct msm_dp *msm_dp_display, s= truct drm_device *dev, void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge, struct drm_atomic_state *state); void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge, struct drm_atomic_state *state); void msm_dp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge, - struct drm_bridge_state *old_bridge_state); + struct drm_atomic_state *state); enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge, const struct drm_display_info *info, const struct drm_display_mode *mode); void msm_dp_bridge_mode_set(struct drm_bridge *drm_bridge, const struct drm_display_mode *mode, diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c index 60b300db52d24af6a04131c99cfdc05b6e9509aa..779b22efe27bffc586a760fdc49= 012e02ac23d0d 100644 --- a/drivers/gpu/drm/vc4/vc4_dsi.c +++ b/drivers/gpu/drm/vc4/vc4_dsi.c @@ -809,11 +809,11 @@ static void vc4_dsi_bridge_disable(struct drm_bridge = *bridge, disp0_ctrl &=3D ~DSI_DISP0_ENABLE; DSI_PORT_WRITE(DISP0_CTRL, disp0_ctrl); } =20 static void vc4_dsi_bridge_post_disable(struct drm_bridge *bridge, - struct drm_bridge_state *state) + struct drm_atomic_state *state) { struct vc4_dsi *dsi =3D bridge_to_vc4_dsi(bridge); struct device *dev =3D &dsi->pdev->dev; =20 clk_disable_unprepare(dsi->pll_phy_clock); diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index 087752226bf9c25b47838be265ad2e4c3070bc7e..d4c75d59fa12be1bd7375ce3ea5= 6415235781b28 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -359,11 +359,11 @@ struct drm_bridge_funcs { * called. * * The @atomic_post_disable callback is optional. */ void (*atomic_post_disable)(struct drm_bridge *bridge, - struct drm_bridge_state *old_bridge_state); + struct drm_atomic_state *state); =20 /** * @atomic_duplicate_state: * * Duplicate the current bridge state object (which is guaranteed to be --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6207624166D for ; Thu, 13 Feb 2025 14:44:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457852; cv=none; b=IuODevc/0YXOR0xOyKEOyzQ4fkx1g1AfCn9hzv0jUcLojYzrkclMTz2OyWFfgOV19kpEfMhErC4+UXDsHN9R8aowiI/gB/UULVJ8D42ocEve5zFFuiF+tbMTO90Y8qZT/dDfivUae+T6pgEKPrcpA5/fB9NgqlP2g+Kg72c9jME= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457852; c=relaxed/simple; bh=yGpnS+bYKk0E6Y2+/FI6asLPESf8ZlRcD1McZsZgydY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VXz6KZKvyOc1fuvx7kZiQOq7WCl9a0r2Whgxbm+IkcJoz81DgwaSPeSLKQI1qCNM0QCYx6lSVPdePA/Hx9JnHzNJITVzltHZvicozwioc0wtZ+eX3sZR5w3Gj5sRmNuXNWCn0E637KPqSwK0eTsYChHFit+FM44DX9Lc5ylDrAI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BRQz/BMK; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BRQz/BMK" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C4C2FC4CEE7; Thu, 13 Feb 2025 14:44:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457852; bh=yGpnS+bYKk0E6Y2+/FI6asLPESf8ZlRcD1McZsZgydY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=BRQz/BMKy+nn7SKUQdVOSM8MJBR5b2wrVf5IhHik2mtfoyduMfZCCspBD35Usd16f 4yeMAVJ1gcbl1Hq8cObOdWiRJPNod6hHPZQIqRxREKpQ+35FA4OeDp3t5xrqqZLltf 0+AqZWziQ4Cgsdi5L4kxEq/MetdKcrxt6oTbaFGKEqge7ioGC/6lt18d3i8nBWoEb9 Lt9t/cbtwEcQBh+yZNxxT6ErVhE/lc5h0FgXyeFlbGdMJ8m6UfOMxKL3gTF32KiHDb 4Fr83buywEMQ+6fITlfrYZCBQOYLA0oFXeKIaGph+frKyBmyPVHgiGTemEFMP2EuwY n2z8zEhxRAg2g== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:25 +0100 Subject: [PATCH v3 06/37] drm/atomic-helper: Fix commit_tail state variable name Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-6-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3086; i=mripard@kernel.org; h=from:subject:message-id; bh=yGpnS+bYKk0E6Y2+/FI6asLPESf8ZlRcD1McZsZgydY=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWCVEHtsY/ZGTm5OyIPTvgUu7lXcZsh0pZOX9M1di+ 0TN1valHVNZGIQ5GWTFFFmeyISdXt6+uMrBfuUPmDmsTCBDGLg4BWAiH+0Z66v39e2Xbe9wvJC9 0Uju65qP505+ePeyOdMxOfmGJ1PGVP/Utf+1PN72XzFYlG2m8cj3K2PDoaNXJgqo8c6JlY1b8S6 F/9re14F7uwOrQg7GL5jyYv9iuSuzlpjuvvXga5Hzwm59yY9mAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Even though the commit_tail () drm_atomic_state parameter is called old_state, it's actually the state being committed which is confusing. It's even more confusing since the atomic_commit_tail hook being called by commit_tail() parameter is called state. Let's rename the variable from old_state to state to make it less confusing. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard --- drivers/gpu/drm/drm_atomic_helper.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index 26bf2465cee7807d640881ddcb8edc2f972e79d1..e8c30e151dc0af13fbf3d282cc8= c5c32ef00c8ee 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1828,13 +1828,13 @@ void drm_atomic_helper_commit_tail_rpm(struct drm_a= tomic_state *old_state) =20 drm_atomic_helper_cleanup_planes(dev, old_state); } EXPORT_SYMBOL(drm_atomic_helper_commit_tail_rpm); =20 -static void commit_tail(struct drm_atomic_state *old_state) +static void commit_tail(struct drm_atomic_state *state) { - struct drm_device *dev =3D old_state->dev; + struct drm_device *dev =3D state->dev; const struct drm_mode_config_helper_funcs *funcs; struct drm_crtc_state *new_crtc_state; struct drm_crtc *crtc; ktime_t start; s64 commit_time_ms; @@ -1852,37 +1852,37 @@ static void commit_tail(struct drm_atomic_state *ol= d_state) * These times will be averaged out in the self refresh helpers to avoid * overreacting over one outlier frame */ start =3D ktime_get(); =20 - drm_atomic_helper_wait_for_fences(dev, old_state, false); + drm_atomic_helper_wait_for_fences(dev, state, false); =20 - drm_atomic_helper_wait_for_dependencies(old_state); + drm_atomic_helper_wait_for_dependencies(state); =20 /* * We cannot safely access new_crtc_state after * drm_atomic_helper_commit_hw_done() so figure out which crtc's have * self-refresh active beforehand: */ - for_each_new_crtc_in_state(old_state, crtc, new_crtc_state, i) + for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) if (new_crtc_state->self_refresh_active) new_self_refresh_mask |=3D BIT(i); =20 if (funcs && funcs->atomic_commit_tail) - funcs->atomic_commit_tail(old_state); + funcs->atomic_commit_tail(state); else - drm_atomic_helper_commit_tail(old_state); + drm_atomic_helper_commit_tail(state); =20 commit_time_ms =3D ktime_ms_delta(ktime_get(), start); if (commit_time_ms > 0) - drm_self_refresh_helper_update_avg_times(old_state, + drm_self_refresh_helper_update_avg_times(state, (unsigned long)commit_time_ms, new_self_refresh_mask); =20 - drm_atomic_helper_commit_cleanup_done(old_state); + drm_atomic_helper_commit_cleanup_done(state); =20 - drm_atomic_state_put(old_state); + drm_atomic_state_put(state); } =20 static void commit_work(struct work_struct *work) { struct drm_atomic_state *state =3D container_of(work, --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6FFE824169F for ; Thu, 13 Feb 2025 14:44:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457855; cv=none; b=aSKE4KOAZsuZV5LU2Cc3HaD7fDRLi/g3g/yyFIb+WTu4JF3vLT2pslXzaMTDSgOJ8d7qe8vs75tUycFokqSe9IX0+siL5GpV2jfq5DUXz7ysx+s7MPRY+dotF7dDNuRIQRe/Yq7xk8KaS+xLqCp50BFQoZQoN9DcTKIuZS/UXIA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457855; c=relaxed/simple; bh=NI6vJLOVBk1TPqBaNUbOq5X/LysolC6w2KpfE4vM87c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QM8fuxDmZ64oxFB0pVLvn5QNdS7uR3NiQetn+u5MBQDpAI7KnjECeXo6nAl88CGvMFgfX/JHrXifwF6DQP04d+iqVSW9FBIGhb/fn1E+5HUM27iU9mtmw3FSeKAjl2f9Q7NYcyN29wEZ5CvXaY8ev50b8Q5IaBmSoFb1Wg9b3tk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=NxOjrP5Y; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="NxOjrP5Y" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D969EC4CEE4; Thu, 13 Feb 2025 14:44:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457855; bh=NI6vJLOVBk1TPqBaNUbOq5X/LysolC6w2KpfE4vM87c=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NxOjrP5YR3HsncOStLOZ7wNXj/K4FAumZOpgmWEQDs/6C7Rp0AQ56F0U9M3Prk+vM 7/BSWtgc1rn7k1DANW1rVK2ksEVfgt1cYr7S/PcRyxgJzAx0QZC33B2cKxNk2OiWh1 aSJweI4vH1Qi5ugbrfIEozm+kreqrmcNCMoH/xD3ule4+kskXKqL2vlz8G6ri0CBnM AqqTApzTnLsceSd17PV4wUr8UHaP19heexsVB+Z21lY02cAswf/Uft5QRLyIc9RDJ/ baL3b19bS+0SoSlWl17bTAfOUbS6xMMREBUU+6QQk7vdHAx6OUCmwqUuIE70++Cn0M MWzaYw8z9WaRg== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:26 +0100 Subject: [PATCH v3 07/37] drm/atomic-helper: Change parameter name of drm_atomic_helper_wait_for_dependencies() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-7-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3070; i=mripard@kernel.org; h=from:subject:message-id; bh=NI6vJLOVBk1TPqBaNUbOq5X/LysolC6w2KpfE4vM87c=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWCWuZE1ZdGYz56L3m/8fvPjumi1PoffXB2ksD8X7d pc0W/9d0TGFhUGYk0FWTJHliUzY6eXti6sc7Ff+gJnDygQyhIGLUwAm0j2ZseH+2g3hf0P462wl HRZlSqxIsbabrd9t+P4b33mHmVJLile+fmKttafS+sWbW4yOFzeJBjCWp8f/u5sx05D/SGBnWdI v7ys6HT2Trnxadm6Op+fXvBBXxVAhpuUcqQaL1y71OfVS1gMA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_helper_wait_for_dependencies() waits for all the dependencies a commit has before going forward with it. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard --- drivers/gpu/drm/drm_atomic_helper.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index e8c30e151dc0af13fbf3d282cc8c5c32ef00c8ee..f859dae58a92d56ebed5a1fd7b2= 243a02b568297 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -2421,48 +2421,48 @@ int drm_atomic_helper_setup_commit(struct drm_atomi= c_state *state, } EXPORT_SYMBOL(drm_atomic_helper_setup_commit); =20 /** * drm_atomic_helper_wait_for_dependencies - wait for required preceding c= ommits - * @old_state: atomic state object with old state structures + * @state: atomic state object being committed * * This function waits for all preceding commits that touch the same CRTC = as - * @old_state to both be committed to the hardware (as signalled by + * @state to both be committed to the hardware (as signalled by * drm_atomic_helper_commit_hw_done()) and executed by the hardware (as si= gnalled * by calling drm_crtc_send_vblank_event() on the &drm_crtc_state.event). * * This is part of the atomic helper support for nonblocking commits, see * drm_atomic_helper_setup_commit() for an overview. */ -void drm_atomic_helper_wait_for_dependencies(struct drm_atomic_state *old_= state) +void drm_atomic_helper_wait_for_dependencies(struct drm_atomic_state *stat= e) { struct drm_crtc *crtc; struct drm_crtc_state *old_crtc_state; struct drm_plane *plane; struct drm_plane_state *old_plane_state; struct drm_connector *conn; struct drm_connector_state *old_conn_state; int i; long ret; =20 - for_each_old_crtc_in_state(old_state, crtc, old_crtc_state, i) { + for_each_old_crtc_in_state(state, crtc, old_crtc_state, i) { ret =3D drm_crtc_commit_wait(old_crtc_state->commit); if (ret) drm_err(crtc->dev, "[CRTC:%d:%s] commit wait timed out\n", crtc->base.id, crtc->name); } =20 - for_each_old_connector_in_state(old_state, conn, old_conn_state, i) { + for_each_old_connector_in_state(state, conn, old_conn_state, i) { ret =3D drm_crtc_commit_wait(old_conn_state->commit); if (ret) drm_err(conn->dev, "[CONNECTOR:%d:%s] commit wait timed out\n", conn->base.id, conn->name); } =20 - for_each_old_plane_in_state(old_state, plane, old_plane_state, i) { + for_each_old_plane_in_state(state, plane, old_plane_state, i) { ret =3D drm_crtc_commit_wait(old_plane_state->commit); if (ret) drm_err(plane->dev, "[PLANE:%d:%s] commit wait timed out\n", plane->base.id, plane->name); --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2245124292E for ; Thu, 13 Feb 2025 14:44:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457858; cv=none; b=qo0bOTnsIMVZRRzvvCVhYkPRcZrvYlqjIehiWCuBk2eiyad10tQ31S0RPXSGH2ySohPDOSmskbYj9IDadh9zwX12t+0Fij6/y70bSRMcQVk+lKZZ/3ImifFMf/5If0CDSE3L3FmfrMzxVwNI4XZEcmThZYuRpxiJlG4go6KOiRY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457858; c=relaxed/simple; bh=VBPbKHLSvmMn3Amvc6nP0KWacSWl+aC0MG5g3q4s2SM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Q3mPnSvE93mTovOrExRr9gCQSBWkBo1sSwCE3XFTCpHlp4q/PP3UHur6Wt5WpRkyNYh8J3haht045Hwbnr19S5C84vWJy+3ef/+ka7WqGkUMfa3/LRjsPBy+sr42xw+iPbaJJwCrf+hUq52CxYd3D6ungZA8BZgDt1f4wrZooP8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KA7ys39B; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="KA7ys39B" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A18FCC4CEE7; Thu, 13 Feb 2025 14:44:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457858; bh=VBPbKHLSvmMn3Amvc6nP0KWacSWl+aC0MG5g3q4s2SM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=KA7ys39BAwx9jAsYwn04zoiMA8wq6sqkMyQT2vsE8rra8EQJAGIZLCfQhXi3Eub5e TsNjaenYrEErAHClhombR5chMUa2qcCWB3SbIKJVdjY4ihYUJM1RNy4zG1FkJ+lphw tfr5FdgmdzjfzG0Z8Ui/lAmMSlwQyXEdzlvDxKEDZa/Xlv0dVU8kANKfRwk4mJMPNW btPhg3tlB7QIc5okLy8yNThK+aItMDcaM79LP8WA2CSsKPNFisOy3AUMC9APIW6yEY b61IXsPO0Eo2kqgdX4QvIFaDrHGNNmyh+7xyniujOYrQgcxNOF90bOe98x5vpWQQRD 497vP6unkuM4A== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:27 +0100 Subject: [PATCH v3 08/37] drm/atomic-helper: Change parameter name of drm_atomic_helper_commit_tail() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-8-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2685; i=mripard@kernel.org; h=from:subject:message-id; bh=VBPbKHLSvmMn3Amvc6nP0KWacSWl+aC0MG5g3q4s2SM=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWCUt1718Nz1V/vmFI+pvHm9dqRO8h2lBznNL23nMd d98guoiO6ayMAhzMsiKKbI8kQk7vbx9cZWD/cofMHNYmUCGMHBxCsBEpK8wNvzhOvCKX821evf5 Yo/za6T+6zW+2P51ssL5WFZTrm1z3jtfst/oJht2b17oB97fy1urDjHWV6pxfRLNYY9/vuHyiaK GaxwLXC77Z+wqvSfldWunYr21VY79t92sS5Y+WS/NIzw15cZpAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_helper_commit_tail() is the final part of an atomic commit, and is given a parameter with the drm_atomic_state being committed. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard --- drivers/gpu/drm/drm_atomic_helper.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index f859dae58a92d56ebed5a1fd7b2243a02b568297..fbff59f9c00e319a7649c6961c6= 0839dc302a44c 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1766,38 +1766,38 @@ void drm_atomic_helper_wait_for_flip_done(struct dr= m_device *dev, } EXPORT_SYMBOL(drm_atomic_helper_wait_for_flip_done); =20 /** * drm_atomic_helper_commit_tail - commit atomic update to hardware - * @old_state: atomic state object with old state structures + * @state: atomic state object being committed * * This is the default implementation for the * &drm_mode_config_helper_funcs.atomic_commit_tail hook, for drivers * that do not support runtime_pm or do not need the CRTC to be * enabled to perform a commit. Otherwise, see * drm_atomic_helper_commit_tail_rpm(). * * Note that the default ordering of how the various stages are called is = to * match the legacy modeset helper library closest. */ -void drm_atomic_helper_commit_tail(struct drm_atomic_state *old_state) +void drm_atomic_helper_commit_tail(struct drm_atomic_state *state) { - struct drm_device *dev =3D old_state->dev; + struct drm_device *dev =3D state->dev; =20 - drm_atomic_helper_commit_modeset_disables(dev, old_state); + drm_atomic_helper_commit_modeset_disables(dev, state); =20 - drm_atomic_helper_commit_planes(dev, old_state, 0); + drm_atomic_helper_commit_planes(dev, state, 0); =20 - drm_atomic_helper_commit_modeset_enables(dev, old_state); + drm_atomic_helper_commit_modeset_enables(dev, state); =20 - drm_atomic_helper_fake_vblank(old_state); + drm_atomic_helper_fake_vblank(state); =20 - drm_atomic_helper_commit_hw_done(old_state); + drm_atomic_helper_commit_hw_done(state); =20 - drm_atomic_helper_wait_for_vblanks(dev, old_state); + drm_atomic_helper_wait_for_vblanks(dev, state); =20 - drm_atomic_helper_cleanup_planes(dev, old_state); + drm_atomic_helper_cleanup_planes(dev, state); } EXPORT_SYMBOL(drm_atomic_helper_commit_tail); =20 /** * drm_atomic_helper_commit_tail_rpm - commit atomic update to hardware --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E64BE245011 for ; Thu, 13 Feb 2025 14:44:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457861; cv=none; b=Ug1X6OVDgur6w2jKYlOuoIDxZR9cu18XoFPrxS5R9O3Mdv2778mnra90dBgteC85XlX3cpni2Ot0cl+vnWBKswc6FXph9y0fDTujHtIlmPdmIiSBjtksiGlpMUIPi+P8sJUq6/t+63rVh/EUZ16a4e/yzn+fmt+nNsyF7lkA/AA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457861; c=relaxed/simple; bh=52uVK/rb7u8V6tG/9ABcRRDv4rmXXJOzJ2Xv/qtF3hQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IRmR53b0y3ViUTkIwHuzFtj5q1rEDf+JA+9IcYacVa2zMAeOdo3g3J9sNLBbshAEpQqkHQi05xHMIgkK7F7MiqYL1YiwwNB31RNOyvlWuCalogi78ecdWmhu+EN2DgwwSTdpMGsQ7EJX/LmG9nWA418aCZ9NeFfSPDmmKaG5NDs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qeob8JLm; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qeob8JLm" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 586ACC4CED1; Thu, 13 Feb 2025 14:44:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457860; bh=52uVK/rb7u8V6tG/9ABcRRDv4rmXXJOzJ2Xv/qtF3hQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=qeob8JLm2puH/aNTZfiQ07qH7ELP3l1Kxlv6Lmw4zrOpb8GVFcHIZ8XnPEnY8neff DebELHRNhcE7W1Uvdjt7PEeA7T6La47ea9LMsp8VdlV8HPWQMSdJtLO/9q4pYMieZq +AGNjah9IlyV6srEYUu7Tr+pFV+wgZ6faC2Y95pjGak6ss5tCSHnecs0ygO4/UHgMR 1bT+Y1YxMCH1I+iD3uXIRxh3xlIDPSMurlVsbz0JzGqtVC3k1/BOSM/ABvgJTBrGgv LER+T+ZeTOB2BK2eIavMMSSFeu8KKHNscxJbieY9ugcomDmMlDSvUd7rGzEA/Cn0GR LfSOEhu0opb1A== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:28 +0100 Subject: [PATCH v3 09/37] drm/atomic-helper: Change parameter name of drm_atomic_helper_commit_tail_rpm() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-9-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2592; i=mripard@kernel.org; h=from:subject:message-id; bh=52uVK/rb7u8V6tG/9ABcRRDv4rmXXJOzJ2Xv/qtF3hQ=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWCV3cxzdW6EeLh8ksfjeH7GQgxZOKmyCGv/nP6qaE e33IVOuYyoLgzAng6yYIssTmbDTy9sXVznYr/wBM4eVCWQIAxenAExkYjRjfb7NVx+LjZxi9Q7m x/1+xe0RTf8X6u5+4ZJBxcMcA68HD+oDT/zdqn/O5VzTpS3aFfyCjA2H+T5mB0+1VZq3b9YMY8/ zC58uU6q8ypO76nGb382iq15VS9mv/ylgEtZn2Sj6Tiv6vBAA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_helper_commit_tail_rpm() is the final part of an atomic commit, and is given the state being committed as a parameter. However, that parameter is named old_state, but documented as the "new modeset state" which is all super confusing. Let's rename that parameter to state. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard --- drivers/gpu/drm/drm_atomic_helper.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index fbff59f9c00e319a7649c6961c60839dc302a44c..e5484ed31cae24700ff64ccbe67= c570bf46b8ddd 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1799,36 +1799,36 @@ void drm_atomic_helper_commit_tail(struct drm_atomi= c_state *state) } EXPORT_SYMBOL(drm_atomic_helper_commit_tail); =20 /** * drm_atomic_helper_commit_tail_rpm - commit atomic update to hardware - * @old_state: new modeset state to be committed + * @state: new modeset state to be committed * * This is an alternative implementation for the * &drm_mode_config_helper_funcs.atomic_commit_tail hook, for drivers * that support runtime_pm or need the CRTC to be enabled to perform a * commit. Otherwise, one should use the default implementation * drm_atomic_helper_commit_tail(). */ -void drm_atomic_helper_commit_tail_rpm(struct drm_atomic_state *old_state) +void drm_atomic_helper_commit_tail_rpm(struct drm_atomic_state *state) { - struct drm_device *dev =3D old_state->dev; + struct drm_device *dev =3D state->dev; =20 - drm_atomic_helper_commit_modeset_disables(dev, old_state); + drm_atomic_helper_commit_modeset_disables(dev, state); =20 - drm_atomic_helper_commit_modeset_enables(dev, old_state); + drm_atomic_helper_commit_modeset_enables(dev, state); =20 - drm_atomic_helper_commit_planes(dev, old_state, + drm_atomic_helper_commit_planes(dev, state, DRM_PLANE_COMMIT_ACTIVE_ONLY); =20 - drm_atomic_helper_fake_vblank(old_state); + drm_atomic_helper_fake_vblank(state); =20 - drm_atomic_helper_commit_hw_done(old_state); + drm_atomic_helper_commit_hw_done(state); =20 - drm_atomic_helper_wait_for_vblanks(dev, old_state); + drm_atomic_helper_wait_for_vblanks(dev, state); =20 - drm_atomic_helper_cleanup_planes(dev, old_state); + drm_atomic_helper_cleanup_planes(dev, state); } EXPORT_SYMBOL(drm_atomic_helper_commit_tail_rpm); =20 static void commit_tail(struct drm_atomic_state *state) { --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 871DA24502A for ; Thu, 13 Feb 2025 14:44:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457863; cv=none; b=MD5/7rpJtCU4eLXEnVebxM1cFeeQnZhHr1wDigpbvmKb8CjKPPBfQMoGYw9+HrfY39qqJ7FFJdlpTusP4TKGx6NZryFAfPQ9bLYULr4rXT9yPhb6VynUQ9vq/7tJDUgP3MQcE3VuxJSvhynJj7Mv3hxT1M2XwdbHdlevR5ZYpfo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457863; c=relaxed/simple; bh=5CvWOl1z7nMVTEJUfcpuXVWnspcQOUwXQCb4ZCyqRHA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nKZrghc+4MZV4VXUrPGfir8Hc0QZVwj/l2CTRKLP2k2fSedFod29SOmw45XvFHFqagw+h+BDUev8yZBHchP7Xaye0hCljgND50vQRMa5g+fkYhk1ncsQ4oYnoPGgjNX+M1Um8V2PX/WjXZeVIP7xqvW/F84tSDfiSmg4eLmzN64= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KHd1dwwv; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="KHd1dwwv" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0CB45C4CED1; Thu, 13 Feb 2025 14:44:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457863; bh=5CvWOl1z7nMVTEJUfcpuXVWnspcQOUwXQCb4ZCyqRHA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=KHd1dwwvUwnVMt46yub1eZbG686jmsY6xmWoSwbZphdIIRmFQMhO9zmnhaDzaQ+K5 7WPT/4RM45DvnL8avn67wwrDvFlHXau483h1u77NpfljAtC5KjsyM+O+jXOW8+GDT3 yWXc1gJq/ObtosVVu5og6bHQobGu18jFEic+9d2dhRtWEOu9salAPiqXKEdMCT5Mps tus9MDF2eH8XXrgH72f5E5tnS2MKxfZjrEV05bN7Fz2cKuy8uTNtecDsXy+cFx7no3 INWqC5tdPtFC8WAPiA85f7WCpp1I9qiH1OM/1iejaLUYEp+hJ/HcH/mKOswbsONtNB qkR/jkP7ImHiQ== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:29 +0100 Subject: [PATCH v3 10/37] drm/atomic-helper: Change parameter name of drm_atomic_helper_modeset_disables() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-10-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2438; i=mripard@kernel.org; h=from:subject:message-id; bh=5CvWOl1z7nMVTEJUfcpuXVWnspcQOUwXQCb4ZCyqRHA=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWKXO7Wu42KWcY+izVyl3jfDVOt/eyY5/7m4NuR9TF 6NygvVrx1QWBmFOBlkxRZYnMmGnl7cvrnKwX/kDZg4rE8gQBi5OAZjI4T7Ghs2Jcn9eL5/x6ao3 X0OiWqnpU/4z59T/LxR9+NTZZDW/5qLgYwqygSF8L588nLp589M4EcY6PZdJsy4e3/fQfELg7hg NUUGGnXNWMOx5ssNo7nVV4TtWWTbai5L+xAW57OZkrFqRfVQQAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_helper_modeset_disables() disables all the outputs affected by a commit. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard --- drivers/gpu/drm/drm_atomic_helper.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index e5484ed31cae24700ff64ccbe67c570bf46b8ddd..3d66626273245c3db42325ab5f5= 527fb4214e92b 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1437,11 +1437,11 @@ crtc_set_mode(struct drm_device *dev, struct drm_at= omic_state *old_state) } =20 /** * drm_atomic_helper_commit_modeset_disables - modeset commit to disable o= utputs * @dev: DRM device - * @old_state: atomic state object with old state structures + * @state: atomic state object being committed * * This function shuts down all the outputs that need to be shut down and * prepares them (if required) with the new mode. * * For compatibility with legacy CRTC helpers this should be called before @@ -1449,18 +1449,18 @@ crtc_set_mode(struct drm_device *dev, struct drm_at= omic_state *old_state) * does. But drivers with different needs can group the modeset commits to= gether * and do the plane commits at the end. This is useful for drivers doing r= untime * PM since planes updates then only happen when the CRTC is actually enab= led. */ void drm_atomic_helper_commit_modeset_disables(struct drm_device *dev, - struct drm_atomic_state *old_state) + struct drm_atomic_state *state) { - disable_outputs(dev, old_state); + disable_outputs(dev, state); =20 - drm_atomic_helper_update_legacy_modeset_state(dev, old_state); - drm_atomic_helper_calc_timestamping_constants(old_state); + drm_atomic_helper_update_legacy_modeset_state(dev, state); + drm_atomic_helper_calc_timestamping_constants(state); =20 - crtc_set_mode(dev, old_state); + crtc_set_mode(dev, state); } EXPORT_SYMBOL(drm_atomic_helper_commit_modeset_disables); =20 static void drm_atomic_helper_commit_writebacks(struct drm_device *dev, struct drm_atomic_state *old_state) --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4B6A4221710 for ; Thu, 13 Feb 2025 14:44:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457866; cv=none; b=pxbuxaaPbV3v2pFEQDRa9eH99c6BFAJunrnc9nw+ECWsXMKAKvYqyqrnbSKH9Cue5EGNOI1sbHGN2VNh2WYqhM5IPLl3g+17kgRK68OVfrySqpbJ/v2I9hlQYNYAV5k6XTUOepKNDaUfZRkxWsJb8RyrQSZFpwvJtNRvCuCPfUg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457866; c=relaxed/simple; bh=Rd1hiJtVfJOPaEEeU3NPRtRC/xxoSHYra9xL4D9iLEw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XtY6LJhx0GjWuYjL6lPWfkx/XywoSL6mmegDC9T1f5/3UFE3/02/Zg+fWWMgj0w3HRSqE1Te6/a+/ZftaSGyFdcqqirDKEGbIb9+W0SIauzQD23vd/3uCapavL5JZrkhhGqizLB3uKXt8OoAdjHjz7QPBZSuKRjbiq130J09Q/g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fXjv9FlS; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fXjv9FlS" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AC130C4CEE7; Thu, 13 Feb 2025 14:44:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457866; bh=Rd1hiJtVfJOPaEEeU3NPRtRC/xxoSHYra9xL4D9iLEw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=fXjv9FlSZ8uEr+pEA0YYTIo+Y2nFnIAC96FxbUxNWGAZUYuXIJRysi5ISKZ/EXOPZ 3JdB5BL2Bn+Z2MVfkfgueoO7ct+gYfXRmWylTwtk0QGzWTJUubpgZ4ZJh9fQqHA0kJ zc/prDgI3lULcDOIkFVm6dXjUGBGYGxtEhHAqmMivBBVnFW1hLAVzNAPDjN0TtpGjv Z6KuFBqyDNp7rnFZwcwcaiqezgMhVddlOaCiYf+NYYz3/zuKFw2LHQ2RyV7a+lZzPx t1BZw0WkKDl177binakt4vxLedq2Yw8oNyu3ZPLHUEReLDU15IykAL6fJkoYUx4E7n pa9jnj6A9YggA== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:30 +0100 Subject: [PATCH v3 11/37] drm/atomic-helper: Change parameter name of disable_outputs() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-11-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4077; i=mripard@kernel.org; h=from:subject:message-id; bh=Rd1hiJtVfJOPaEEeU3NPRtRC/xxoSHYra9xL4D9iLEw=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWKXat3ls/zb9Rt+NfwLVT2r5dvoVq60+1PJaY4OGd t2zT/dbO6ayMAhzMsiKKbI8kQk7vbx9cZWD/cofMHNYmUCGMHBxCsBEnNcy1gou2e7Lwil4XOd8 3YYuscrgfU4PT1e87mV3UUgLED42w9Bued2tpnc5G5/nnv5+fcvFnYx1RsEfyz7sib3/4ODjX+r fZXO85y9covXk/KYPXTcrPn8xr9FSnuJrtiR8mRlvZk61yzVOAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D disable_outputs() disables all connectors and CRTCs affected by a commit. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called as old_state, which is pretty confusing. Let's rename that variable as state. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard --- drivers/gpu/drm/drm_atomic_helper.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index 3d66626273245c3db42325ab5f5527fb4214e92b..7d83ea99477ae3dee1f828f1794= 6070903b29ba7 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1158,19 +1158,19 @@ crtc_needs_disable(struct drm_crtc_state *old_state, (old_state->self_refresh_active && !new_state->active) || new_state->self_refresh_active; } =20 static void -disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state) +disable_outputs(struct drm_device *dev, struct drm_atomic_state *state) { struct drm_connector *connector; struct drm_connector_state *old_conn_state, *new_conn_state; struct drm_crtc *crtc; struct drm_crtc_state *old_crtc_state, *new_crtc_state; int i; =20 - for_each_oldnew_connector_in_state(old_state, connector, old_conn_state, = new_conn_state, i) { + for_each_oldnew_connector_in_state(state, connector, old_conn_state, new_= conn_state, i) { const struct drm_encoder_helper_funcs *funcs; struct drm_encoder *encoder; struct drm_bridge *bridge; =20 /* @@ -1178,15 +1178,15 @@ disable_outputs(struct drm_device *dev, struct drm_= atomic_state *old_state) * still on. So need to check the old, saved state. */ if (!old_conn_state->crtc) continue; =20 - old_crtc_state =3D drm_atomic_get_old_crtc_state(old_state, old_conn_sta= te->crtc); + old_crtc_state =3D drm_atomic_get_old_crtc_state(state, old_conn_state->= crtc); =20 if (new_conn_state->crtc) new_crtc_state =3D drm_atomic_get_new_crtc_state( - old_state, + state, new_conn_state->crtc); else new_crtc_state =3D NULL; =20 if (!crtc_needs_disable(old_crtc_state, new_crtc_state) || @@ -1209,28 +1209,28 @@ disable_outputs(struct drm_device *dev, struct drm_= atomic_state *old_state) /* * Each encoder has at most one connector (since we always steal * it away), so we won't call disable hooks twice. */ bridge =3D drm_bridge_chain_get_first_bridge(encoder); - drm_atomic_bridge_chain_disable(bridge, old_state); + drm_atomic_bridge_chain_disable(bridge, state); =20 /* Right function depends upon target state. */ if (funcs) { if (funcs->atomic_disable) - funcs->atomic_disable(encoder, old_state); + funcs->atomic_disable(encoder, state); else if (new_conn_state->crtc && funcs->prepare) funcs->prepare(encoder); else if (funcs->disable) funcs->disable(encoder); else if (funcs->dpms) funcs->dpms(encoder, DRM_MODE_DPMS_OFF); } =20 - drm_atomic_bridge_chain_post_disable(bridge, old_state); + drm_atomic_bridge_chain_post_disable(bridge, state); } =20 - for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_s= tate, i) { + for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state= , i) { const struct drm_crtc_helper_funcs *funcs; int ret; =20 /* Shut down everything that needs a full modeset. */ if (!drm_atomic_crtc_needs_modeset(new_crtc_state)) @@ -1247,11 +1247,11 @@ disable_outputs(struct drm_device *dev, struct drm_= atomic_state *old_state) =20 /* Right function depends upon target state. */ if (new_crtc_state->enable && funcs->prepare) funcs->prepare(crtc); else if (funcs->atomic_disable) - funcs->atomic_disable(crtc, old_state); + funcs->atomic_disable(crtc, state); else if (funcs->disable) funcs->disable(crtc); else if (funcs->dpms) funcs->dpms(crtc, DRM_MODE_DPMS_OFF); =20 --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E241D22172F for ; Thu, 13 Feb 2025 14:44:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457869; cv=none; b=DGPRO89vU5gO6j07x2Xtn8E6g7Zo3fJ1TDXP58eFzopG4ngaC8kaPUpnHwyRVakI8+DmuOQWxp+5+J1SeRcB7fxeeToVlxMA7mobRDxr+EzZycgCe2y/XfQDLxU+lTgVpqcthwmcockPYj5pvc5hLAZX1H1D1fztymsNmqgpdCw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457869; c=relaxed/simple; bh=7JY8ITK80ol69Cjh+s2e0Bg9VnTdWWPoeH70KyOkKy0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IoTC+Qykc6sp42TTAhTPCuTq+BECBKeK/tDSzXyyRKFzUjmjVgwOh6Lc6PWjzddCHV0xvZdJweJLLHXRa3L2zy4WMBslSRvMvwN1M3wpIS5yEW9nnf9sWwUpbGOQW2eZCwptzWHY5X17hr22L6Nk1nziFEEX15oyv8JJngdW0tI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lNpC+9Ki; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="lNpC+9Ki" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4DB6AC4CED1; Thu, 13 Feb 2025 14:44:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457868; bh=7JY8ITK80ol69Cjh+s2e0Bg9VnTdWWPoeH70KyOkKy0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=lNpC+9Kiok/EPtiby6RfXkNDaPk724mQlkiba8EaSo69P7K+1sc9LNVJSGtZfxs42 YP6VVxudZAc2UPiUo6rNcOjEA6E3ZfgZ1c5eXTJcaX4TzXUOk10VW8j/CXU+vOJwBv y1SQDFph9CXOviSWWbuR+sAc1bcnJutUPglfmml67JUmkSSt643bPQBTlL9scKfIYU ls6JxZBH1SWw2xOLHraQvRhao4TuaTGOBSRH6EK66VbrA71CcGrbQ7ZDInJ7/wP6WF 7hjDvieK4LRrqi4MPQ8sy41ComZ8MMxTMHFRiSG3rlplhrYChA/jQFcb7vs+cRquhE Enp7Xpqxig+8Q== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:31 +0100 Subject: [PATCH v3 12/37] drm/bridge: Change parameter name of drm_atomic_bridge_chain_disable() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-12-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2034; i=mripard@kernel.org; h=from:subject:message-id; bh=7JY8ITK80ol69Cjh+s2e0Bg9VnTdWWPoeH70KyOkKy0=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWKVLZ3TURDFyTL4g4psrJWZe/f2ZkIv3H7n/Bzjcv X69rnnTMZWFQZiTQVZMkeWJTNjp5e2LqxzsV/6AmcPKBDKEgYtTACZSGcRYK+G44WLl66+/852k 1F87391u2dK8c+60vamNfneXaOfUuDxoctv094loyPcPdlvWcgZyMTb8e/TtUOhDFb5XZd7rEk8 3zaoWvV+ytW7+4cTytWEOC1S2TjhjqFe4s+Y3457qDar3TSwB X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_bridge_chain_disable() disables all bridges affected by a new commit. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard --- drivers/gpu/drm/drm_bridge.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index cb71ec57c47af889c2028c74d0bbcfa2fed1f88b..b21b43af3d1de69c1aa9a492592= 2e0b2f522f026 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -548,32 +548,32 @@ void drm_bridge_chain_mode_set(struct drm_bridge *bri= dge, EXPORT_SYMBOL(drm_bridge_chain_mode_set); =20 /** * drm_atomic_bridge_chain_disable - disables all bridges in the encoder c= hain * @bridge: bridge control structure - * @old_state: old atomic state + * @state: atomic state being committed * * Calls &drm_bridge_funcs.atomic_disable (falls back on * &drm_bridge_funcs.disable) op for all the bridges in the encoder chain, * starting from the last bridge to the first. These are called before cal= ling * &drm_encoder_helper_funcs.atomic_disable * * Note: the bridge passed should be the one closest to the encoder */ void drm_atomic_bridge_chain_disable(struct drm_bridge *bridge, - struct drm_atomic_state *old_state) + struct drm_atomic_state *state) { struct drm_encoder *encoder; struct drm_bridge *iter; =20 if (!bridge) return; =20 encoder =3D bridge->encoder; list_for_each_entry_reverse(iter, &encoder->bridge_chain, chain_node) { if (iter->funcs->atomic_disable) { - iter->funcs->atomic_disable(iter, old_state); + iter->funcs->atomic_disable(iter, state); } else if (iter->funcs->disable) { iter->funcs->disable(iter); } =20 if (iter =3D=3D bridge) --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E815922172F for ; Thu, 13 Feb 2025 14:44:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457872; cv=none; b=FJoScutPQAzmlBwSEfRlP0wan7Y8oNBVl32t/9yPYtQzV25inSKExI4fa3KoaY9hC37bnE6fu0VlBpAWkFpi/P7gdK1LhuE1nlQXYiiFSMR2VcbI9I/IKJ3nBVOTJVss17NW14xXNs6wdDb/MUxOZlPoExLYm2F0sIkYQTNj8zI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457872; c=relaxed/simple; bh=QW0K6/TUL7ANO4S8LAs5lkdu+V3Tohf9KAVCMciYxXQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZUtquIitkDTxQ5CHSzUgd5wGZfp3d5hAGta3ZvUzDvSfqY4S06q4PgV+h5okIIN8F/GiwaEDvqia2cGY2YUgkoTGNkGcENvywaJ4mbWD628R0h0ly+ks9fqmpQX6F4IRZL6fyq91H6pfjRcT3ju0B++LjWID6pFsQp+V0xA2twY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oSonWZAd; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oSonWZAd" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0E0D4C4CEE2; Thu, 13 Feb 2025 14:44:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457871; bh=QW0K6/TUL7ANO4S8LAs5lkdu+V3Tohf9KAVCMciYxXQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=oSonWZAdPv40XLQPvhK1ODIybvmeoCfzTKbeSPVkxX65Q+OsIXpd7o1Rb7LBs3Qc+ 7HAzpODxxKA8SgUKVI5M7dj7YuK72GGNDkil6Vd98rk+18RcN60ngtIadPH4A+tp6o Wiy77VxaTnyCvCZhshWnVuzEL2LKFZwSnYp9agNyiC6WsFCSXqMSWZeYOc1AoUAaQ8 XwXam6B3I27dZB//aG6FkW+F924O/W6efOAK4SNZxw7ia4HOP880pj9xJZv1qFbbwc 2h12MfURVKGZ2Y1CX7ECG4JEBeXhKCGoWQY4ffVk1H+2nFiFCLEgi9L5O59seRaxNH 9sGKoy4o3uROg== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:32 +0100 Subject: [PATCH v3 13/37] drm/bridge: Change parameter name of drm_atomic_bridge_chain_post_disable() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-13-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2838; i=mripard@kernel.org; h=from:subject:message-id; bh=QW0K6/TUL7ANO4S8LAs5lkdu+V3Tohf9KAVCMciYxXQ=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWKXn8Bl03dg5Z4ab36rQ/6zhs9P3hv/QPLvGSmrRd N6S5a+nd0xlYRDmZJAVU2R5IhN2enn74ioH+5U/YOawMoEMYeDiFICJLA9gbFj7xvBNXVRJJEtA zBrPCUVTMtIvaHudlw/g3/EvoWHqjKtGB553nnl/vbLJPL+W9/4bFcaGec+q2Zfd8j8h6up4qm7 P2S1ziqqzrwZ2dKts1ZgTZh6sJLiaL3LlY9HVgllWs4rDQz8DAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_bridge_chain_post_disable() disables all bridges affected by a new commit. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_bridge.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index b21b43af3d1de69c1aa9a4925922e0b2f522f026..b63ec3d0b285949ebe75f28b526= e2833d0e6a850 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -581,23 +581,23 @@ void drm_atomic_bridge_chain_disable(struct drm_bridg= e *bridge, } } EXPORT_SYMBOL(drm_atomic_bridge_chain_disable); =20 static void drm_atomic_bridge_call_post_disable(struct drm_bridge *bridge, - struct drm_atomic_state *old_state) + struct drm_atomic_state *state) { - if (old_state && bridge->funcs->atomic_post_disable) - bridge->funcs->atomic_post_disable(bridge, old_state); + if (state && bridge->funcs->atomic_post_disable) + bridge->funcs->atomic_post_disable(bridge, state); else if (bridge->funcs->post_disable) bridge->funcs->post_disable(bridge); } =20 /** * drm_atomic_bridge_chain_post_disable - cleans up after disabling all br= idges * in the encoder chain * @bridge: bridge control structure - * @old_state: old atomic state + * @state: atomic state being committed * * Calls &drm_bridge_funcs.atomic_post_disable (falls back on * &drm_bridge_funcs.post_disable) op for all the bridges in the encoder c= hain, * starting from the first bridge to the last. These are called after comp= leting * &drm_encoder_helper_funcs.atomic_disable @@ -614,11 +614,11 @@ static void drm_atomic_bridge_call_post_disable(struc= t drm_bridge *bridge, * Bridge B, Bridge A, Bridge E, Bridge D, Bridge C. * * Note: the bridge passed should be the one closest to the encoder */ void drm_atomic_bridge_chain_post_disable(struct drm_bridge *bridge, - struct drm_atomic_state *old_state) + struct drm_atomic_state *state) { struct drm_encoder *encoder; struct drm_bridge *next, *limit; =20 if (!bridge) @@ -661,16 +661,16 @@ void drm_atomic_bridge_chain_post_disable(struct drm_= bridge *bridge, chain_node) { if (next =3D=3D bridge) break; =20 drm_atomic_bridge_call_post_disable(next, - old_state); + state); } } } =20 - drm_atomic_bridge_call_post_disable(bridge, old_state); + drm_atomic_bridge_call_post_disable(bridge, state); =20 if (limit) /* Jump all bridges that we have already post_disabled */ bridge =3D limit; } --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1F1DD26980C for ; Thu, 13 Feb 2025 14:44:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457874; cv=none; b=UiEa31J/2HSngkl9FR8g9vcGBaW6UbYz8+dh8KSH+Ndx9h8kY47TfhNllqKonycO4kKF2NYsu8FLUAIYs4KEeQ9Ruf3V6B4uU2KUoS4anTv3+j0XgrJpwbLOWg0CbEGIbpWsHr93RvlveyBKkOErpmK0F1Hf1W0i4Q22da8w9ww= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457874; c=relaxed/simple; bh=FISC0+yVHRMCMSVo8YKKQvJ8/x3d6MANikyEom061Rw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YTcdwyFncgdjPu1g4MNmpQiAUE5b+NOiDJy8rVRvfNMXGV1KL9klQ23yzmsgMzLwN7u9OFGiNFR0xkICNDDHhpelhJ+wrHYrHnEqreLQYnNnvP/99Qj+REB7l26CCfWf4sUhv+CZd5EwbIRPeePRlHKYbc2exvAZL9Ags9i0hpU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JgEJUvYg; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="JgEJUvYg" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A49E3C4CED1; Thu, 13 Feb 2025 14:44:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457874; bh=FISC0+yVHRMCMSVo8YKKQvJ8/x3d6MANikyEom061Rw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=JgEJUvYgjlwPhoUA1qr91Ltmx2WRaRCIRKtBAMXjwGaQA74QtBQHW6mOnC1aIzsdv ovrOd3NBZzw6MnaGRwmElv8O5Djc3FQ+166KBoLGV2nUUelV+TnGG8hYIkTfpwroaB WYolpYG9poaNbiYZXWi3iRi380EQC2vlylmOEwMiGyFfkqg+hy/DdJMjDKk2OnyZ+Z 7XE+afzJUNYYngaruOuN7bu+ZWxK6SYjRU1fZuzfwtb7MtsZtRQG1nQDpwc6Jylxcj 20nAGAN6+FuKkJPjMJOapgZgeUXwdobQn5R5B6faHulmJiq1c1QPmXu0gWPlRqhCVX CAKgMXZx/QuJw== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:33 +0100 Subject: [PATCH v3 14/37] drm/atomic-helper: Change parameter name of drm_atomic_helper_update_legacy_modeset_state() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-14-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3670; i=mripard@kernel.org; h=from:subject:message-id; bh=FISC0+yVHRMCMSVo8YKKQvJ8/x3d6MANikyEom061Rw=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWGWmHplQrX49gfmIbw/70ZYkx3kTFu2fLqrceej7+ QCz5o1eHVNZGIQ5GWTFFFmeyISdXt6+uMrBfuUPmDmsTCBDGLg4BWAiU84x1rvZHrZNzahvarp5 bvHZZYpMU5g0OXv6bvrMOTFp4QejVBmXldaVky3+MeT+TmaLX8lwlLHh4jPuFmfmTz/n7egu+fT ykbJDV+vPi+/0D1p1Hz5gnyJ18OLmo3uyOQTfvdifwONzK4YNAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_helper_update_legacy_modeset_state() updates all the legacy modeset pointers a connector, encoder or CRTC might have with the ones being setup by a given commit. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard --- drivers/gpu/drm/drm_atomic_helper.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index 7d83ea99477ae3dee1f828f17946070903b29ba7..b118cd44cf9d95908223a2d297c= 4b74308613f63 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1275,11 +1275,11 @@ disable_outputs(struct drm_device *dev, struct drm_= atomic_state *state) } =20 /** * drm_atomic_helper_update_legacy_modeset_state - update legacy modeset s= tate * @dev: DRM device - * @old_state: atomic state object with old state structures + * @state: atomic state object being committed * * This function updates all the various legacy modeset state pointers in * connectors, encoders and CRTCs. * * Drivers can use this for building their own atomic commit if they don't= have @@ -1291,20 +1291,20 @@ disable_outputs(struct drm_device *dev, struct drm_= atomic_state *state) * the legacy state pointers are only really useful for transitioning an * existing driver to the atomic world. */ void drm_atomic_helper_update_legacy_modeset_state(struct drm_device *dev, - struct drm_atomic_state *old_state) + struct drm_atomic_state *state) { struct drm_connector *connector; struct drm_connector_state *old_conn_state, *new_conn_state; struct drm_crtc *crtc; struct drm_crtc_state *new_crtc_state; int i; =20 /* clear out existing links and update dpms */ - for_each_oldnew_connector_in_state(old_state, connector, old_conn_state, = new_conn_state, i) { + for_each_oldnew_connector_in_state(state, connector, old_conn_state, new_= conn_state, i) { if (connector->encoder) { WARN_ON(!connector->encoder->crtc); =20 connector->encoder->crtc =3D NULL; connector->encoder =3D NULL; @@ -1321,11 +1321,11 @@ drm_atomic_helper_update_legacy_modeset_state(struc= t drm_device *dev, connector->dpms =3D mode; } } =20 /* set new links */ - for_each_new_connector_in_state(old_state, connector, new_conn_state, i) { + for_each_new_connector_in_state(state, connector, new_conn_state, i) { if (!new_conn_state->crtc) continue; =20 if (WARN_ON(!new_conn_state->best_encoder)) continue; @@ -1333,19 +1333,19 @@ drm_atomic_helper_update_legacy_modeset_state(struc= t drm_device *dev, connector->encoder =3D new_conn_state->best_encoder; connector->encoder->crtc =3D new_conn_state->crtc; } =20 /* set legacy state in the crtc structure */ - for_each_new_crtc_in_state(old_state, crtc, new_crtc_state, i) { + for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) { struct drm_plane *primary =3D crtc->primary; struct drm_plane_state *new_plane_state; =20 crtc->mode =3D new_crtc_state->mode; crtc->enabled =3D new_crtc_state->enable; =20 new_plane_state =3D - drm_atomic_get_new_plane_state(old_state, primary); + drm_atomic_get_new_plane_state(state, primary); =20 if (new_plane_state && new_plane_state->crtc =3D=3D crtc) { crtc->x =3D new_plane_state->src_x >> 16; crtc->y =3D new_plane_state->src_y >> 16; } --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D14E1269830 for ; Thu, 13 Feb 2025 14:44:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457876; cv=none; b=BJVU0b4PS0iPzddJ10K3F5cyjFGTVZDTYI2TUWu97ePIIN3uBu7DPYfjOl82l4fNFuuCTwR7mIllrL1oEkL985cdAqrZF7ndcr6bkqpogR02Ub7lFDAY9bX3NxCtMUThR7gwkuTPMbxWJYs8pbaxuhz0iAwYnNZ9HuEkUlbkWdI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457876; c=relaxed/simple; bh=VhozOToCIuuWgJPMTBZ0TdxopKzpTryg3XnM8dhr2Yk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=N0kq3nIxqbWDxsWKyhW8BXwmri6bWqjBhM7mZ20cgbRZ5PY0YmOwq4ntkdigKSp+8QzU9kM/3ibikYzj4EwjTQfPqjTz4qZn1WmLoIkHBThbe2dba1qf1KuOsEXFHD+6oWDoZ6mP0deTd9c+3CelaBXJjbMYbuRR7NQmAzAqm6U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=igjosGTp; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="igjosGTp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5A052C4CEE2; Thu, 13 Feb 2025 14:44:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457876; bh=VhozOToCIuuWgJPMTBZ0TdxopKzpTryg3XnM8dhr2Yk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=igjosGTpO9uHWGS4ivPZiWBFXqmwrW+NZxtX+ntb62QhJl78ymCIEtwBB05BB2RfG qwncbIaU7oN+NbVae0oz6wvtldlYTqQLVEQw7ayqLHxzRH/xoriYnO7NYkN6rgYj49 SpbeCwAOEH0tQIlx3gndWeD8f72+Zf+yAiTzTJgd5tS+kh/QdQhjGU0C4qQNKd+pgM 6ZkIwAiZzozOoMlbw8aiQMMXM+Wynadh/sAX0nCQl2pv27Xq6gYWX1MzPKFv556kg/ i/447UsIqEs9B1G7j9ivRuIxIINo5lpLBhysUjeSQr2mF7nHqOdVw/IVlYQvq/QMIF Qchw+P/TWM8bg== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:34 +0100 Subject: [PATCH v3 15/37] drm/atomic-helper: Change parameter name of crtc_set_mode() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-15-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2045; i=mripard@kernel.org; h=from:subject:message-id; bh=VhozOToCIuuWgJPMTBZ0TdxopKzpTryg3XnM8dhr2Yk=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWGUq2HzSk2e8nPmXs1/dne9f4lsHzR87srs7bZ43C tQ7akt3TGVhEOZkkBVTZHkiE3Z6efviKgf7lT9g5rAygQxh4OIUgIkU+zPWF/6rSv90VM1uzaza d3f/M62fG6tj+q1L8Nzf1yfF/pWfPSh0OERj83a+/c9dYwptj8yWZWyYuo81stErP/nQN47YezM kStPrD9+YvOOPQpJnwbdwjTcPxV7P/JRYXDY7bAWvCPu8g0UA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D crtc_set_mode() deals with calling the modeset related hooks for CRTC, connectors and bridges if and when a new commit changes them. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called as old_state, which is pretty confusing. Let's rename that variable as state. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard --- drivers/gpu/drm/drm_atomic_helper.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index b118cd44cf9d95908223a2d297c4b74308613f63..6ca8bf5f433c9c93981f808ac1c= b60a442674f78 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1373,19 +1373,19 @@ void drm_atomic_helper_calc_timestamping_constants(= struct drm_atomic_state *stat } } EXPORT_SYMBOL(drm_atomic_helper_calc_timestamping_constants); =20 static void -crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state) +crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *state) { struct drm_crtc *crtc; struct drm_crtc_state *new_crtc_state; struct drm_connector *connector; struct drm_connector_state *new_conn_state; int i; =20 - for_each_new_crtc_in_state(old_state, crtc, new_crtc_state, i) { + for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) { const struct drm_crtc_helper_funcs *funcs; =20 if (!new_crtc_state->mode_changed) continue; =20 @@ -1397,11 +1397,11 @@ crtc_set_mode(struct drm_device *dev, struct drm_at= omic_state *old_state) =20 funcs->mode_set_nofb(crtc); } } =20 - for_each_new_connector_in_state(old_state, connector, new_conn_state, i) { + for_each_new_connector_in_state(state, connector, new_conn_state, i) { const struct drm_encoder_helper_funcs *funcs; struct drm_encoder *encoder; struct drm_display_mode *mode, *adjusted_mode; struct drm_bridge *bridge; =20 --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A1F07271264 for ; Thu, 13 Feb 2025 14:44:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457879; cv=none; b=WpJGxYunjK6pKYAjqtPbfqOFGGOtGnYReVuI900sPYM8vpyAgrPkzr4mLysmOQwfKYUOmrg3YIZG+TqX0i7g0Et5DezJ+UYOj5Xy0cm5Oz7ZC5FLpU1ASTDiDO+OLKab7jxbmUjxshjjuBzGZFJ0u0iOhrq37KCrf8Vc5ye/6So= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457879; c=relaxed/simple; bh=4nUqhJjigGGbt2walxpWzZ8GLT1mDjsNHKrAmKMJ+KA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=L5bqDw/msr+i7t+7i4qwIxxQs1hd9Jlaw6KhRVHupyUmMOXxEtSN8Rwf0qFpKCDdNoXQBxt7m+HM/9Enut4mXcNO+3ytkshvn+cYb5sB/v32WkBY38H9EzL1f1/l0fvd9JpdCAXbRioQKhIVFB3GtYO9p3tbF78LvJwStztrGr0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fkvwo92Z; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fkvwo92Z" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 272A4C4CED1; Thu, 13 Feb 2025 14:44:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457879; bh=4nUqhJjigGGbt2walxpWzZ8GLT1mDjsNHKrAmKMJ+KA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=fkvwo92ZrSTCE+IxeQg2PsKqN+qRPe0omBnTtbpffofZi2yhhCHVuVpsgO5lotLq7 ytcUnBRaTOO1/6HKleJpnhwGO4P4mEA6E9LdCQtZUOaR/JoYpzdFPkxswubekykw9b N69dD5v6brS2j5CMkhptHX9//StPSvdpjejTAWeIzmge/Me+uXawLvWoczY3ruVwgS AWQF96/KGXrj4UMfuMs8i3HsyRWy2X30c+WFGpBn/oWv5ch3gQbcQhpKbTQsPTQd14 IwCcvFOtjxL2kCa2CeTo9X/5mlw62F+Fg5CSF2v5dM5io8Bw/iKHNqJMHOnC5uCEEh ZW9IjYp6ZH41g== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:35 +0100 Subject: [PATCH v3 16/37] drm/atomic-helper: Change parameter name of drm_atomic_helper_commit_planes() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-16-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4891; i=mripard@kernel.org; h=from:subject:message-id; bh=4nUqhJjigGGbt2walxpWzZ8GLT1mDjsNHKrAmKMJ+KA=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWGWnng879/zu26dmWWkPy3IY9wYLMIW/cmWc2s6uu jRcMOdbx1QWBmFOBlkxRZYnMmGnl7cvrnKwX/kDZg4rE8gQBi5OAZiI7VbG+pzrMxPZJYoZA6YJ Cp3rOlHvVNmwcBb7gdfWr6stFh+37fbe+NvN2u3l+Re/2Zq2RyarMzZ8viBwUM82ZtcDu3vXq1l PLvKpSpWOCu3/s1hka9Ivh20Gj84vMTRgU7u2+tMDwRUrrzYDAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_helper_commit_planes() updates all planes affected by a new commit. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_atomic_helper.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index 6ca8bf5f433c9c93981f808ac1cb60a442674f78..c01832d6953fc0863db7532aca9= 09516d1796b72 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -2729,19 +2729,19 @@ static bool plane_crtc_active(const struct drm_plan= e_state *state) } =20 /** * drm_atomic_helper_commit_planes - commit plane state * @dev: DRM device - * @old_state: atomic state object with old state structures + * @state: atomic state object being committed * @flags: flags for committing plane state * * This function commits the new plane state using the plane and atomic he= lper * functions for planes and CRTCs. It assumes that the atomic state has al= ready * been pushed into the relevant object state pointers, since this step ca= n no * longer fail. * - * It still requires the global state object @old_state to know which plan= es and + * It still requires the global state object @state to know which planes a= nd * crtcs need to be updated though. * * Note that this function does all plane updates across all CRTCs in one = step. * If the hardware can't support this approach look at * drm_atomic_helper_commit_planes_on_crtc() instead. @@ -2768,36 +2768,36 @@ static bool plane_crtc_active(const struct drm_plan= e_state *state) * The drm_atomic_helper_commit() default implementation doesn't set the * ACTIVE_ONLY flag to most closely match the behaviour of the legacy help= ers. * This should not be copied blindly by drivers. */ void drm_atomic_helper_commit_planes(struct drm_device *dev, - struct drm_atomic_state *old_state, + struct drm_atomic_state *state, uint32_t flags) { struct drm_crtc *crtc; struct drm_crtc_state *old_crtc_state, *new_crtc_state; struct drm_plane *plane; struct drm_plane_state *old_plane_state, *new_plane_state; int i; bool active_only =3D flags & DRM_PLANE_COMMIT_ACTIVE_ONLY; bool no_disable =3D flags & DRM_PLANE_COMMIT_NO_DISABLE_AFTER_MODESET; =20 - for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_s= tate, i) { + for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state= , i) { const struct drm_crtc_helper_funcs *funcs; =20 funcs =3D crtc->helper_private; =20 if (!funcs || !funcs->atomic_begin) continue; =20 if (active_only && !new_crtc_state->active) continue; =20 - funcs->atomic_begin(crtc, old_state); + funcs->atomic_begin(crtc, state); } =20 - for_each_oldnew_plane_in_state(old_state, plane, old_plane_state, new_pla= ne_state, i) { + for_each_oldnew_plane_in_state(state, plane, old_plane_state, new_plane_s= tate, i) { const struct drm_plane_helper_funcs *funcs; bool disabling; =20 funcs =3D plane->helper_private; =20 @@ -2831,40 +2831,40 @@ void drm_atomic_helper_commit_planes(struct drm_dev= ice *dev, =20 if (drm_atomic_crtc_needs_modeset(crtc_state) && no_disable) continue; =20 - funcs->atomic_disable(plane, old_state); + funcs->atomic_disable(plane, state); } else if (new_plane_state->crtc || disabling) { - funcs->atomic_update(plane, old_state); + funcs->atomic_update(plane, state); =20 if (!disabling && funcs->atomic_enable) { if (drm_atomic_plane_enabling(old_plane_state, new_plane_state)) - funcs->atomic_enable(plane, old_state); + funcs->atomic_enable(plane, state); } } } =20 - for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_s= tate, i) { + for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state= , i) { const struct drm_crtc_helper_funcs *funcs; =20 funcs =3D crtc->helper_private; =20 if (!funcs || !funcs->atomic_flush) continue; =20 if (active_only && !new_crtc_state->active) continue; =20 - funcs->atomic_flush(crtc, old_state); + funcs->atomic_flush(crtc, state); } =20 /* * Signal end of framebuffer access here before hw_done. After hw_done, * a later commit might have already released the plane state. */ - for_each_old_plane_in_state(old_state, plane, old_plane_state, i) { + for_each_old_plane_in_state(state, plane, old_plane_state, i) { const struct drm_plane_helper_funcs *funcs =3D plane->helper_private; =20 if (funcs->end_fb_access) funcs->end_fb_access(plane, old_plane_state); } --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6613F271277 for ; Thu, 13 Feb 2025 14:44:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457882; cv=none; b=GCmJItrLuDSJB3qeZlcWotCHCyDWgl8en/1eCA9kfAgkzSjmh+OTUrR57AbPurmBKgZkzlGTkVNVkT26RwnCVwP9s8YhZtEI01kzOxtqiohgmHYOx59BvdXpVERYHRfMn5mc8LTCTwrHSvHZMr1Mb8hkdDT7SOprFPGzqjVjTA8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457882; c=relaxed/simple; bh=vkmsQVJmDiBD+o85i9Hy+FmSGOjR/a9ZS0sHiO5uueM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M7KtxVwkLpROwUfh3OTFlEX53R1xWwslq3eJtnGdZgnCp5M5zGiyv96AGtJpNJ5DXbe1xAzMLG6EkidGKbjTCNRe/Ih/fLnlNJ7UqMSNsUywjSXmsYSBT+mDRTRSDi/KJeCwt18REqG4y8UuYqmgqWXYkec/zkBurTYD7aRUI20= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AYF4dF+C; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="AYF4dF+C" Received: by smtp.kernel.org (Postfix) with ESMTPSA id C9534C4CED1; Thu, 13 Feb 2025 14:44:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457882; bh=vkmsQVJmDiBD+o85i9Hy+FmSGOjR/a9ZS0sHiO5uueM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=AYF4dF+CmqrAXzd45F3AsIfkxtzfnq45LsmXlgv8V9FU7jT9BeLhiE3ifNhIA23TE mofh7MJcZUMKWkhp2unNX2/Z8KjC+FDSDY/ugn/8RxuZtORosOmp66XuZxxjD6utCm IhPjZVnERFK8vYa+jcrJrVf14B52ie+xBEYnh2aUmi7tG2Iytdy8dHlwzWB4X3+zVA 1b2PuArbkT8LKjV0RzLPMwRqo/vd3BDuQ+i4ufW6Q0+h8TmrVquyz3EqverVBz+vEx V0IX6VC/kFiY0i0tq8Tv4Njn/bK4TcZopnJV09T5URKBfeh7NP4Tt3uUDGOHjE7Yk+ eOGSepy8QvIog== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:36 +0100 Subject: [PATCH v3 17/37] drm/atomic-helper: Change parameter name of drm_atomic_helper_commit_modeset_enables() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-17-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4126; i=mripard@kernel.org; h=from:subject:message-id; bh=vkmsQVJmDiBD+o85i9Hy+FmSGOjR/a9ZS0sHiO5uueM=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWGXFGBJatmRbP5wdeeTbNbE57u6Ss5lWPJkssnufg GHCz/8FHVNZGIQ5GWTFFFmeyISdXt6+uMrBfuUPmDmsTCBDGLg4BWAilgqMDd1Lo6STQ2NDOZ3X J7ow2v9cXX8l6SKH8/fdt+IDdS4sPJQr/TRSNGrik7M3mnl9j8Z0MdbZ8p86J7cs9aqFAc/GhS3 +f2ebOVx7+r3TLO+kgvzMdFXGEzbsN2/UOt5jnTfpGq9UxSUA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_helper_commit_modeset_enables() enables all outputs affected by a new commit. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_atomic_helper.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index c01832d6953fc0863db7532aca909516d1796b72..1fc15d4ab096ada43969f5d9f0c= 74a4384208582 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1484,11 +1484,11 @@ static void drm_atomic_helper_commit_writebacks(str= uct drm_device *dev, } =20 /** * drm_atomic_helper_commit_modeset_enables - modeset commit to enable out= puts * @dev: DRM device - * @old_state: atomic state object with old state structures + * @state: atomic state object being committed * * This function enables all the outputs with the new configuration which = had to * be turned off for the update. * * For compatibility with legacy CRTC helpers this should be called after @@ -1496,20 +1496,20 @@ static void drm_atomic_helper_commit_writebacks(str= uct drm_device *dev, * does. But drivers with different needs can group the modeset commits to= gether * and do the plane commits at the end. This is useful for drivers doing r= untime * PM since planes updates then only happen when the CRTC is actually enab= led. */ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev, - struct drm_atomic_state *old_state) + struct drm_atomic_state *state) { struct drm_crtc *crtc; struct drm_crtc_state *old_crtc_state; struct drm_crtc_state *new_crtc_state; struct drm_connector *connector; struct drm_connector_state *new_conn_state; int i; =20 - for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_s= tate, i) { + for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state= , i) { const struct drm_crtc_helper_funcs *funcs; =20 /* Need to filter out CRTCs where only planes change. */ if (!drm_atomic_crtc_needs_modeset(new_crtc_state)) continue; @@ -1521,17 +1521,17 @@ void drm_atomic_helper_commit_modeset_enables(struc= t drm_device *dev, =20 if (new_crtc_state->enable) { drm_dbg_atomic(dev, "enabling [CRTC:%d:%s]\n", crtc->base.id, crtc->name); if (funcs->atomic_enable) - funcs->atomic_enable(crtc, old_state); + funcs->atomic_enable(crtc, state); else if (funcs->commit) funcs->commit(crtc); } } =20 - for_each_new_connector_in_state(old_state, connector, new_conn_state, i) { + for_each_new_connector_in_state(state, connector, new_conn_state, i) { const struct drm_encoder_helper_funcs *funcs; struct drm_encoder *encoder; struct drm_bridge *bridge; =20 if (!new_conn_state->best_encoder) @@ -1550,25 +1550,25 @@ void drm_atomic_helper_commit_modeset_enables(struc= t drm_device *dev, /* * Each encoder has at most one connector (since we always steal * it away), so we won't call enable hooks twice. */ bridge =3D drm_bridge_chain_get_first_bridge(encoder); - drm_atomic_bridge_chain_pre_enable(bridge, old_state); + drm_atomic_bridge_chain_pre_enable(bridge, state); =20 if (funcs) { if (funcs->atomic_enable) - funcs->atomic_enable(encoder, old_state); + funcs->atomic_enable(encoder, state); else if (funcs->enable) funcs->enable(encoder); else if (funcs->commit) funcs->commit(encoder); } =20 - drm_atomic_bridge_chain_enable(bridge, old_state); + drm_atomic_bridge_chain_enable(bridge, state); } =20 - drm_atomic_helper_commit_writebacks(dev, old_state); + drm_atomic_helper_commit_writebacks(dev, state); } EXPORT_SYMBOL(drm_atomic_helper_commit_modeset_enables); =20 /* * For atomic updates which touch just a single CRTC, calculate the time o= f the --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 141D823F42D for ; Thu, 13 Feb 2025 14:44:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457885; cv=none; b=lPsYLwolcQ25P/bMaN8aD7U32J8MHGva1ZRK2NpIoJi9x+qXk1D/7Ts5OuCuscaPJ3dNSrhsL+tXWNIy37oH552tgtzeB8BMRBDxDC+0bOujBSErueUy7kiYJQSKBnK/vpzLtwVCyI4INw7JQuvur+rbNT75bDCVHtafRGHdGOE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457885; c=relaxed/simple; bh=bLQlvUPK5MwSbxTg0psAGWYR0TzhNMipULajeO64aDY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ieo2SY7SWjfXnUeevc4oy6fIyhvFEo65XO3G+fTpqiXDY3RARXcZ5M0ExegeoA24nVB3+ENj2YYpfjB2Ms3bHUTqsSn121ls/Y6ooKXer03oVPFbMuuF5d21pF4hZuJtk4sMzDeiC4kkoyqfr8/TbqSZK2Zi+fGTpd/EHyoeoEQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FtVQUjsR; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="FtVQUjsR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 78C79C4CED1; Thu, 13 Feb 2025 14:44:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457884; bh=bLQlvUPK5MwSbxTg0psAGWYR0TzhNMipULajeO64aDY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=FtVQUjsRz4vK1aEKmVob8onLSENcSZAqKHPnaEaJxEVuMPLhyyWJ3tuhzwunOSlS8 Zg53bP6QVFkt2UaDj4bdve6VbCZLuoQ299ZHpcEaryVkbNsWUUQeMhxMDG//M+DV5n 5Dkh30aShTAno4UwcxktCJJu5NMAH92686Qal2+WYii+GzljpD8zqAT/Y79mKhVdOt 5ReY0RaVft2j6oUm4dn+TxRpey9K2VQn6PkAbdubn7lv0jE0L39nNvdjZMM+Xbica6 NHIrvo+SlgbxQn2939Y49x1w+sxnc/T+d8MoDYO6uuF0sJTcSejJ/SqdpLD+Hr33Tv a6v5xoQiLXzXA== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:37 +0100 Subject: [PATCH v3 18/37] drm/bridge: Change parameter name of drm_atomic_bridge_chain_pre_enable() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-18-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2872; i=mripard@kernel.org; h=from:subject:message-id; bh=bLQlvUPK5MwSbxTg0psAGWYR0TzhNMipULajeO64aDY=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWOUEfs7o81DqlpR98iFjtm2eX7LLB0+J9R/2BHK99 RQJePq2YyoLgzAng6yYIssTmbDTy9sXVznYr/wBM4eVCWQIAxenAEykU42xzppx9+wjhQK82Y8q fviKXD3S4/jf9J2Y4arWIx8l5/scNz7PufXWgeIou/sSTxpVIgVMGOurvL8xn73G1CCoe3RfIa+ AhpZe587iEyEP4z9XNxv6NBXaXL350ulPcLp8TqVTWLZBBQA= X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_bridge_chain_pre_enable() enables all bridges affected by a new commit. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_bridge.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index b63ec3d0b285949ebe75f28b526e2833d0e6a850..41bb3700ca7b6f267a75481ae94= 2b9357b5777c9 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -676,23 +676,23 @@ void drm_atomic_bridge_chain_post_disable(struct drm_= bridge *bridge, } } EXPORT_SYMBOL(drm_atomic_bridge_chain_post_disable); =20 static void drm_atomic_bridge_call_pre_enable(struct drm_bridge *bridge, - struct drm_atomic_state *old_state) + struct drm_atomic_state *state) { - if (old_state && bridge->funcs->atomic_pre_enable) - bridge->funcs->atomic_pre_enable(bridge, old_state); + if (state && bridge->funcs->atomic_pre_enable) + bridge->funcs->atomic_pre_enable(bridge, state); else if (bridge->funcs->pre_enable) bridge->funcs->pre_enable(bridge); } =20 /** * drm_atomic_bridge_chain_pre_enable - prepares for enabling all bridges = in * the encoder chain * @bridge: bridge control structure - * @old_state: old atomic state + * @state: atomic state being committed * * Calls &drm_bridge_funcs.atomic_pre_enable (falls back on * &drm_bridge_funcs.pre_enable) op for all the bridges in the encoder cha= in, * starting from the last bridge to the first. These are called before cal= ling * &drm_encoder_helper_funcs.atomic_enable @@ -708,11 +708,11 @@ static void drm_atomic_bridge_call_pre_enable(struct = drm_bridge *bridge, * Bridge C, Bridge D, Bridge E, Bridge A, Bridge B. * * Note: the bridge passed should be the one closest to the encoder */ void drm_atomic_bridge_chain_pre_enable(struct drm_bridge *bridge, - struct drm_atomic_state *old_state) + struct drm_atomic_state *state) { struct drm_encoder *encoder; struct drm_bridge *iter, *next, *limit; =20 if (!bridge) @@ -747,15 +747,15 @@ void drm_atomic_bridge_chain_pre_enable(struct drm_br= idge *bridge, /* At the first bridge to request prev * bridges called first. */ break; =20 - drm_atomic_bridge_call_pre_enable(next, old_state); + drm_atomic_bridge_call_pre_enable(next, state); } } =20 - drm_atomic_bridge_call_pre_enable(iter, old_state); + drm_atomic_bridge_call_pre_enable(iter, state); =20 if (iter->pre_enable_prev_first) /* Jump all bridges that we have already pre_enabled */ iter =3D limit; =20 --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C27EB274243 for ; Thu, 13 Feb 2025 14:44:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457887; cv=none; b=jWciB4W3NY59xZk387tfgmZuHhPVQV+ebrYXR2OtRyabSPk6ZjUNynQEBPuz0CDPJ/rYfk6Nd03hWkxxnQpiOqXqM9SVk2+E8OBzNyNGS0WCyrjnwWA7CyI8DwCYiVmc9YjrTPYnRTOVRyI/JG4IH6KE4rO4L+zTW8WyyWfVerI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457887; c=relaxed/simple; bh=zI++OHT/zy7L9G9KDHxBKDrJcggygqGsKRhGcwsf6Lk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=H3NHLmCmXFmGQDFguNydTtdi9tPs+0HliSgadQ04VFyPejvUHihM7By22Rbdbw8oeF2wH5DQGPK22pZ5peoRyKTowv7q1RnTk4QtYpb6lPf0JiNK5KuMHLw8/c7m3p3yZ5cWlii51kf8J0Sdix0qgXf21qteTlyz80Og4YpeLDY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KnCH+Iri; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="KnCH+Iri" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2CF4EC4CED1; Thu, 13 Feb 2025 14:44:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457887; bh=zI++OHT/zy7L9G9KDHxBKDrJcggygqGsKRhGcwsf6Lk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=KnCH+Iri2ipZjz6Lo8wxFce3DLvf5nmPey55BQdMzFogCaBAu/9E9uMaHXQZpcGeS UYqztzNnY/BkKKv+B3/efZS4LbaqhI2AzG+tFbQIXIy/unSg1jTh8drA/W48H4dk0b K4+te6/xhVocQOORCO7sOFSguuoUfvH3wfTKAHtSqW28sL+RFHJhONF3IKPR/SaFAY OU4J17dRjwvQCKs1sqL5O9lwBNjJVU7MvhDzQl5Hh/W14+idK2mritaj/KuPekrOl1 e3PhQ2S7oIy4w2D+ROE57VNFpXbellaEA/rlpDBS2ZboqMaKUttIdDENYnQWvuRqF6 gGG0TWGMfhKiA== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:38 +0100 Subject: [PATCH v3 19/37] drm/bridge: Change parameter name of drm_atomic_bridge_chain_enable() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-19-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1947; i=mripard@kernel.org; h=from:subject:message-id; bh=zI++OHT/zy7L9G9KDHxBKDrJcggygqGsKRhGcwsf6Lk=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWOVqthzrf+kbm+AdXZjLo27b1VLkJuRweaqaSnPXh AZDQYeOqSwMwpwMsmKKLE9kwk4vb19c5WC/8gfMHFYmkCEMXJwCMJHbhxkbbh63vdhauGt76OtX MclJe6/dP5OV8pqJzzXT/c1vk6Ns4hzS6zuts4xSjvNe6ypZfTmUseH8PLX/ZzNat+7oX3ZthUq L/fzDaoInZadJLlhswBkguOXtOXbpO56+xYvFBcXYciPqbAE= X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_bridge_chain_enable() enables all bridges affected by a new commit. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_bridge.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index 41bb3700ca7b6f267a75481ae942b9357b5777c9..fa2794217a903b6c61e58edf147= 56a72f99dad38 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -766,31 +766,31 @@ void drm_atomic_bridge_chain_pre_enable(struct drm_br= idge *bridge, EXPORT_SYMBOL(drm_atomic_bridge_chain_pre_enable); =20 /** * drm_atomic_bridge_chain_enable - enables all bridges in the encoder cha= in * @bridge: bridge control structure - * @old_state: old atomic state + * @state: atomic state being committed * * Calls &drm_bridge_funcs.atomic_enable (falls back on * &drm_bridge_funcs.enable) op for all the bridges in the encoder chain, * starting from the first bridge to the last. These are called after comp= leting * &drm_encoder_helper_funcs.atomic_enable * * Note: the bridge passed should be the one closest to the encoder */ void drm_atomic_bridge_chain_enable(struct drm_bridge *bridge, - struct drm_atomic_state *old_state) + struct drm_atomic_state *state) { struct drm_encoder *encoder; =20 if (!bridge) return; =20 encoder =3D bridge->encoder; list_for_each_entry_from(bridge, &encoder->bridge_chain, chain_node) { if (bridge->funcs->atomic_enable) { - bridge->funcs->atomic_enable(bridge, old_state); + bridge->funcs->atomic_enable(bridge, state); } else if (bridge->funcs->enable) { bridge->funcs->enable(bridge); } } } --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 56E3A27425B for ; Thu, 13 Feb 2025 14:44:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457890; cv=none; b=kc4Omc/8Ww/iviVknnXymCqBhx/FbPro46HHW6X77HzaOFkGCV3dnLLOs94M/0/2ipX6+7PMxs57FSmTpa+d9p6aQl+QDQxJwYXHLObN/lutEXWoMtPs2ZaJzw8bgulqRLRMDGKSfaVRIIsFuZg5/YQpwjwdLgqzypP0r4WO6FU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457890; c=relaxed/simple; bh=cq/b70rH1OkT5CCWHkeHkd8zWfSlShUs5TFSxIGHrrw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fosajrjXx/ncehtzfcj5IKZFpjpcyICcE//COxKtnzyk0G2/WK6TksnrfVUaGLrPro88r8viaz7yCP3uHE7V6w+h0mJfR5MTMoj7YEY6naFqvHmwZNWUvlRY7ipWuqI3drxmHhbT2G4xngeGXKTcfM6N6G3auxEiN9hE/GxHcoA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=u9r7L+4X; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="u9r7L+4X" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DAF02C4CEE2; Thu, 13 Feb 2025 14:44:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457890; bh=cq/b70rH1OkT5CCWHkeHkd8zWfSlShUs5TFSxIGHrrw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=u9r7L+4XQxDe5LSo2dL5seamc/t/sDbe6hlwOoEkUJXVsPKgUpa6bKRrLDcI5yJrB wAl+EP8Muct+41dJQvoDKa5gEZl2OijcVzZ0XHYZYb/y8N3ahwRwwaFeQlVh6qixVJ WUdzp5Y+DXvLZ1flW5LVQ9Xq48ZoKjlvc2kNy/EgU0sWY1p0kv6fG7VN65vy12Y+TD oNuFq14hLbtgscnbKvSU5TG9V9aR+0ZH70ohm7BR9NcLHYBFBVe5tkPICRbKZ5TCiD uyY0NVaEd0M6cTZWCos+BxTH1qo+k3tJE+yA0/jcRoPBzjgCkJjU3CJCjGlp+tcI/F VPQOaUXtMjNtA== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:39 +0100 Subject: [PATCH v3 20/37] drm/atomic-helper: Change parameter name of drm_atomic_helper_commit_writebacks() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-20-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1760; i=mripard@kernel.org; h=from:subject:message-id; bh=cq/b70rH1OkT5CCWHkeHkd8zWfSlShUs5TFSxIGHrrw=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWOUurDO9ocOVMF/k5/X/zppWvq9mM2RMY37KW1th1 vRvprZ+x1QWBmFOBlkxRZYnMmGnl7cvrnKwX/kDZg4rE8gQBi5OAZiIuhBjw4k/GWUqdx3SP/34 YVj+rZp7adW3igtvZu9Iyzf6uU5Z7H5S/8bDK6RcIufaNdofvrH4E2NDb8zjDu57H53sTj7cFSq /mFN0yRzx6P01TD1v2bOWXLqyyWdv+JmLmt2vjF8dd8o94XUGAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_helper_commit_writebacks() updates all writeback connectors affected by a new commit. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_atomic_helper.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index 1fc15d4ab096ada43969f5d9f0c74a4384208582..b8bdbbba8555d4ede2282162557= 9430649149267 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1461,26 +1461,26 @@ void drm_atomic_helper_commit_modeset_disables(stru= ct drm_device *dev, crtc_set_mode(dev, state); } EXPORT_SYMBOL(drm_atomic_helper_commit_modeset_disables); =20 static void drm_atomic_helper_commit_writebacks(struct drm_device *dev, - struct drm_atomic_state *old_state) + struct drm_atomic_state *state) { struct drm_connector *connector; struct drm_connector_state *new_conn_state; int i; =20 - for_each_new_connector_in_state(old_state, connector, new_conn_state, i) { + for_each_new_connector_in_state(state, connector, new_conn_state, i) { const struct drm_connector_helper_funcs *funcs; =20 funcs =3D connector->helper_private; if (!funcs->atomic_commit) continue; =20 if (new_conn_state->writeback_job && new_conn_state->writeback_job->fb) { WARN_ON(connector->connector_type !=3D DRM_MODE_CONNECTOR_WRITEBACK); - funcs->atomic_commit(connector, old_state); + funcs->atomic_commit(connector, state); } } } =20 /** --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 83D5B274271 for ; Thu, 13 Feb 2025 14:44:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457893; cv=none; b=KO5BYosStCr/n1KMHR/HirdbdpaV7Yv63fNYMDRdHLtdl3gW10V8Kqfc+4ucayEiQp/SbbDIRQRg1eYFJML8FPT1lbaBdOUith3GW/pnN4MjTc48YjDWn6mVr4lwYuerzVDt4cb3yRel4zMw0G+bK8eKatu7epMLERbPzUFOoNA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457893; c=relaxed/simple; bh=dZR6XleMstBRH8qMe8S0jac5NtCLUK6u4TcwjnZURVk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=avfVsww4Vk6inLAVwYbBVD3kMQfJ7CtWhkks/M0YslvypPdiGsVfVbmorROab707aUJRzIyQl/iEAiRYkd5kkmow7w8lSrV99Jp2dDAVEvGXFndKEi45YRfGr9a7XSYPeRR/v/u8WC81RvzbFq08kyLPLR5oebkuaMwy1Wh8L/Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mG4POwOJ; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mG4POwOJ" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 93410C4CED1; Thu, 13 Feb 2025 14:44:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457892; bh=dZR6XleMstBRH8qMe8S0jac5NtCLUK6u4TcwjnZURVk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=mG4POwOJxqlKiyInEarZFz3sfaSu+fHXjG62ArQ7Oy2I+vfdMIJCBgPCDez1rFVCX nFxHNMhRWwDE5Y9nCS70a3j3MoT6+SEKGA4pcgzF6XPdZ83XwK+bbM5Jb2D2mOk9iv 1M4/hoBb/9xUfodyzwcdx2nkyJaJEfmAHc0fj3/ttHWrDu8j6PMTr1bcTf+7icVMfx cNFeJ06eVel/L0A8p8KzjRIL0XT4CzTUU3ZHojbCW0rOX8wGPtXTdlFv0KiAaQjEEJ i29TGNHZXvDPvbzKIHCN63U1BFozpDW3Y/A7FqOAyiiboEuK32ivgvOlLH24mgofdM kRdxnI1dv73ug== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:40 +0100 Subject: [PATCH v3 21/37] drm/atomic-helper: Change parameter name of drm_atomic_helper_fake_vblank() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-21-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2558; i=mripard@kernel.org; h=from:subject:message-id; bh=dZR6XleMstBRH8qMe8S0jac5NtCLUK6u4TcwjnZURVk=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWOUtoiv3akeZbt+zeEfYOrH7X0qzau7X/m25/UPsS lRir/nkjqksDMKcDLJiiixPZMJOL29fXOVgv/IHzBxWJpAhDFycAjCRjWaMDZd9Gb9dl4vV8o59 9eec2PnXiya2K+8Q/cfUtTejZPL/5gmed5kD5E8W+vM7Pu8Qf3xtF2PDxm6lM8ru3vxv/5r6/fn /VCdojtt/h99m3Iubur2NzZdNrzS4wj9zx/kba/RT+Kc2rAoHAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_helper_fake_vblank() fake a vblank event if needed when a new commit is being applied. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_atomic_helper.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index b8bdbbba8555d4ede22821625579430649149267..37d1bbffd1feed4323e91fadef1= 55d19f51ca5a8 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -2470,11 +2470,11 @@ void drm_atomic_helper_wait_for_dependencies(struct= drm_atomic_state *state) } EXPORT_SYMBOL(drm_atomic_helper_wait_for_dependencies); =20 /** * drm_atomic_helper_fake_vblank - fake VBLANK events if needed - * @old_state: atomic state object with old state structures + * @state: atomic state object being committed * * This function walks all CRTCs and fakes VBLANK events on those with * &drm_crtc_state.no_vblank set to true and &drm_crtc_state.event !=3D NU= LL. * The primary use of this function is writeback connectors working in one= shot * mode and faking VBLANK events. In this case they only fake the VBLANK e= vent @@ -2486,29 +2486,29 @@ EXPORT_SYMBOL(drm_atomic_helper_wait_for_dependenci= es); * VBLANK interrupt. * * This is part of the atomic helper support for nonblocking commits, see * drm_atomic_helper_setup_commit() for an overview. */ -void drm_atomic_helper_fake_vblank(struct drm_atomic_state *old_state) +void drm_atomic_helper_fake_vblank(struct drm_atomic_state *state) { struct drm_crtc_state *new_crtc_state; struct drm_crtc *crtc; int i; =20 - for_each_new_crtc_in_state(old_state, crtc, new_crtc_state, i) { + for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) { unsigned long flags; =20 if (!new_crtc_state->no_vblank) continue; =20 - spin_lock_irqsave(&old_state->dev->event_lock, flags); + spin_lock_irqsave(&state->dev->event_lock, flags); if (new_crtc_state->event) { drm_crtc_send_vblank_event(crtc, new_crtc_state->event); new_crtc_state->event =3D NULL; } - spin_unlock_irqrestore(&old_state->dev->event_lock, flags); + spin_unlock_irqrestore(&state->dev->event_lock, flags); } } EXPORT_SYMBOL(drm_atomic_helper_fake_vblank); =20 /** --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 37E3E26618F for ; Thu, 13 Feb 2025 14:44:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457896; cv=none; b=hwY5rn/cv+y0di1FQXHS0/XxirLSheuXOuJs7odxLG4tNBTddUWfg08Z2RmlvwYuX5BgHrvg728zZ1P/L6Z5BSlNjn4V4qWCWDVUxXMxEBRZWzpshUWqHwk4Fpkmtb7v7grqDsBLAmSTuHDIVzB3xoD215aPeBtV7EPVG5kWdAo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457896; c=relaxed/simple; bh=wwZQ1j4VdfaMYnvlxrr/7i0R0ZreusT6A9z+rTPjyow=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pe32qXnhXeOjYXvdqcH9J/gkF4WynYwkt2YKILiJMCB/SNjeXKSaTJBQvN6FkPpbTq/M6kB/VukONuXilLyMffvBSTBp2BcWwGayVbgAIE8qJ9pFtoFLwPBNuMTD10l02bqz9d8a8F8ZzDgLupr3fzX7Mb+rDwLSc7rPJJzN1lI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=P08qcGtf; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="P08qcGtf" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 44957C4CED1; Thu, 13 Feb 2025 14:44:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457895; bh=wwZQ1j4VdfaMYnvlxrr/7i0R0ZreusT6A9z+rTPjyow=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=P08qcGtfTNb77tWTTXQdCowdrEP6wSL0qzK2PBCnmYYg0ieHYy/1C/pG36qAHHmks oZaZZUrtCPpTv82DoTEpLB4ozROHGyfA4C6D++E6XlhoDDee96cJ6rK2wdegfrG0ap 5pOxAX8PlwRN8Ezsde1dXUW2Ff1/nX4zNMBRD9ZjrdsApWp0avqybqvtJ20xvZLkCZ xAvHsAASxIxZZ00hD7QG/h1pL3cl69LN+2uDUNFSLOWYZ13ZTWIgOImk+lBno5h7hK QLynIAqhi16RbgmhwpbOX/SwLeoQdgNLWeABXHWFh7O/DLl3HU/g8NTnPrf9oPjj4D bP7Jfb7DVUWMQ== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:41 +0100 Subject: [PATCH v3 22/37] drm/atomic-helper: Change parameter name of drm_atomic_helper_commit_hw_done() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-22-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2711; i=mripard@kernel.org; h=from:subject:message-id; bh=wwZQ1j4VdfaMYnvlxrr/7i0R0ZreusT6A9z+rTPjyow=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWOX/+bY9ePWy9npNmtC8z/vdFgcy6X/d+8wmtnhZu pbfFgmLjqksDMKcDLJiiixPZMJOL29fXOVgv/IHzBxWJpAhDFycAjCR9DzGhn1HbhWm7V35xqW/ xWK6W/v76u1f9ITN39x2yZ8lYmG396l+ReifnPqPatWGH3k+37dPYKwv/jltHoOVF1eGdYuen4L +t2XX24s2dcqEPe1Z86Tx+OS4naZG03ms7zatnNc4S94rshYA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_helper_commit_hw_done() signals hardware completion of a given commit. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_atomic_helper.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index 37d1bbffd1feed4323e91fadef155d19f51ca5a8..8b1a0520a49a1831951c5419a6c= 86573b62f5bfd 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -2511,11 +2511,11 @@ void drm_atomic_helper_fake_vblank(struct drm_atomi= c_state *state) } EXPORT_SYMBOL(drm_atomic_helper_fake_vblank); =20 /** * drm_atomic_helper_commit_hw_done - setup possible nonblocking commit - * @old_state: atomic state object with old state structures + * @state: atomic state object being committed * * This function is used to signal completion of the hardware commit step.= After * this step the driver is not allowed to read or change any permanent sof= tware * or hardware modeset state. The only exception is state protected by oth= er * means than &drm_modeset_lock locks. @@ -2524,18 +2524,18 @@ EXPORT_SYMBOL(drm_atomic_helper_fake_vblank); * this function is called. * * This is part of the atomic helper support for nonblocking commits, see * drm_atomic_helper_setup_commit() for an overview. */ -void drm_atomic_helper_commit_hw_done(struct drm_atomic_state *old_state) +void drm_atomic_helper_commit_hw_done(struct drm_atomic_state *state) { struct drm_crtc *crtc; struct drm_crtc_state *old_crtc_state, *new_crtc_state; struct drm_crtc_commit *commit; int i; =20 - for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_s= tate, i) { + for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state= , i) { commit =3D new_crtc_state->commit; if (!commit) continue; =20 /* @@ -2551,13 +2551,13 @@ void drm_atomic_helper_commit_hw_done(struct drm_at= omic_state *old_state) /* backend must have consumed any event by now */ WARN_ON(new_crtc_state->event); complete_all(&commit->hw_done); } =20 - if (old_state->fake_commit) { - complete_all(&old_state->fake_commit->hw_done); - complete_all(&old_state->fake_commit->flip_done); + if (state->fake_commit) { + complete_all(&state->fake_commit->hw_done); + complete_all(&state->fake_commit->flip_done); } } EXPORT_SYMBOL(drm_atomic_helper_commit_hw_done); =20 /** --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C12892661B4 for ; Thu, 13 Feb 2025 14:44:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457898; cv=none; b=YKhFzqZyNcQmW4hgnljQY88mfbydtAgBTbk6G+IFEHEwW8WNeQrZt0T6lfY1kKRcfAJ/0bE7bovOOhQM/nSuJ1bKEE7gx78Ok3IxLSzT6jZZ3bAX5SDFOYVs7DFC0xaTpqnelMeQQeWUpWb36qCxTF2i6kyVbVLk61om+Uzcwyk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457898; c=relaxed/simple; bh=my2FYGu0nJOuFswwXP+mK4jSCPN3NSGG8WBsHjpkHlU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TJGzzwRpbAEbE0aJjARD84hV3KSELQdVFZJ94qSMjvEAyHuJ4VZmWgsGZ9gghm+J51T1Znc5xAxZ1vZLZzv40pr6O9DiXJsuelG1JFiUs3fwmYYgMICDH50qm4AF31gCzVH2FbGkPaicZAWT1X6unQ9Bh5om81LbF12U12uENCA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oK7meAa6; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oK7meAa6" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DCA00C4CED1; Thu, 13 Feb 2025 14:44:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457898; bh=my2FYGu0nJOuFswwXP+mK4jSCPN3NSGG8WBsHjpkHlU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=oK7meAa66ktk+fU1ynOyk1JtxYhIUMCxgL5G+ryRT+36ECtpueIGHdT6KPP1gDzTP i3b5L1sYQljf/dA9fIWDY6fTYIWnbFoQ+xTZ49Af8VG5hlW5c+BfSwSeTT9jG+ohEj +GEOCNBBtnslqp7L8qZm/qPaDAPrPVOO8AGYysxLNa2qfoo0pw0YfJc7UkfSRH1L1h /WvCgLIUBifnen/5L4PhkYklJg6Cl7jKhQfeMVzMz4mAJ61eTkHQAMZSukqQnxKp9u /NdZpuTsfIou6DwaRYjoFWrXzC3p5UtUyJDyA69XQoMQ4yXQzmLPApF4V4fCqBMasT yyn4B7TjmH39Q== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:42 +0100 Subject: [PATCH v3 23/37] drm/atomic-helper: Change parameter name of drm_atomic_helper_wait_for_vblanks() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-23-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3197; i=mripard@kernel.org; h=from:subject:message-id; bh=my2FYGu0nJOuFswwXP+mK4jSCPN3NSGG8WBsHjpkHlU=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWBVei36/LzVbT0Vm7VXnvpO7c9edq5u9xiDIkX3JS m8bPZU9HVNZGIQ5GWTFFFmeyISdXt6+uMrBfuUPmDmsTCBDGLg4BWAiHqmMDd9+WgitW3xnGpMy 742vhz5y7JW8s8lQulZi2TPJLdVlGSxRKrMv1IvwyF15UZzfvv+JDmOd4X0rC0X1CN+/SrXZ/VV vFjIFfdyQnry6MCAsoafPpLDnSIzwk5qARTrlz1c6P/j95QQA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_helper_wait_for_vblanks() waits for vblank events on all the CRTCs affected by a commit. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_atomic_helper.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index 8b1a0520a49a1831951c5419a6c86573b62f5bfd..d2bd7862e0158647d9638a6db25= a8743f89ad7c6 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1666,11 +1666,11 @@ int drm_atomic_helper_wait_for_fences(struct drm_de= vice *dev, EXPORT_SYMBOL(drm_atomic_helper_wait_for_fences); =20 /** * drm_atomic_helper_wait_for_vblanks - wait for vblank on CRTCs * @dev: DRM device - * @old_state: atomic state object with old state structures + * @state: atomic state object being committed * * Helper to, after atomic commit, wait for vblanks on all affected * CRTCs (ie. before cleaning up old framebuffers using * drm_atomic_helper_cleanup_planes()). It will only wait on CRTCs where t= he * framebuffers have actually changed to optimize for the legacy cursor and @@ -1680,44 +1680,44 @@ EXPORT_SYMBOL(drm_atomic_helper_wait_for_fences); * drm_atomic_helper_setup_commit() should look at * drm_atomic_helper_wait_for_flip_done() as an alternative. */ void drm_atomic_helper_wait_for_vblanks(struct drm_device *dev, - struct drm_atomic_state *old_state) + struct drm_atomic_state *state) { struct drm_crtc *crtc; struct drm_crtc_state *old_crtc_state, *new_crtc_state; int i, ret; unsigned int crtc_mask =3D 0; =20 /* * Legacy cursor ioctls are completely unsynced, and userspace * relies on that (by doing tons of cursor updates). */ - if (old_state->legacy_cursor_update) + if (state->legacy_cursor_update) return; =20 - for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_s= tate, i) { + for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state= , i) { if (!new_crtc_state->active) continue; =20 ret =3D drm_crtc_vblank_get(crtc); if (ret !=3D 0) continue; =20 crtc_mask |=3D drm_crtc_mask(crtc); - old_state->crtcs[i].last_vblank_count =3D drm_crtc_vblank_count(crtc); + state->crtcs[i].last_vblank_count =3D drm_crtc_vblank_count(crtc); } =20 - for_each_old_crtc_in_state(old_state, crtc, old_crtc_state, i) { + for_each_old_crtc_in_state(state, crtc, old_crtc_state, i) { if (!(crtc_mask & drm_crtc_mask(crtc))) continue; =20 ret =3D wait_event_timeout(dev->vblank[i].queue, - old_state->crtcs[i].last_vblank_count !=3D - drm_crtc_vblank_count(crtc), - msecs_to_jiffies(100)); + state->crtcs[i].last_vblank_count !=3D + drm_crtc_vblank_count(crtc), + msecs_to_jiffies(100)); =20 WARN(!ret, "[CRTC:%d:%s] vblank wait timed out\n", crtc->base.id, crtc->name); =20 drm_crtc_vblank_put(crtc); --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E8FC241684 for ; Thu, 13 Feb 2025 14:45:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457901; cv=none; b=E0/mCu3lre20fXswYzPg8Wo52a9u++oYHfrFUofJh9TyblMTFjMVMNHZeozl20l0q2bYhMUBPN5VZ8Wftmvx96XgvvlRUTwkDjTo/RGlZWfw4loTKTEecPeC+hYtjOI0lej8EVUn2K7IBlAA00O+421j6jma5BYefAto8ID79EQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457901; c=relaxed/simple; bh=C1A9IEgT2YApuD/rIJh3Cq5kR2HpRAe1NB3F6wBv3uQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tSwlYVRDcadUYSZ6d26ryh9FXgOPNZdUUtQwb6/2pJgoI+pHZEs8zNYRi2J8XDiu9k3tNZDzLHMuTb94+8zi9GOQl421W+QIC/fXe0XqJByjgB/si9wUtnVHr0vOgveb5lfbSVeI2ekZJdhyJQ94yF8CtAgaBaGRXllkzCsgUTk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=D7zCaZ0G; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="D7zCaZ0G" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9CCE2C4CED1; Thu, 13 Feb 2025 14:45:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457901; bh=C1A9IEgT2YApuD/rIJh3Cq5kR2HpRAe1NB3F6wBv3uQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=D7zCaZ0GPOachMEglrnum1WgdjKGkeH/43gK7mcsL652O0YwyNJyDlp2SXJpHSGtw uQFEd3aDO5CzP4ezP6lGtyhDZcCszuclUvWb1qCYMUTOEVKSMGjROnYjcvkCgBPmqx fgT2jaPI7wOPWLh5IlEcWvD1tWvues4J/rLkBHXUQkGDiLgaan0HPd6SOHPH3fyBd+ lB0tT8swrMhu9EL7iq9KHriDHI8KNClc5AaP9ui251BSGPbpF/Z715/tEhAi4bfesc xk8zsZzWhw5lilzNsNwoN/PHItrJ6S699E6+y5nOZdaN6hVmO/1zSmSNcc6btPfEI+ kinfnudCMNMrg== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:43 +0100 Subject: [PATCH v3 24/37] drm/atomic-helper: Change parameter name of drm_atomic_helper_cleanup_planes() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-24-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2219; i=mripard@kernel.org; h=from:subject:message-id; bh=C1A9IEgT2YApuD/rIJh3Cq5kR2HpRAe1NB3F6wBv3uQ=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWBW+mnJf19p068jdSbM2Zy8Ramtry1l8w+COC/ecu 08DGozudExlYRDmZJAVU2R5IhN2enn74ioH+5U/YOawMoEMYeDiFICJWP5ibLiY0b4/vfqlmXNM 57M605l/Y+JvdTWln5QWllBc3LP4yNSoFa/VP/Se1zFluMe8V1d7KWOtkKtPq/eWC6r3l+z5K/u 5sV+htimp+ueJaSGe5xYF71DdUcUh8M7Aczp30fP9yesPKxsDAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_helper_cleanup_planes() is one of the final part of a commit, and will free up all plane resources used in the previous commit. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_atomic_helper.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index d2bd7862e0158647d9638a6db25a8743f89ad7c6..c4de263f7c0dc5750bc99cf8f71= 9707a7e384de9 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -2987,28 +2987,28 @@ drm_atomic_helper_disable_planes_on_crtc(struct drm= _crtc_state *old_crtc_state, EXPORT_SYMBOL(drm_atomic_helper_disable_planes_on_crtc); =20 /** * drm_atomic_helper_cleanup_planes - cleanup plane resources after commit * @dev: DRM device - * @old_state: atomic state object with old state structures + * @state: atomic state object being committed * * This function cleans up plane state, specifically framebuffers, from th= e old - * configuration. Hence the old configuration must be perserved in @old_st= ate to + * configuration. Hence the old configuration must be perserved in @state = to * be able to call this function. * * This function may not be called on the new state when the atomic update * fails at any point after calling drm_atomic_helper_prepare_planes(). Use * drm_atomic_helper_unprepare_planes() in this case. */ void drm_atomic_helper_cleanup_planes(struct drm_device *dev, - struct drm_atomic_state *old_state) + struct drm_atomic_state *state) { struct drm_plane *plane; struct drm_plane_state *old_plane_state; int i; =20 - for_each_old_plane_in_state(old_state, plane, old_plane_state, i) { + for_each_old_plane_in_state(state, plane, old_plane_state, i) { const struct drm_plane_helper_funcs *funcs =3D plane->helper_private; =20 if (funcs->cleanup_fb) funcs->cleanup_fb(plane, old_plane_state); } --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3CF6F139579 for ; Thu, 13 Feb 2025 14:45:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457904; cv=none; b=pLsY3ZBfYs+YSOcYlRIMQKJrbmuzTR5T6KHbbCjLrCVF4l8oEU4HsWxFTtKKIEo2p8ewtKLPICaYsZffsm7y/egpVL8h80nlTTdyO9ond7f2tqm/siImc4gUHClp6IaA4Dc+w6PUSb3jpdqX/B1p6LroavaT9Lbw4pQJPinImJ4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457904; c=relaxed/simple; bh=d0IKwyPVT4JrY/MuE5IPA6hkm62TEwtb6uQJ6pWV0B8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V1VZ6IFf33NDob8masFPXUfoqPZZYQkNAbpP9RKEqoS2Oh+Fo9xZ8yLOp28sodpI31KuW2svIKXxH98zTaumL4D42j6W2oMprj8tGHR2j8Ofi3NrsI6GqYlTspgVObIRHVenfJcFGKyVpTz3oz0yzPQLJSSHJ56yYsqbyDhgw1Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=D1Myulvq; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="D1Myulvq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5142EC4CEE2; Thu, 13 Feb 2025 14:45:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457903; bh=d0IKwyPVT4JrY/MuE5IPA6hkm62TEwtb6uQJ6pWV0B8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=D1MyulvqHzRhwRwx1ygu/OVS/7khcfA9fbKmoH3aQAjlnSpkD9tZqR74U8FDxtsUd e2cmrVSFTsBjkbOftNv9pS64SBsF+5Gc/H/imB90Fu6N61RbFS2c9k2SzowGokJdSR pklGw0kzzV63HlKkRP0Vw/EtQht9hcHzxmkh8lLzkzm2UtaaQ5o8oCt6xF7CQR4Bw2 PMIn655tTd1lxVJoix7hmVjXtVknDK5FerfVrxvIS+yxNgS877oOiaNShmtnR0Q3cI W7LMc+qHphEcpbBIn7cbcKayTunde5rR58VwI3h8g/hOay9yq1mJGqLXZpsb0X85HE WijBs9IgDamqQ== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:44 +0100 Subject: [PATCH v3 25/37] drm/atomic-helper: Change parameter name of drm_atomic_helper_commit_cleanup_done() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-25-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2632; i=mripard@kernel.org; h=from:subject:message-id; bh=d0IKwyPVT4JrY/MuE5IPA6hkm62TEwtb6uQJ6pWV0B8=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWBXT+gXuPeUQqRap6U3MXLFk/tSflyO+rTxfa9QS+ ELZdrpEx1QWBmFOBlkxRZYnMmGnl7cvrnKwX/kDZg4rE8gQBi5OAZjInwuMDRO5hKz6VzzMv7S9 7+HalYknPLqMHO4aXNj3qW2OPu/m4yKPdTk+PNSb+H+m2Y7bk+4nLmesL99Z+efKiakz6osOKEg e1BSq6ftu4nF15a3pfdLXk3rEp1bcayi8VXv8P4f8fLE823kvAQ== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_helper_wait_for_dependencies() is the final part of a commit and signals it completion. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_atomic_helper.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index c4de263f7c0dc5750bc99cf8f719707a7e384de9..df07923a57be5e0bdc135dfa575= 2645ff30e9827 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -2560,27 +2560,27 @@ void drm_atomic_helper_commit_hw_done(struct drm_at= omic_state *state) } EXPORT_SYMBOL(drm_atomic_helper_commit_hw_done); =20 /** * drm_atomic_helper_commit_cleanup_done - signal completion of commit - * @old_state: atomic state object with old state structures + * @state: atomic state object being committed * - * This signals completion of the atomic update @old_state, including any + * This signals completion of the atomic update @state, including any * cleanup work. If used, it must be called right before calling * drm_atomic_state_put(). * * This is part of the atomic helper support for nonblocking commits, see * drm_atomic_helper_setup_commit() for an overview. */ -void drm_atomic_helper_commit_cleanup_done(struct drm_atomic_state *old_st= ate) +void drm_atomic_helper_commit_cleanup_done(struct drm_atomic_state *state) { struct drm_crtc *crtc; struct drm_crtc_state *old_crtc_state; struct drm_crtc_commit *commit; int i; =20 - for_each_old_crtc_in_state(old_state, crtc, old_crtc_state, i) { + for_each_old_crtc_in_state(state, crtc, old_crtc_state, i) { commit =3D old_crtc_state->commit; if (WARN_ON(!commit)) continue; =20 complete_all(&commit->cleanup_done); @@ -2589,13 +2589,13 @@ void drm_atomic_helper_commit_cleanup_done(struct d= rm_atomic_state *old_state) spin_lock(&crtc->commit_lock); list_del(&commit->commit_entry); spin_unlock(&crtc->commit_lock); } =20 - if (old_state->fake_commit) { - complete_all(&old_state->fake_commit->cleanup_done); - WARN_ON(!try_wait_for_completion(&old_state->fake_commit->hw_done)); + if (state->fake_commit) { + complete_all(&state->fake_commit->cleanup_done); + WARN_ON(!try_wait_for_completion(&state->fake_commit->hw_done)); } } EXPORT_SYMBOL(drm_atomic_helper_commit_cleanup_done); =20 /** --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6B3DE153598 for ; Thu, 13 Feb 2025 14:45:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457906; cv=none; b=JhtaGXHkCgcwBp8+T0Zn9nMMqos4WLx5xnkHDNOFOl1HbQ7+Kb1AKbmsgJnp0idHdrZlwvjGUCKvpPgBqBtcCeYU0d/OlTmTAsS/MT1X+HKPDez8NYIufXCcJJw0yxnEZcXBg2At6HJByBcQUSlaZgqLVZdk8MD7lu+AepvmExc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457906; c=relaxed/simple; bh=gFRcGFvjH0bWMkbbVnrkKaXw6Mi4hkjhor6jplmqh6E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=e43ZJ/Msw/+nM0rVhiZ5oh1v7fLs37vZHuBh4kb80YMzW3+FMizY9GSc9lJJd6u1nKSANj2xT0VJeDMWGzg8VumEtxgRqK+PdoM3dDhQroqFifJeo5KzmhDo2UT4Jq/AU0dEvFvcAeHY5YYx4cT4htNHwKIBsVpj5jX+7pF95SE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=dyYq4q5n; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="dyYq4q5n" Received: by smtp.kernel.org (Postfix) with ESMTPSA id EDFEEC4CED1; Thu, 13 Feb 2025 14:45:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457906; bh=gFRcGFvjH0bWMkbbVnrkKaXw6Mi4hkjhor6jplmqh6E=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=dyYq4q5nfydIAW1y7gN6j/ezodOhhsdvXWDpAbjbCP4YHEnY0J1X1OrOzuFkCxoh9 Y5IjTAOH7LqlW+lcajRQYIgn+4J9zLN1Qhd/CDlf7yT7EvHtACpm2QGU0i7VD840iD Z6CGgpUSuzEJF/98btlQu+J7vpBzdxFVNwjZGAbLWraC1zsFHbji42gwVMRGPwOGD3 v5bfQb69WmmAaCb55VNXhZ3kftUsnM42k7Gj3pT+lqNQO4sDV64HmlFD7EI1ZniDdg /Sw8k3LfkwAg2ny8I+JCNWChfsn0StktzoTIipABaY3IGuPO+40D93IgVc9yD7ynNF eS0fhV3x8cPLg== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:45 +0100 Subject: [PATCH v3 26/37] drm/atomic-helper: Change parameter name of drm_atomic_helper_wait_for_flip_done() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-26-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2600; i=mripard@kernel.org; h=from:subject:message-id; bh=gFRcGFvjH0bWMkbbVnrkKaXw6Mi4hkjhor6jplmqh6E=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWBU3szxfceVRkKH9hC3lM4uSD7yxagmSPeToMGVLu Zc67+PCjqksDMKcDLJiiixPZMJOL29fXOVgv/IHzBxWJpAhDFycAjCR9mmMDW3n918seRBRdHCt +Yo1BQsrFfM5NTT/rXCc99sjL+rZwxBzA2OtjIPzEx/PjuR6rWb9krG+IF7iEe894UD1RLVoM8v MRx//9KyZ4NcWVtnP1vAw71r/9KD6V4rrzTIPzuEIvOK0YioA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D drm_atomic_helper_wait_for_flip_done() will wait for pages flips on all CRTCs affected by a given commit. It takes the drm_atomic_state being committed as a parameter. However, that parameter name is called (and documented) as old_state, which is pretty confusing. Let's rename that variable as state. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_atomic_helper.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atom= ic_helper.c index df07923a57be5e0bdc135dfa5752645ff30e9827..5fbaf3707f39d77a85a80d89d21= 83bafe7806c0c 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1726,11 +1726,11 @@ drm_atomic_helper_wait_for_vblanks(struct drm_devic= e *dev, EXPORT_SYMBOL(drm_atomic_helper_wait_for_vblanks); =20 /** * drm_atomic_helper_wait_for_flip_done - wait for all page flips to be do= ne * @dev: DRM device - * @old_state: atomic state object with old state structures + * @state: atomic state object being committed * * Helper to, after atomic commit, wait for page flips on all affected * crtcs (ie. before cleaning up old framebuffers using * drm_atomic_helper_cleanup_planes()). Compared to * drm_atomic_helper_wait_for_vblanks() this waits for the completion on a= ll @@ -1739,32 +1739,32 @@ EXPORT_SYMBOL(drm_atomic_helper_wait_for_vblanks); * * This requires that drivers use the nonblocking commit tracking support * initialized using drm_atomic_helper_setup_commit(). */ void drm_atomic_helper_wait_for_flip_done(struct drm_device *dev, - struct drm_atomic_state *old_state) + struct drm_atomic_state *state) { struct drm_crtc *crtc; int i; =20 for (i =3D 0; i < dev->mode_config.num_crtc; i++) { - struct drm_crtc_commit *commit =3D old_state->crtcs[i].commit; + struct drm_crtc_commit *commit =3D state->crtcs[i].commit; int ret; =20 - crtc =3D old_state->crtcs[i].ptr; + crtc =3D state->crtcs[i].ptr; =20 if (!crtc || !commit) continue; =20 ret =3D wait_for_completion_timeout(&commit->flip_done, 10 * HZ); if (ret =3D=3D 0) drm_err(dev, "[CRTC:%d:%s] flip_done timed out\n", crtc->base.id, crtc->name); } =20 - if (old_state->fake_commit) - complete_all(&old_state->fake_commit->flip_done); + if (state->fake_commit) + complete_all(&state->fake_commit->flip_done); } EXPORT_SYMBOL(drm_atomic_helper_wait_for_flip_done); =20 /** * drm_atomic_helper_commit_tail - commit atomic update to hardware --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B9BC145348 for ; Thu, 13 Feb 2025 14:45:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457909; cv=none; b=N808iLnqRAQNkr6Gp6P7dwCjc6U4spE40F3+auMS7Yw7hDmo5rZ/kytkx4PBWuXj6Z2L8IBkVpCQ3RtW3qRldONXwacgqPn7CresH8C39MjCZNPIP2W3HxNj3TXkIjrzmidbnu0uusCe4TuWVYJtDB8qWcAjEvRz9a5EoEAeits= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457909; c=relaxed/simple; bh=aiB6XOoeIFGxqiU1HWqzrCNphVAhiSOsnRx3CXYiZUI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Sjo7oM7DLLzonnCPiZliX19Zj1XnAw0/JFwhT5reQCWO63GAjWeaLLG7QWSqybprzvHyDy/YbTWdGpCv4lDNN6WgxWKzAzpF4A7Rm4uQEPGqxX7a3+zUXofPOAaZWJ0LtsAoHs00I0T/wsSHi0FhP2RkOk6yacho9F0AoIXfs8I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hd1IOiRC; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hd1IOiRC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A4178C4CED1; Thu, 13 Feb 2025 14:45:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457909; bh=aiB6XOoeIFGxqiU1HWqzrCNphVAhiSOsnRx3CXYiZUI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=hd1IOiRCig9UR0sSgINo0QC+bqdMfxzUA6BdrqNAFJnXbRSbtI6lKHvBREmrMS5mX pF1QcUbvetDyn1Pt3SzGBFKIidzEO7obPWjyxD+68NYk7n4Qbofn/7iIhW5KLbwi/W rRNWGkYDqQk7skFNZMPsYLsyPHm4MjcXNRHUyYHx0i6PknYYmU4YJ8ATVbd8nlt3zU biYPO+8EXQK2c6OvnLlr6/L8UPM4jU5jO2/2iK348OMNJadqzTkWTWL0CV2yhHmG6v RlEIKrpJWJAd8esWt+b06P0hPkntJFjrtpNQwQk3jUbYZrAohZJlld4+uJHK5ltLul A12IjXJ4BwJyQ== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:46 +0100 Subject: [PATCH v3 27/37] drm/bridge: Add encoder parameter to drm_bridge_funcs.attach Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-27-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=87983; i=mripard@kernel.org; h=from:subject:message-id; bh=aiB6XOoeIFGxqiU1HWqzrCNphVAhiSOsnRx3CXYiZUI=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWJV8ukN4v2yaGMAW5fQsa18GR9i37ec/zuyOit10r 6tjWllBx1QWBmFOBlkxRZYnMmGnl7cvrnKwX/kDZg4rE8gQBi5OAZhItjRjrbi5+Qupigyh4h+r ZW8fuz3rT9bV7TsvKCyfWJzIamUr110q5X/ylXfhtSbPAqYUC6mZjA1/W8+keR89Fxrlx2X8vkS lXnJBi1vYp51m5osyby/SNX4lkv5+4b9kvqXH38vpOp3NyAIA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D The drm_bridge structure contains an encoder pointer that is widely used by bridge drivers. This pattern is largely documented as deprecated in other KMS entities for atomic drivers. However, one of the main use of that pointer is done in attach to just call drm_bridge_attach on the next bridge to add it to the bridge list. While this dereferences the bridge->encoder pointer, it's effectively the same encoder the bridge was being attached to. We can make it more explicit by adding the encoder the bridge is attached to to the list of attach parameters. This also removes the need to dereference bridge->encoder in most drivers. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard Reviewed-by: Douglas Anderson Tested-by: Douglas Anderson --- drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 3 ++- drivers/gpu/drm/bridge/analogix/analogix-anx6345.c | 3 ++- drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c | 3 ++- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 2 +- drivers/gpu/drm/bridge/analogix/anx7625.c | 3 ++- drivers/gpu/drm/bridge/aux-bridge.c | 3 ++- drivers/gpu/drm/bridge/aux-hpd-bridge.c | 1 + drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 3 ++- drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c | 1 + drivers/gpu/drm/bridge/chipone-icn6211.c | 6 ++++-- drivers/gpu/drm/bridge/chrontel-ch7033.c | 5 +++-- drivers/gpu/drm/bridge/display-connector.c | 1 + drivers/gpu/drm/bridge/fsl-ldb.c | 3 ++- drivers/gpu/drm/bridge/imx/imx-ldb-helper.c | 7 +++---- drivers/gpu/drm/bridge/imx/imx-ldb-helper.h | 2 +- drivers/gpu/drm/bridge/imx/imx-legacy-bridge.c | 3 ++- drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c | 3 ++- drivers/gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c | 3 ++- drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c | 3 ++- drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c | 3 ++- drivers/gpu/drm/bridge/ite-it6263.c | 7 ++++--- drivers/gpu/drm/bridge/ite-it6505.c | 1 + drivers/gpu/drm/bridge/ite-it66121.c | 3 ++- drivers/gpu/drm/bridge/lontium-lt8912b.c | 3 ++- drivers/gpu/drm/bridge/lontium-lt9211.c | 3 ++- drivers/gpu/drm/bridge/lontium-lt9611.c | 3 ++- drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 3 ++- drivers/gpu/drm/bridge/lvds-codec.c | 3 ++- drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c | 1 + drivers/gpu/drm/bridge/microchip-lvds.c | 3 ++- drivers/gpu/drm/bridge/nwl-dsi.c | 3 ++- drivers/gpu/drm/bridge/nxp-ptn3460.c | 5 +++-- drivers/gpu/drm/bridge/panel.c | 3 ++- drivers/gpu/drm/bridge/parade-ps8622.c | 1 + drivers/gpu/drm/bridge/parade-ps8640.c | 3 ++- drivers/gpu/drm/bridge/samsung-dsim.c | 3 ++- drivers/gpu/drm/bridge/sii902x.c | 5 +++-- drivers/gpu/drm/bridge/sil-sii8620.c | 1 + drivers/gpu/drm/bridge/simple-bridge.c | 5 +++-- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 3 ++- drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 5 +++-- drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c | 5 +++-- drivers/gpu/drm/bridge/tc358762.c | 3 ++- drivers/gpu/drm/bridge/tc358764.c | 3 ++- drivers/gpu/drm/bridge/tc358767.c | 2 ++ drivers/gpu/drm/bridge/tc358768.c | 3 ++- drivers/gpu/drm/bridge/tc358775.c | 3 ++- drivers/gpu/drm/bridge/thc63lvd1024.c | 3 ++- drivers/gpu/drm/bridge/ti-dlpc3433.c | 4 ++-- drivers/gpu/drm/bridge/ti-sn65dsi83.c | 3 ++- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 3 ++- drivers/gpu/drm/bridge/ti-tdp158.c | 6 ++++-- drivers/gpu/drm/bridge/ti-tfp410.c | 5 +++-- drivers/gpu/drm/bridge/ti-tpd12s015.c | 3 ++- drivers/gpu/drm/drm_bridge.c | 2 +- drivers/gpu/drm/i2c/tda998x_drv.c | 1 + drivers/gpu/drm/imx/ipuv3/parallel-display.c | 3 ++- drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 5 +++-- drivers/gpu/drm/mcde/mcde_dsi.c | 3 ++- drivers/gpu/drm/mediatek/mtk_dp.c | 3 ++- drivers/gpu/drm/mediatek/mtk_dpi.c | 3 ++- drivers/gpu/drm/mediatek/mtk_dsi.c | 3 ++- drivers/gpu/drm/mediatek/mtk_hdmi.c | 3 ++- drivers/gpu/drm/meson/meson_encoder_cvbs.c | 3 ++- drivers/gpu/drm/meson/meson_encoder_dsi.c | 3 ++- drivers/gpu/drm/meson/meson_encoder_hdmi.c | 3 ++- drivers/gpu/drm/msm/dsi/dsi_manager.c | 3 ++- drivers/gpu/drm/omapdrm/dss/dpi.c | 3 ++- drivers/gpu/drm/omapdrm/dss/dsi.c | 3 ++- drivers/gpu/drm/omapdrm/dss/hdmi4.c | 3 ++- drivers/gpu/drm/omapdrm/dss/hdmi5.c | 3 ++- drivers/gpu/drm/omapdrm/dss/sdi.c | 3 ++- drivers/gpu/drm/omapdrm/dss/venc.c | 3 ++- drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c | 3 ++- drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c | 3 ++- drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 3 ++- drivers/gpu/drm/stm/lvds.c | 11 +++++------ drivers/gpu/drm/tidss/tidss_encoder.c | 3 ++- drivers/gpu/drm/vc4/vc4_dsi.c | 3 ++- drivers/gpu/drm/xlnx/zynqmp_dp.c | 3 ++- drivers/platform/arm64/acer-aspire1-ec.c | 3 ++- include/drm/drm_bridge.h | 2 +- 82 files changed, 170 insertions(+), 94 deletions(-) diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm= /bridge/adv7511/adv7511_drv.c index 050dae338ffee36a8d6ee6fcce69f51486a957fe..1257009e850c1b20184cfaea5b6= a4440e75e10d7 100644 --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c @@ -946,17 +946,18 @@ static enum drm_mode_status adv7511_bridge_mode_valid= (struct drm_bridge *bridge, else return adv7511_mode_valid(adv, mode); } =20 static int adv7511_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct adv7511 *adv =3D bridge_to_adv7511(bridge); int ret =3D 0; =20 if (adv->next_bridge) { - ret =3D drm_bridge_attach(bridge->encoder, adv->next_bridge, bridge, + ret =3D drm_bridge_attach(encoder, adv->next_bridge, bridge, flags | DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (ret) return ret; } =20 diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c b/drivers/g= pu/drm/bridge/analogix/analogix-anx6345.c index 83d711ee3a2eb8b7a491c115171b5cc12a9df066..a88a33eb5d972cb47e82cfccde8= 7ecf43d051637 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c +++ b/drivers/gpu/drm/bridge/analogix/analogix-anx6345.c @@ -515,10 +515,11 @@ static const struct drm_connector_funcs anx6345_conne= ctor_funcs =3D { .atomic_duplicate_state =3D drm_atomic_helper_connector_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_connector_destroy_state, }; =20 static int anx6345_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct anx6345 *anx6345 =3D bridge_to_anx6345(bridge); int err; =20 @@ -551,11 +552,11 @@ static int anx6345_bridge_attach(struct drm_bridge *b= ridge, &anx6345_connector_helper_funcs); =20 anx6345->connector.polled =3D DRM_CONNECTOR_POLL_HPD; =20 err =3D drm_connector_attach_encoder(&anx6345->connector, - bridge->encoder); + encoder); if (err) { DRM_ERROR("Failed to link up connector to encoder: %d\n", err); goto connector_cleanup; } =20 diff --git a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c b/drivers/g= pu/drm/bridge/analogix/analogix-anx78xx.c index f74694bb9c50a2f71d51d27e08c08bb854cf29ea..8b4597885614d6278f5782fdce5= 065044d5c2966 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c +++ b/drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c @@ -886,10 +886,11 @@ static const struct drm_connector_funcs anx78xx_conne= ctor_funcs =3D { .atomic_duplicate_state =3D drm_atomic_helper_connector_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_connector_destroy_state, }; =20 static int anx78xx_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct anx78xx *anx78xx =3D bridge_to_anx78xx(bridge); int err; =20 @@ -922,11 +923,11 @@ static int anx78xx_bridge_attach(struct drm_bridge *b= ridge, &anx78xx_connector_helper_funcs); =20 anx78xx->connector.polled =3D DRM_CONNECTOR_POLL_HPD; =20 err =3D drm_connector_attach_encoder(&anx78xx->connector, - bridge->encoder); + encoder); if (err) { DRM_ERROR("Failed to link up connector to encoder: %d\n", err); goto connector_cleanup; } =20 diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/g= pu/drm/bridge/analogix/analogix_dp_core.c index 60ce33eadd97548c39201332e26b56e71245253a..bc87055ab82607e42cee638cbab= 5d2c136232bd7 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1111,14 +1111,14 @@ static const struct drm_connector_funcs analogix_dp= _connector_funcs =3D { .atomic_duplicate_state =3D drm_atomic_helper_connector_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_connector_destroy_state, }; =20 static int analogix_dp_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct analogix_dp_device *dp =3D bridge->driver_private; - struct drm_encoder *encoder =3D dp->encoder; struct drm_connector *connector =3D NULL; int ret =3D 0; =20 if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) { DRM_ERROR("Fix bridge driver to make connector optional!"); diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/br= idge/analogix/anx7625.c index 0b97b66de577421b0e68e748d0075f674c71fbf1..0b61e77c0398bbce3ecf55753dd= e71a27eda8fe5 100644 --- a/drivers/gpu/drm/bridge/analogix/anx7625.c +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c @@ -2139,10 +2139,11 @@ static void hdcp_check_work_func(struct work_struct= *work) mutex_unlock(&ctx->hdcp_wq_lock); drm_modeset_unlock(&drm_dev->mode_config.connection_mutex); } =20 static int anx7625_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct anx7625_data *ctx =3D bridge_to_anx7625(bridge); int err; struct device *dev =3D ctx->dev; @@ -2157,11 +2158,11 @@ static int anx7625_bridge_attach(struct drm_bridge = *bridge, dev_err(dev, "failed to register aux channel: %d\n", err); return err; } =20 if (ctx->pdata.panel_bridge) { - err =3D drm_bridge_attach(bridge->encoder, + err =3D drm_bridge_attach(encoder, ctx->pdata.panel_bridge, &ctx->bridge, flags); if (err) return err; } diff --git a/drivers/gpu/drm/bridge/aux-bridge.c b/drivers/gpu/drm/bridge/a= ux-bridge.c index 015983c015e508f75435bf97ee1dba785edcd23e..c179b86d208f70d95b41e6f2157= b78f97bac4d8d 100644 --- a/drivers/gpu/drm/bridge/aux-bridge.c +++ b/drivers/gpu/drm/bridge/aux-bridge.c @@ -84,20 +84,21 @@ struct drm_aux_bridge_data { struct drm_bridge *next_bridge; struct device *dev; }; =20 static int drm_aux_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct drm_aux_bridge_data *data; =20 if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) return -EINVAL; =20 data =3D container_of(bridge, struct drm_aux_bridge_data, bridge); =20 - return drm_bridge_attach(bridge->encoder, data->next_bridge, bridge, + return drm_bridge_attach(encoder, data->next_bridge, bridge, DRM_BRIDGE_ATTACH_NO_CONNECTOR); } =20 static const struct drm_bridge_funcs drm_aux_bridge_funcs =3D { .attach =3D drm_aux_bridge_attach, diff --git a/drivers/gpu/drm/bridge/aux-hpd-bridge.c b/drivers/gpu/drm/brid= ge/aux-hpd-bridge.c index 48f297c78ee67c8f9034869f6824a6dc7f88bdd7..b3f588b71a7d7ad5c2ee7b07c39= 079bc5ba34cee 100644 --- a/drivers/gpu/drm/bridge/aux-hpd-bridge.c +++ b/drivers/gpu/drm/bridge/aux-hpd-bridge.c @@ -154,10 +154,11 @@ void drm_aux_hpd_bridge_notify(struct device *dev, en= um drm_connector_status sta drm_bridge_hpd_notify(&data->bridge, status); } EXPORT_SYMBOL_GPL(drm_aux_hpd_bridge_notify); =20 static int drm_aux_hpd_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { return flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR ? 0 : -EINVAL; } =20 diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index c7a0247e06adf3e532f830363b3422a8058513ef..8f54c034ac4f3e82c38607a0e52= d4745654b571f 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -603,10 +603,11 @@ static int cdns_dsi_check_conf(struct cdns_dsi *dsi, =20 return 0; } =20 static int cdns_dsi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct cdns_dsi_input *input =3D bridge_to_cdns_dsi_input(bridge); struct cdns_dsi *dsi =3D input_to_dsi(input); struct cdns_dsi_output *output =3D &dsi->output; @@ -615,11 +616,11 @@ static int cdns_dsi_bridge_attach(struct drm_bridge *= bridge, dev_err(dsi->base.dev, "cdns-dsi driver is only compatible with DRM devices supporting atomic = updates"); return -ENOTSUPP; } =20 - return drm_bridge_attach(bridge->encoder, output->bridge, bridge, + return drm_bridge_attach(encoder, output->bridge, bridge, flags); } =20 static enum drm_mode_status cdns_dsi_bridge_mode_valid(struct drm_bridge *bridge, diff --git a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c b/drivers/= gpu/drm/bridge/cadence/cdns-mhdp8546-core.c index ef586e7df83b96f39ab552171d2ef665971a81ef..69347799913aed257a4a9447028= 83753df9c34bb 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c @@ -1724,10 +1724,11 @@ static int cdns_mhdp_connector_init(struct cdns_mhd= p_device *mhdp) =20 return ret; } =20 static int cdns_mhdp_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct cdns_mhdp_device *mhdp =3D bridge_to_mhdp(bridge); bool hw_ready; int ret; diff --git a/drivers/gpu/drm/bridge/chipone-icn6211.c b/drivers/gpu/drm/bri= dge/chipone-icn6211.c index 81f7c701961fddadbced6e4ad1bf9f12d3325fa7..634c5b0306679d2e68798c2b901= 3aae4491dd44c 100644 --- a/drivers/gpu/drm/bridge/chipone-icn6211.c +++ b/drivers/gpu/drm/bridge/chipone-icn6211.c @@ -578,15 +578,17 @@ static int chipone_dsi_host_attach(struct chipone *ic= n) mipi_dsi_device_unregister(dsi); =20 return ret; } =20 -static int chipone_attach(struct drm_bridge *bridge, enum drm_bridge_attac= h_flags flags) +static int chipone_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, + enum drm_bridge_attach_flags flags) { struct chipone *icn =3D bridge_to_chipone(bridge); =20 - return drm_bridge_attach(bridge->encoder, icn->panel_bridge, bridge, flag= s); + return drm_bridge_attach(encoder, icn->panel_bridge, bridge, flags); } =20 #define MAX_INPUT_SEL_FORMATS 1 =20 static u32 * diff --git a/drivers/gpu/drm/bridge/chrontel-ch7033.c b/drivers/gpu/drm/bri= dge/chrontel-ch7033.c index da17f0978a791fe9bffab3fa0527e3a355d65c6b..210c45c1efd48f5b541bf73da66= a169c27e110b2 100644 --- a/drivers/gpu/drm/bridge/chrontel-ch7033.c +++ b/drivers/gpu/drm/bridge/chrontel-ch7033.c @@ -266,17 +266,18 @@ static void ch7033_hpd_event(void *arg, enum drm_conn= ector_status status) if (priv->bridge.dev) drm_helper_hpd_irq_event(priv->connector.dev); } =20 static int ch7033_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct ch7033_priv *priv =3D bridge_to_ch7033_priv(bridge); struct drm_connector *connector =3D &priv->connector; int ret; =20 - ret =3D drm_bridge_attach(bridge->encoder, priv->next_bridge, bridge, + ret =3D drm_bridge_attach(encoder, priv->next_bridge, bridge, DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (ret) return ret; =20 if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) @@ -303,11 +304,11 @@ static int ch7033_bridge_attach(struct drm_bridge *br= idge, if (ret) { DRM_ERROR("Failed to initialize connector\n"); return ret; } =20 - return drm_connector_attach_encoder(&priv->connector, bridge->encoder); + return drm_connector_attach_encoder(&priv->connector, encoder); } =20 static void ch7033_bridge_detach(struct drm_bridge *bridge) { struct ch7033_priv *priv =3D bridge_to_ch7033_priv(bridge); diff --git a/drivers/gpu/drm/bridge/display-connector.c b/drivers/gpu/drm/b= ridge/display-connector.c index 72bc508d4e6e2bf5be535c8856b46465d1ff835e..09c08a53d5bdc5c48f5d520472f= 5a311289d4862 100644 --- a/drivers/gpu/drm/bridge/display-connector.c +++ b/drivers/gpu/drm/bridge/display-connector.c @@ -32,10 +32,11 @@ to_display_connector(struct drm_bridge *bridge) { return container_of(bridge, struct display_connector, bridge); } =20 static int display_connector_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { return flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR ? 0 : -EINVAL; } =20 diff --git a/drivers/gpu/drm/bridge/fsl-ldb.c b/drivers/gpu/drm/bridge/fsl-= ldb.c index 26ae1ab5237f81ebd6c56075a18136f4a5b56ec9..72d8f32d48faf6726ea67d8770e= d83f77f3a0862 100644 --- a/drivers/gpu/drm/bridge/fsl-ldb.c +++ b/drivers/gpu/drm/bridge/fsl-ldb.c @@ -111,15 +111,16 @@ static unsigned long fsl_ldb_link_frequency(struct fs= l_ldb *fsl_ldb, int clock) else return clock * 7000; } =20 static int fsl_ldb_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct fsl_ldb *fsl_ldb =3D to_fsl_ldb(bridge); =20 - return drm_bridge_attach(bridge->encoder, fsl_ldb->panel_bridge, + return drm_bridge_attach(encoder, fsl_ldb->panel_bridge, bridge, flags); } =20 static void fsl_ldb_atomic_enable(struct drm_bridge *bridge, struct drm_atomic_state *state) diff --git a/drivers/gpu/drm/bridge/imx/imx-ldb-helper.c b/drivers/gpu/drm/= bridge/imx/imx-ldb-helper.c index 9b5bebbe357dd4905a792abc5cecdbb9ce10ffb8..61347f6ec33d906264f7e06902b= 0d915d263f3f8 100644 --- a/drivers/gpu/drm/bridge/imx/imx-ldb-helper.c +++ b/drivers/gpu/drm/bridge/imx/imx-ldb-helper.c @@ -102,11 +102,11 @@ void ldb_bridge_disable_helper(struct drm_bridge *bri= dge) =20 regmap_write(ldb->regmap, ldb->ctrl_reg, ldb->ldb_ctrl); } EXPORT_SYMBOL_GPL(ldb_bridge_disable_helper); =20 -int ldb_bridge_attach_helper(struct drm_bridge *bridge, +int ldb_bridge_attach_helper(struct drm_bridge *bridge, struct drm_encoder= *encoder, enum drm_bridge_attach_flags flags) { struct ldb_channel *ldb_ch =3D bridge->driver_private; struct ldb *ldb =3D ldb_ch->ldb; =20 @@ -114,13 +114,12 @@ int ldb_bridge_attach_helper(struct drm_bridge *bridg= e, DRM_DEV_ERROR(ldb->dev, "do not support creating a drm_connector\n"); return -EINVAL; } =20 - return drm_bridge_attach(bridge->encoder, - ldb_ch->next_bridge, bridge, - DRM_BRIDGE_ATTACH_NO_CONNECTOR); + return drm_bridge_attach(encoder, ldb_ch->next_bridge, bridge, + DRM_BRIDGE_ATTACH_NO_CONNECTOR); } EXPORT_SYMBOL_GPL(ldb_bridge_attach_helper); =20 int ldb_init_helper(struct ldb *ldb) { diff --git a/drivers/gpu/drm/bridge/imx/imx-ldb-helper.h b/drivers/gpu/drm/= bridge/imx/imx-ldb-helper.h index a0a5cde27fbc6eb0d3932381f78d6803542b9bac..38a8a54b37a60e1be942aaa60b1= d1bc375a7a131 100644 --- a/drivers/gpu/drm/bridge/imx/imx-ldb-helper.h +++ b/drivers/gpu/drm/bridge/imx/imx-ldb-helper.h @@ -79,11 +79,11 @@ void ldb_bridge_mode_set_helper(struct drm_bridge *brid= ge, =20 void ldb_bridge_enable_helper(struct drm_bridge *bridge); =20 void ldb_bridge_disable_helper(struct drm_bridge *bridge); =20 -int ldb_bridge_attach_helper(struct drm_bridge *bridge, +int ldb_bridge_attach_helper(struct drm_bridge *bridge, struct drm_encoder= *encoder, enum drm_bridge_attach_flags flags); =20 int ldb_init_helper(struct ldb *ldb); =20 int ldb_find_next_bridge_helper(struct ldb *ldb); diff --git a/drivers/gpu/drm/bridge/imx/imx-legacy-bridge.c b/drivers/gpu/d= rm/bridge/imx/imx-legacy-bridge.c index 3ebf0b9866de13b12fab2b3c1e4db5f3d446089a..7d9cb25595b17c3f008ebf0bf4b= 6190020a793d7 100644 --- a/drivers/gpu/drm/bridge/imx/imx-legacy-bridge.c +++ b/drivers/gpu/drm/bridge/imx/imx-legacy-bridge.c @@ -21,11 +21,12 @@ struct imx_legacy_bridge { }; =20 #define to_imx_legacy_bridge(bridge) container_of(bridge, struct imx_legac= y_bridge, base) =20 static int imx_legacy_bridge_attach(struct drm_bridge *bridge, - enum drm_bridge_attach_flags flags) + struct drm_encoder *encoder, + enum drm_bridge_attach_flags flags) { if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) return -EINVAL; =20 return 0; diff --git a/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c b/drivers/gpu/drm= /bridge/imx/imx8mp-hdmi-pvi.c index a17433a7c75530668662ed8dd1526b44f9a32f32..8a4fd7d77a8d516b3b46f41cf07= d2633d23bde12 100644 --- a/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c +++ b/drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c @@ -38,15 +38,16 @@ to_imx8mp_hdmi_pvi(struct drm_bridge *bridge) { return container_of(bridge, struct imx8mp_hdmi_pvi, bridge); } =20 static int imx8mp_hdmi_pvi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct imx8mp_hdmi_pvi *pvi =3D to_imx8mp_hdmi_pvi(bridge); =20 - return drm_bridge_attach(bridge->encoder, pvi->next_bridge, + return drm_bridge_attach(encoder, pvi->next_bridge, bridge, flags); } =20 static void imx8mp_hdmi_pvi_bridge_enable(struct drm_bridge *bridge, struct drm_atomic_state *state) diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c b/drivers/= gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c index 1d9529dc7f2a93e7547ae1f4c6193598a5574135..1f6fd488e7039e943351006d337= 3009f0c15cb08 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c +++ b/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c @@ -106,10 +106,11 @@ imx8qxp_pc_bridge_mode_valid(struct drm_bridge *bridg= e, =20 return MODE_OK; } =20 static int imx8qxp_pc_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct imx8qxp_pc_channel *ch =3D bridge->driver_private; struct imx8qxp_pc *pc =3D ch->pc; =20 @@ -117,11 +118,11 @@ static int imx8qxp_pc_bridge_attach(struct drm_bridge= *bridge, DRM_DEV_ERROR(pc->dev, "do not support creating a drm_connector\n"); return -EINVAL; } =20 - return drm_bridge_attach(bridge->encoder, + return drm_bridge_attach(encoder, ch->next_bridge, bridge, DRM_BRIDGE_ATTACH_NO_CONNECTOR); } =20 static void diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c b/drivers/gpu/= drm/bridge/imx/imx8qxp-pixel-link.c index cd6818db0fd332cac03241917bbb107b7261097c..e092c9ea99b0224802919ff84b4= 48acb53508951 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c +++ b/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c @@ -126,21 +126,22 @@ static void imx8qxp_pixel_link_set_mst_addr(struct im= x8qxp_pixel_link *pl) "failed to set DC%u stream%u pixel link mst addr(%u): %d\n", pl->dc_id, pl->stream_id, pl->mst_addr, ret); } =20 static int imx8qxp_pixel_link_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct imx8qxp_pixel_link *pl =3D bridge->driver_private; =20 if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) { DRM_DEV_ERROR(pl->dev, "do not support creating a drm_connector\n"); return -EINVAL; } =20 - return drm_bridge_attach(bridge->encoder, + return drm_bridge_attach(encoder, pl->next_bridge, bridge, DRM_BRIDGE_ATTACH_NO_CONNECTOR); } =20 static void diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c b/drivers/gpu/drm= /bridge/imx/imx8qxp-pxl2dpi.c index 49dd4f96d52c966d9a038b0b04007631d0837f4d..da138ab51b3bd2c6ebd3780c098= 18891d5320092 100644 --- a/drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c +++ b/drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c @@ -46,21 +46,22 @@ struct imx8qxp_pxl2dpi { }; =20 #define bridge_to_p2d(b) container_of(b, struct imx8qxp_pxl2dpi, bridge) =20 static int imx8qxp_pxl2dpi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct imx8qxp_pxl2dpi *p2d =3D bridge->driver_private; =20 if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) { DRM_DEV_ERROR(p2d->dev, "do not support creating a drm_connector\n"); return -EINVAL; } =20 - return drm_bridge_attach(bridge->encoder, + return drm_bridge_attach(encoder, p2d->next_bridge, bridge, DRM_BRIDGE_ATTACH_NO_CONNECTOR); } =20 static int diff --git a/drivers/gpu/drm/bridge/ite-it6263.c b/drivers/gpu/drm/bridge/i= te-it6263.c index 21152a1c28f7f5e326794488f473b030219a2f65..a3a63a977b0a8487ad38fc08e0e= ed08672f4d41a 100644 --- a/drivers/gpu/drm/bridge/ite-it6263.c +++ b/drivers/gpu/drm/bridge/ite-it6263.c @@ -663,33 +663,34 @@ it6263_bridge_mode_valid(struct drm_bridge *bridge, =20 return bridge->funcs->hdmi_tmds_char_rate_valid(bridge, mode, rate); } =20 static int it6263_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct it6263 *it =3D bridge_to_it6263(bridge); struct drm_connector *connector; int ret; =20 - ret =3D drm_bridge_attach(bridge->encoder, it->next_bridge, bridge, + ret =3D drm_bridge_attach(encoder, it->next_bridge, bridge, flags | DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (ret < 0) return ret; =20 if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) return 0; =20 - connector =3D drm_bridge_connector_init(bridge->dev, bridge->encoder); + connector =3D drm_bridge_connector_init(bridge->dev, encoder); if (IS_ERR(connector)) { ret =3D PTR_ERR(connector); dev_err(it->dev, "failed to initialize bridge connector: %d\n", ret); return ret; } =20 - drm_connector_attach_encoder(connector, bridge->encoder); + drm_connector_attach_encoder(connector, encoder); =20 return 0; } =20 static enum drm_connector_status it6263_bridge_detect(struct drm_bridge *b= ridge) diff --git a/drivers/gpu/drm/bridge/ite-it6505.c b/drivers/gpu/drm/bridge/i= te-it6505.c index 8a607558ac89ed2961d13515d987c141f2b6e116..4e8b1dcba64fcf09ffd68d1a57d= ec5d30190ebe6 100644 --- a/drivers/gpu/drm/bridge/ite-it6505.c +++ b/drivers/gpu/drm/bridge/ite-it6505.c @@ -3122,10 +3122,11 @@ static inline struct it6505 *bridge_to_it6505(struc= t drm_bridge *bridge) { return container_of(bridge, struct it6505, bridge); } =20 static int it6505_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct it6505 *it6505 =3D bridge_to_it6505(bridge); struct device *dev =3D it6505->dev; int ret; diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/= ite-it66121.c index b9f90f32145de0f17eadfdf0efbe95a2b5ca026d..7b110ae532918d2d6f91ebc5f74= 7c38e7e77dc07 100644 --- a/drivers/gpu/drm/bridge/ite-it66121.c +++ b/drivers/gpu/drm/bridge/ite-it66121.c @@ -584,19 +584,20 @@ static bool it66121_is_hpd_detect(struct it66121_ctx = *ctx) =20 return val & IT66121_SYS_STATUS_HPDETECT; } =20 static int it66121_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct it66121_ctx *ctx =3D container_of(bridge, struct it66121_ctx, brid= ge); int ret; =20 if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) return -EINVAL; =20 - ret =3D drm_bridge_attach(bridge->encoder, ctx->next_bridge, bridge, flag= s); + ret =3D drm_bridge_attach(encoder, ctx->next_bridge, bridge, flags); if (ret) return ret; =20 if (ctx->info->id =3D=3D ID_IT66121) { ret =3D regmap_write_bits(ctx->regmap, IT66121_CLK_BANK_REG, diff --git a/drivers/gpu/drm/bridge/lontium-lt8912b.c b/drivers/gpu/drm/bri= dge/lontium-lt8912b.c index 52da204f57404e63c7eadb4318b55082ae732105..3e49d855b3648880cea9bce5f3f= 04fbb6f838a45 100644 --- a/drivers/gpu/drm/bridge/lontium-lt8912b.c +++ b/drivers/gpu/drm/bridge/lontium-lt8912b.c @@ -541,16 +541,17 @@ static int lt8912_bridge_connector_init(struct drm_br= idge *bridge) exit: return ret; } =20 static int lt8912_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct lt8912 *lt =3D bridge_to_lt8912(bridge); int ret; =20 - ret =3D drm_bridge_attach(bridge->encoder, lt->hdmi_port, bridge, + ret =3D drm_bridge_attach(encoder, lt->hdmi_port, bridge, DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (ret < 0) { dev_err(lt->dev, "Failed to attach next bridge (%d)\n", ret); return ret; } diff --git a/drivers/gpu/drm/bridge/lontium-lt9211.c b/drivers/gpu/drm/brid= ge/lontium-lt9211.c index 0fc5ea18fe6a8d0c1578dcae960d78cc33f4fb6d..9b2dac9bd63c5afd4ffbafafdbb= b1230549bc36f 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9211.c +++ b/drivers/gpu/drm/bridge/lontium-lt9211.c @@ -97,15 +97,16 @@ static struct lt9211 *bridge_to_lt9211(struct drm_bridg= e *bridge) { return container_of(bridge, struct lt9211, bridge); } =20 static int lt9211_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct lt9211 *ctx =3D bridge_to_lt9211(bridge); =20 - return drm_bridge_attach(bridge->encoder, ctx->panel_bridge, + return drm_bridge_attach(encoder, ctx->panel_bridge, &ctx->bridge, flags); } =20 static int lt9211_read_chipid(struct lt9211 *ctx) { diff --git a/drivers/gpu/drm/bridge/lontium-lt9611.c b/drivers/gpu/drm/brid= ge/lontium-lt9611.c index 026803034231f78c17f619dc04119bdd9b2b6679..53987e826ccd3368e94a1d75633= 54d359ebcbb17 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9611.c +++ b/drivers/gpu/drm/bridge/lontium-lt9611.c @@ -738,15 +738,16 @@ static struct mipi_dsi_device *lt9611_attach_dsi(stru= ct lt9611 *lt9611, =20 return dsi; } =20 static int lt9611_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct lt9611 *lt9611 =3D bridge_to_lt9611(bridge); =20 - return drm_bridge_attach(bridge->encoder, lt9611->next_bridge, + return drm_bridge_attach(encoder, lt9611->next_bridge, bridge, flags); } =20 static enum drm_mode_status lt9611_bridge_mode_valid(struct drm_bridge *br= idge, const struct drm_display_info *info, diff --git a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c b/drivers/gpu/drm/b= ridge/lontium-lt9611uxc.c index f4c3ff1fdc6923eb7a8c0d8f7f92e7649c797d77..20bf1a3c786d8ecc10ac58225f2= 8e5c519fd1bf9 100644 --- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c +++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c @@ -278,15 +278,16 @@ static struct mipi_dsi_device *lt9611uxc_attach_dsi(s= truct lt9611uxc *lt9611uxc, =20 return dsi; } =20 static int lt9611uxc_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct lt9611uxc *lt9611uxc =3D bridge_to_lt9611uxc(bridge); =20 - return drm_bridge_attach(bridge->encoder, lt9611uxc->next_bridge, + return drm_bridge_attach(encoder, lt9611uxc->next_bridge, bridge, flags); } =20 static enum drm_mode_status lt9611uxc_bridge_mode_valid(struct drm_bridge *bridge, diff --git a/drivers/gpu/drm/bridge/lvds-codec.c b/drivers/gpu/drm/bridge/l= vds-codec.c index 389af0233fcdec9af7a4fbfe8d267170fbc4759c..1646e454e0b0b558d00f9421f15= bb7084e2aa45a 100644 --- a/drivers/gpu/drm/bridge/lvds-codec.c +++ b/drivers/gpu/drm/bridge/lvds-codec.c @@ -32,15 +32,16 @@ static inline struct lvds_codec *to_lvds_codec(struct d= rm_bridge *bridge) { return container_of(bridge, struct lvds_codec, bridge); } =20 static int lvds_codec_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct lvds_codec *lvds_codec =3D to_lvds_codec(bridge); =20 - return drm_bridge_attach(bridge->encoder, lvds_codec->panel_bridge, + return drm_bridge_attach(encoder, lvds_codec->panel_bridge, bridge, flags); } =20 static void lvds_codec_enable(struct drm_bridge *bridge) { diff --git a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c b/dri= vers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c index a47aabf134fd5c78448eae50b14a5ec322e6d6d0..15a5a1f644fc10182c55bc9e489= ccb81d4f924f9 100644 --- a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c +++ b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c @@ -188,10 +188,11 @@ static irqreturn_t ge_b850v3_lvds_irq_handler(int irq= , void *dev_id) =20 return IRQ_HANDLED; } =20 static int ge_b850v3_lvds_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct i2c_client *stdp4028_i2c =3D ge_b850v3_lvds_ptr->stdp4028_i2c; =20 diff --git a/drivers/gpu/drm/bridge/microchip-lvds.c b/drivers/gpu/drm/brid= ge/microchip-lvds.c index 53dd140a1b8d1b333c1f932b4d205a028f818251..1d4ae0097df847d9f93c79eecff= 0c4587ae331ba 100644 --- a/drivers/gpu/drm/bridge/microchip-lvds.c +++ b/drivers/gpu/drm/bridge/microchip-lvds.c @@ -102,15 +102,16 @@ static void lvds_serialiser_on(struct mchp_lvds *lvds) /* Enable the LVDS serializer */ lvds_writel(lvds, LVDSC_CR, LVDSC_CR_SER_EN); } =20 static int mchp_lvds_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct mchp_lvds *lvds =3D bridge_to_lvds(bridge); =20 - return drm_bridge_attach(bridge->encoder, lvds->panel_bridge, + return drm_bridge_attach(encoder, lvds->panel_bridge, bridge, flags); } =20 static void mchp_lvds_enable(struct drm_bridge *bridge) { diff --git a/drivers/gpu/drm/bridge/nwl-dsi.c b/drivers/gpu/drm/bridge/nwl-= dsi.c index 09b8b2e7d9fb358b5fb11d9646cf9c2f13221f3c..2a536c61c92b89ee2f332daa944= dfff974ba18d2 100644 --- a/drivers/gpu/drm/bridge/nwl-dsi.c +++ b/drivers/gpu/drm/bridge/nwl-dsi.c @@ -908,20 +908,21 @@ static void nwl_dsi_bridge_atomic_enable(struct drm_b= ridge *bridge, if (ret < 0) DRM_DEV_ERROR(dsi->dev, "Failed to deassert DPI: %d\n", ret); } =20 static int nwl_dsi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct nwl_dsi *dsi =3D bridge_to_dsi(bridge); struct drm_bridge *panel_bridge; =20 panel_bridge =3D devm_drm_of_get_bridge(dsi->dev, dsi->dev->of_node, 1, 0= ); if (IS_ERR(panel_bridge)) return PTR_ERR(panel_bridge); =20 - return drm_bridge_attach(bridge->encoder, panel_bridge, bridge, flags); + return drm_bridge_attach(encoder, panel_bridge, bridge, flags); } =20 static u32 *nwl_bridge_atomic_get_input_bus_fmts(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, struct drm_crtc_state *crtc_state, diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/= nxp-ptn3460.c index 27261b2ac9c83c311201b20f02aef7afeb6475b2..25d7c415478b14ef634bff4185a= 8dd8e866be0c6 100644 --- a/drivers/gpu/drm/bridge/nxp-ptn3460.c +++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c @@ -212,17 +212,18 @@ static const struct drm_connector_funcs ptn3460_conne= ctor_funcs =3D { .atomic_duplicate_state =3D drm_atomic_helper_connector_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_connector_destroy_state, }; =20 static int ptn3460_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct ptn3460_bridge *ptn_bridge =3D bridge_to_ptn3460(bridge); int ret; =20 /* Let this driver create connector if requested */ - ret =3D drm_bridge_attach(bridge->encoder, ptn_bridge->panel_bridge, + ret =3D drm_bridge_attach(encoder, ptn_bridge->panel_bridge, bridge, flags | DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (ret < 0) return ret; =20 if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) @@ -237,11 +238,11 @@ static int ptn3460_bridge_attach(struct drm_bridge *b= ridge, } drm_connector_helper_add(&ptn_bridge->connector, &ptn3460_connector_helper_funcs); drm_connector_register(&ptn_bridge->connector); drm_connector_attach_encoder(&ptn_bridge->connector, - bridge->encoder); + encoder); =20 drm_helper_hpd_irq_event(ptn_bridge->connector.dev); =20 return ret; } diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c index 890bd45c46eda8366e44974e3ec5891aa473fd00..41eac98c29d7592110a1e2f4a60= b447586fbffd6 100644 --- a/drivers/gpu/drm/bridge/panel.c +++ b/drivers/gpu/drm/bridge/panel.c @@ -56,10 +56,11 @@ static const struct drm_connector_funcs panel_bridge_co= nnector_funcs =3D { .atomic_duplicate_state =3D drm_atomic_helper_connector_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_connector_destroy_state, }; =20 static int panel_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct panel_bridge *panel_bridge =3D drm_bridge_to_panel_bridge(bridge); struct drm_connector *connector =3D &panel_bridge->connector; int ret; @@ -79,11 +80,11 @@ static int panel_bridge_attach(struct drm_bridge *bridg= e, } =20 drm_panel_bridge_set_orientation(connector, bridge); =20 drm_connector_attach_encoder(&panel_bridge->connector, - bridge->encoder); + encoder); =20 if (bridge->dev->registered) { if (connector->funcs->reset) connector->funcs->reset(connector); drm_connector_register(connector); diff --git a/drivers/gpu/drm/bridge/parade-ps8622.c b/drivers/gpu/drm/bridg= e/parade-ps8622.c index 13ada42a55142cd22696671e8fb363bee6d6aa68..8726fefc5c654e49bce029d943d= 241789ca4f802 100644 --- a/drivers/gpu/drm/bridge/parade-ps8622.c +++ b/drivers/gpu/drm/bridge/parade-ps8622.c @@ -416,10 +416,11 @@ static void ps8622_post_disable(struct drm_bridge *br= idge) =20 msleep(PS8622_POWER_OFF_T17_MS); } =20 static int ps8622_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct ps8622_bridge *ps8622 =3D bridge_to_ps8622(bridge); =20 return drm_bridge_attach(ps8622->bridge.encoder, ps8622->panel_bridge, diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridg= e/parade-ps8640.c index a42138b33258a48a303a97fbb07504893aeafaf7..2422ff68c1042bd8eaa6821ff38= 7d4faad47c550 100644 --- a/drivers/gpu/drm/bridge/parade-ps8640.c +++ b/drivers/gpu/drm/bridge/parade-ps8640.c @@ -492,10 +492,11 @@ static void ps8640_atomic_post_disable(struct drm_bri= dge *bridge, =20 mutex_unlock(&ps_bridge->aux_lock); } =20 static int ps8640_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct ps8640 *ps_bridge =3D bridge_to_ps8640(bridge); struct device *dev =3D &ps_bridge->page[0]->dev; int ret; @@ -516,11 +517,11 @@ static int ps8640_bridge_attach(struct drm_bridge *br= idge, ret =3D -EINVAL; goto err_devlink; } =20 /* Attach the panel-bridge to the dsi bridge */ - ret =3D drm_bridge_attach(bridge->encoder, ps_bridge->panel_bridge, + ret =3D drm_bridge_attach(encoder, ps_bridge->panel_bridge, &ps_bridge->bridge, flags); if (ret) goto err_bridge_attach; =20 return 0; diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge= /samsung-dsim.c index 54de6ed2fae81bc13301a6b1ee8f38183a3118b6..55ac6bd5da08c037aa7974df679= d51e72bc54faf 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -1638,15 +1638,16 @@ static void samsung_dsim_mode_set(struct drm_bridge= *bridge, =20 drm_mode_copy(&dsi->mode, adjusted_mode); } =20 static int samsung_dsim_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct samsung_dsim *dsi =3D bridge_to_dsi(bridge); =20 - return drm_bridge_attach(bridge->encoder, dsi->out_bridge, bridge, + return drm_bridge_attach(encoder, dsi->out_bridge, bridge, flags); } =20 static const struct drm_bridge_funcs samsung_dsim_bridge_funcs =3D { .atomic_duplicate_state =3D drm_atomic_helper_bridge_duplicate_state, diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii9= 02x.c index 2100a687096e50c83a7c554e6d21b3c638ef713b..4d2fca64c50b4d7f7bc7f6f0edc= af47aa5e3d1f3 100644 --- a/drivers/gpu/drm/bridge/sii902x.c +++ b/drivers/gpu/drm/bridge/sii902x.c @@ -414,19 +414,20 @@ static void sii902x_bridge_mode_set(struct drm_bridge= *bridge, out: mutex_unlock(&sii902x->mutex); } =20 static int sii902x_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct sii902x *sii902x =3D bridge_to_sii902x(bridge); u32 bus_format =3D MEDIA_BUS_FMT_RGB888_1X24; struct drm_device *drm =3D bridge->dev; int ret; =20 if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) - return drm_bridge_attach(bridge->encoder, sii902x->next_bridge, + return drm_bridge_attach(encoder, sii902x->next_bridge, bridge, flags); =20 drm_connector_helper_add(&sii902x->connector, &sii902x_connector_helper_funcs); =20 @@ -450,11 +451,11 @@ static int sii902x_bridge_attach(struct drm_bridge *b= ridge, ret =3D drm_display_info_set_bus_formats(&sii902x->connector.display_info, &bus_format, 1); if (ret) return ret; =20 - drm_connector_attach_encoder(&sii902x->connector, bridge->encoder); + drm_connector_attach_encoder(&sii902x->connector, encoder); =20 return 0; } =20 static enum drm_connector_status sii902x_bridge_detect(struct drm_bridge *= bridge) diff --git a/drivers/gpu/drm/bridge/sil-sii8620.c b/drivers/gpu/drm/bridge/= sil-sii8620.c index 28a2e1ee04b2828364c6e633399b821562fc8728..3af650dc92a1612ca88fe378319= 519546b79901f 100644 --- a/drivers/gpu/drm/bridge/sil-sii8620.c +++ b/drivers/gpu/drm/bridge/sil-sii8620.c @@ -2201,10 +2201,11 @@ static inline struct sii8620 *bridge_to_sii8620(str= uct drm_bridge *bridge) { return container_of(bridge, struct sii8620, bridge); } =20 static int sii8620_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct sii8620 *ctx =3D bridge_to_sii8620(bridge); =20 sii8620_init_rcp_input_dev(ctx); diff --git a/drivers/gpu/drm/bridge/simple-bridge.c b/drivers/gpu/drm/bridg= e/simple-bridge.c index ab0b0e36e97ac244427ac316acd9230c9490f2ce..70db5b99e5bb84f099ec54cf62a= bbda53475311d 100644 --- a/drivers/gpu/drm/bridge/simple-bridge.c +++ b/drivers/gpu/drm/bridge/simple-bridge.c @@ -101,16 +101,17 @@ static const struct drm_connector_funcs simple_bridge= _con_funcs =3D { .atomic_duplicate_state =3D drm_atomic_helper_connector_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_connector_destroy_state, }; =20 static int simple_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct simple_bridge *sbridge =3D drm_bridge_to_simple_bridge(bridge); int ret; =20 - ret =3D drm_bridge_attach(bridge->encoder, sbridge->next_bridge, bridge, + ret =3D drm_bridge_attach(encoder, sbridge->next_bridge, bridge, DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (ret < 0) return ret; =20 if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) @@ -125,11 +126,11 @@ static int simple_bridge_attach(struct drm_bridge *br= idge, if (ret) { DRM_ERROR("Failed to initialize connector\n"); return ret; } =20 - drm_connector_attach_encoder(&sbridge->connector, bridge->encoder); + drm_connector_attach_encoder(&sbridge->connector, encoder); =20 return 0; } =20 static void simple_bridge_enable(struct drm_bridge *bridge) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/br= idge/synopsys/dw-hdmi.c index 0890add5f7070f13fefad923526e92f516f06764..b1cdf806b3c4007dfef09c632fe= a354f7f6001b5 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2887,16 +2887,17 @@ static int dw_hdmi_bridge_atomic_check(struct drm_b= ridge *bridge, =20 return 0; } =20 static int dw_hdmi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct dw_hdmi *hdmi =3D bridge->driver_private; =20 if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) - return drm_bridge_attach(bridge->encoder, hdmi->next_bridge, + return drm_bridge_attach(encoder, hdmi->next_bridge, bridge, flags); =20 return dw_hdmi_connector_create(hdmi); } =20 diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/dr= m/bridge/synopsys/dw-mipi-dsi.c index 2b6e70a49f438c475bc60d9595bf246a9e54995b..b08ada920a501d6a62f39581944= a87019f5e5c15 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c @@ -1070,19 +1070,20 @@ dw_mipi_dsi_bridge_mode_valid(struct drm_bridge *br= idge, =20 return mode_status; } =20 static int dw_mipi_dsi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct dw_mipi_dsi *dsi =3D bridge_to_dsi(bridge); =20 /* Set the encoder type as caller does not know it */ - bridge->encoder->encoder_type =3D DRM_MODE_ENCODER_DSI; + encoder->encoder_type =3D DRM_MODE_ENCODER_DSI; =20 /* Attach the panel-bridge to the dsi bridge */ - return drm_bridge_attach(bridge->encoder, dsi->panel_bridge, bridge, + return drm_bridge_attach(encoder, dsi->panel_bridge, bridge, flags); } =20 static const struct drm_bridge_funcs dw_mipi_dsi_bridge_funcs =3D { .atomic_duplicate_state =3D drm_atomic_helper_bridge_duplicate_state, diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c b/drivers/gpu/d= rm/bridge/synopsys/dw-mipi-dsi2.c index 5fd7a459efdd4fc4884cdf77ffedc19c36d1ca13..c76f5f2e74d14bd372f969c6c78= 32aa57f80772b 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c @@ -868,19 +868,20 @@ dw_mipi_dsi2_bridge_mode_valid(struct drm_bridge *bri= dge, =20 return mode_status; } =20 static int dw_mipi_dsi2_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct dw_mipi_dsi2 *dsi2 =3D bridge_to_dsi2(bridge); =20 /* Set the encoder type as caller does not know it */ - bridge->encoder->encoder_type =3D DRM_MODE_ENCODER_DSI; + encoder->encoder_type =3D DRM_MODE_ENCODER_DSI; =20 /* Attach the panel-bridge to the dsi bridge */ - return drm_bridge_attach(bridge->encoder, dsi2->panel_bridge, bridge, + return drm_bridge_attach(encoder, dsi2->panel_bridge, bridge, flags); } =20 static const struct drm_bridge_funcs dw_mipi_dsi2_bridge_funcs =3D { .atomic_duplicate_state =3D drm_atomic_helper_bridge_duplicate_state, diff --git a/drivers/gpu/drm/bridge/tc358762.c b/drivers/gpu/drm/bridge/tc3= 58762.c index 49c76027f8316967ea4f7d7dfb85920a025b6df9..edf01476f2ef6e05ef2c144ff44= 67e7f6babc4c6 100644 --- a/drivers/gpu/drm/bridge/tc358762.c +++ b/drivers/gpu/drm/bridge/tc358762.c @@ -200,15 +200,16 @@ static void tc358762_enable(struct drm_bridge *bridge, if (ret < 0) dev_err(ctx->dev, "error initializing bridge (%d)\n", ret); } =20 static int tc358762_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct tc358762 *ctx =3D bridge_to_tc358762(bridge); =20 - return drm_bridge_attach(bridge->encoder, ctx->panel_bridge, + return drm_bridge_attach(encoder, ctx->panel_bridge, bridge, flags); } =20 static void tc358762_bridge_mode_set(struct drm_bridge *bridge, const struct drm_display_mode *mode, diff --git a/drivers/gpu/drm/bridge/tc358764.c b/drivers/gpu/drm/bridge/tc3= 58764.c index 3d3d135b43487aaf5a1908c21c1c988e87d24d48..3f76c890fad9ffa50dc02f289a3= 7378332830516 100644 --- a/drivers/gpu/drm/bridge/tc358764.c +++ b/drivers/gpu/drm/bridge/tc358764.c @@ -293,15 +293,16 @@ static void tc358764_pre_enable(struct drm_bridge *br= idge) if (ret < 0) dev_err(ctx->dev, "error initializing bridge (%d)\n", ret); } =20 static int tc358764_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct tc358764 *ctx =3D bridge_to_tc358764(bridge); =20 - return drm_bridge_attach(bridge->encoder, ctx->next_bridge, bridge, flags= ); + return drm_bridge_attach(encoder, ctx->next_bridge, bridge, flags); } =20 static const struct drm_bridge_funcs tc358764_bridge_funcs =3D { .post_disable =3D tc358764_post_disable, .pre_enable =3D tc358764_pre_enable, diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc3= 58767.c index 39e2d3a7a27d2603bb847d55c4812fb170389ba0..7e5449fb86a3fcdae8255bc490d= 12c543ef3f8ae 100644 --- a/drivers/gpu/drm/bridge/tc358767.c +++ b/drivers/gpu/drm/bridge/tc358767.c @@ -1793,10 +1793,11 @@ static const struct drm_connector_funcs tc_connecto= r_funcs =3D { .atomic_duplicate_state =3D drm_atomic_helper_connector_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_connector_destroy_state, }; =20 static int tc_dpi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct tc_data *tc =3D bridge_to_tc(bridge); =20 if (!tc->panel_bridge) @@ -1805,10 +1806,11 @@ static int tc_dpi_bridge_attach(struct drm_bridge *= bridge, return drm_bridge_attach(tc->bridge.encoder, tc->panel_bridge, &tc->bridge, flags); } =20 static int tc_edp_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { u32 bus_format =3D MEDIA_BUS_FMT_RGB888_1X24; struct tc_data *tc =3D bridge_to_tc(bridge); struct drm_device *drm =3D bridge->dev; diff --git a/drivers/gpu/drm/bridge/tc358768.c b/drivers/gpu/drm/bridge/tc3= 58768.c index ec79b0dd0e2cd6dfbdd8aee54d6a8d9cf8bfb060..6db18d1e8824dd7d387211d6d1e= 668645cf88bbe 100644 --- a/drivers/gpu/drm/bridge/tc358768.c +++ b/drivers/gpu/drm/bridge/tc358768.c @@ -552,20 +552,21 @@ static const struct mipi_dsi_host_ops tc358768_dsi_ho= st_ops =3D { .detach =3D tc358768_dsi_host_detach, .transfer =3D tc358768_dsi_host_transfer, }; =20 static int tc358768_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct tc358768_priv *priv =3D bridge_to_tc358768(bridge); =20 if (!drm_core_check_feature(bridge->dev, DRIVER_ATOMIC)) { dev_err(priv->dev, "needs atomic updates support\n"); return -ENOTSUPP; } =20 - return drm_bridge_attach(bridge->encoder, priv->output.bridge, bridge, + return drm_bridge_attach(encoder, priv->output.bridge, bridge, flags); } =20 static enum drm_mode_status tc358768_bridge_mode_valid(struct drm_bridge *bridge, diff --git a/drivers/gpu/drm/bridge/tc358775.c b/drivers/gpu/drm/bridge/tc3= 58775.c index c89757bec4e6cc59ea0e84b1096ba71b077d408e..13cd48e77d2d3f8dd646078fb7d= e95c420f29f73 100644 --- a/drivers/gpu/drm/bridge/tc358775.c +++ b/drivers/gpu/drm/bridge/tc358775.c @@ -587,16 +587,17 @@ static int tc358775_parse_dt(struct device_node *np, = struct tc_data *tc) =20 return 0; } =20 static int tc_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct tc_data *tc =3D bridge_to_tc(bridge); =20 /* Attach the panel-bridge to the dsi bridge */ - return drm_bridge_attach(bridge->encoder, tc->panel_bridge, + return drm_bridge_attach(encoder, tc->panel_bridge, &tc->bridge, flags); } =20 static const struct drm_bridge_funcs tc_bridge_funcs =3D { .attach =3D tc_bridge_attach, diff --git a/drivers/gpu/drm/bridge/thc63lvd1024.c b/drivers/gpu/drm/bridge= /thc63lvd1024.c index bba10cf9b4f96aef69f82403a7642d08c2b9f4b7..e2fc78adebcf22f0d8cdb484078= e37b748b776c6 100644 --- a/drivers/gpu/drm/bridge/thc63lvd1024.c +++ b/drivers/gpu/drm/bridge/thc63lvd1024.c @@ -41,15 +41,16 @@ static inline struct thc63_dev *to_thc63(struct drm_bri= dge *bridge) { return container_of(bridge, struct thc63_dev, bridge); } =20 static int thc63_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct thc63_dev *thc63 =3D to_thc63(bridge); =20 - return drm_bridge_attach(bridge->encoder, thc63->next, bridge, flags); + return drm_bridge_attach(encoder, thc63->next, bridge, flags); } =20 static enum drm_mode_status thc63_mode_valid(struct drm_bridge *bridge, const struct drm_display_info *info, const struct drm_display_mode *mode) diff --git a/drivers/gpu/drm/bridge/ti-dlpc3433.c b/drivers/gpu/drm/bridge/= ti-dlpc3433.c index 85f2a0e74a1c8aaa272ce828ad1c82660503b7a8..47638d1c96ec5ad999604c8c7e8= 839ff85936d98 100644 --- a/drivers/gpu/drm/bridge/ti-dlpc3433.c +++ b/drivers/gpu/drm/bridge/ti-dlpc3433.c @@ -240,16 +240,16 @@ static void dlpc_mode_set(struct drm_bridge *bridge, struct dlpc *dlpc =3D bridge_to_dlpc(bridge); =20 drm_mode_copy(&dlpc->mode, adjusted_mode); } =20 -static int dlpc_attach(struct drm_bridge *bridge, +static int dlpc_attach(struct drm_bridge *bridge, struct drm_encoder *enco= der, enum drm_bridge_attach_flags flags) { struct dlpc *dlpc =3D bridge_to_dlpc(bridge); =20 - return drm_bridge_attach(bridge->encoder, dlpc->next_bridge, bridge, flag= s); + return drm_bridge_attach(encoder, dlpc->next_bridge, bridge, flags); } =20 static const struct drm_bridge_funcs dlpc_bridge_funcs =3D { .atomic_duplicate_state =3D drm_atomic_helper_bridge_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_bridge_destroy_state, diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi83.c b/drivers/gpu/drm/bridge= /ti-sn65dsi83.c index ab77dff65607f5eec4b36519dccb2465274d2df9..7c6c38988c404c2f750f02e5607= a416178940a2b 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi83.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi83.c @@ -282,15 +282,16 @@ static struct sn65dsi83 *bridge_to_sn65dsi83(struct d= rm_bridge *bridge) { return container_of(bridge, struct sn65dsi83, bridge); } =20 static int sn65dsi83_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct sn65dsi83 *ctx =3D bridge_to_sn65dsi83(bridge); =20 - return drm_bridge_attach(bridge->encoder, ctx->panel_bridge, + return drm_bridge_attach(encoder, ctx->panel_bridge, &ctx->bridge, flags); } =20 static void sn65dsi83_detach(struct drm_bridge *bridge) { diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge= /ti-sn65dsi86.c index ae34585e05b307934d9fbf0dfd7ad159a99d4c17..066a65eb03ede1cb5bcbc451138= 1adb9406f923b 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -730,10 +730,11 @@ static int ti_sn_attach_host(struct auxiliary_device = *adev, struct ti_sn65dsi86 =20 return devm_mipi_dsi_attach(&adev->dev, dsi); } =20 static int ti_sn_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct ti_sn65dsi86 *pdata =3D bridge_to_ti_sn65dsi86(bridge); int ret; =20 @@ -746,11 +747,11 @@ static int ti_sn_bridge_attach(struct drm_bridge *bri= dge, =20 /* * Attach the next bridge. * We never want the next bridge to *also* create a connector. */ - ret =3D drm_bridge_attach(bridge->encoder, pdata->next_bridge, + ret =3D drm_bridge_attach(encoder, pdata->next_bridge, &pdata->bridge, flags | DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (ret < 0) goto err_initted_aux; =20 if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) diff --git a/drivers/gpu/drm/bridge/ti-tdp158.c b/drivers/gpu/drm/bridge/ti= -tdp158.c index 22316382451fa3a55e1b3977982bd306b52b5888..cca75443f0121e39527a6cecf71= 1eff2c0d507b5 100644 --- a/drivers/gpu/drm/bridge/ti-tdp158.c +++ b/drivers/gpu/drm/bridge/ti-tdp158.c @@ -43,15 +43,17 @@ static void tdp158_disable(struct drm_bridge *bridge, gpiod_set_value_cansleep(tdp158->enable, 0); regulator_disable(tdp158->vdd); regulator_disable(tdp158->vcc); } =20 -static int tdp158_attach(struct drm_bridge *bridge, enum drm_bridge_attach= _flags flags) +static int tdp158_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, + enum drm_bridge_attach_flags flags) { struct tdp158 *tdp158 =3D bridge->driver_private; =20 - return drm_bridge_attach(bridge->encoder, tdp158->next, bridge, flags); + return drm_bridge_attach(encoder, tdp158->next, bridge, flags); } =20 static const struct drm_bridge_funcs tdp158_bridge_funcs =3D { .attach =3D tdp158_attach, .atomic_enable =3D tdp158_enable, diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti= -tfp410.c index 79ab5da827e1fd3850435a02daedad87186a4ab8..e15d232ddbac55c6f5f966471a6= c63f9c29a06c1 100644 --- a/drivers/gpu/drm/bridge/ti-tfp410.c +++ b/drivers/gpu/drm/bridge/ti-tfp410.c @@ -118,16 +118,17 @@ static void tfp410_hpd_callback(void *arg, enum drm_c= onnector_status status) mod_delayed_work(system_wq, &dvi->hpd_work, msecs_to_jiffies(HOTPLUG_DEBOUNCE_MS)); } =20 static int tfp410_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct tfp410 *dvi =3D drm_bridge_to_tfp410(bridge); int ret; =20 - ret =3D drm_bridge_attach(bridge->encoder, dvi->next_bridge, bridge, + ret =3D drm_bridge_attach(encoder, dvi->next_bridge, bridge, DRM_BRIDGE_ATTACH_NO_CONNECTOR); if (ret < 0) return ret; =20 if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) @@ -157,11 +158,11 @@ static int tfp410_attach(struct drm_bridge *bridge, } =20 drm_display_info_set_bus_formats(&dvi->connector.display_info, &dvi->bus_format, 1); =20 - drm_connector_attach_encoder(&dvi->connector, bridge->encoder); + drm_connector_attach_encoder(&dvi->connector, encoder); =20 return 0; } =20 static void tfp410_detach(struct drm_bridge *bridge) diff --git a/drivers/gpu/drm/bridge/ti-tpd12s015.c b/drivers/gpu/drm/bridge= /ti-tpd12s015.c index 47b74cb25b14fcf4a09137d8b5b7f4ff739eae59..1c289051a5987e0aec4c286ef4c= 01ee1a2f9421f 100644 --- a/drivers/gpu/drm/bridge/ti-tpd12s015.c +++ b/drivers/gpu/drm/bridge/ti-tpd12s015.c @@ -36,19 +36,20 @@ static inline struct tpd12s015_device *to_tpd12s015(str= uct drm_bridge *bridge) { return container_of(bridge, struct tpd12s015_device, bridge); } =20 static int tpd12s015_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct tpd12s015_device *tpd =3D to_tpd12s015(bridge); int ret; =20 if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) return -EINVAL; =20 - ret =3D drm_bridge_attach(bridge->encoder, tpd->next_bridge, + ret =3D drm_bridge_attach(encoder, tpd->next_bridge, bridge, flags); if (ret < 0) return ret; =20 gpiod_set_value_cansleep(tpd->ls_oe_gpio, 1); diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index fa2794217a903b6c61e58edf14756a72f99dad38..8241c00e4506eceeb9bb4ba74a3= 8d8f360c65d38 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -325,11 +325,11 @@ int drm_bridge_attach(struct drm_encoder *encoder, st= ruct drm_bridge *bridge, list_add(&bridge->chain_node, &previous->chain_node); else list_add(&bridge->chain_node, &encoder->bridge_chain); =20 if (bridge->funcs->attach) { - ret =3D bridge->funcs->attach(bridge, flags); + ret =3D bridge->funcs->attach(bridge, encoder, flags); if (ret < 0) goto err_reset_bridge; } =20 if (bridge->funcs->atomic_reset) { diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998= x_drv.c index 82d4a4e206a584e045a8fcd593fc12b7c1257bfe..a8669b27e916389da6f5ecc6e5a= d608fddb594a2 100644 --- a/drivers/gpu/drm/i2c/tda998x_drv.c +++ b/drivers/gpu/drm/i2c/tda998x_drv.c @@ -1362,10 +1362,11 @@ static int tda998x_connector_init(struct tda998x_pr= iv *priv, } =20 /* DRM bridge functions */ =20 static int tda998x_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct tda998x_priv *priv =3D bridge_to_tda998x_priv(bridge); =20 if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) { diff --git a/drivers/gpu/drm/imx/ipuv3/parallel-display.c b/drivers/gpu/drm= /imx/ipuv3/parallel-display.c index 9e66eb77b1ebe853599a60df69ce8db94fdffd49..6d8325c766979aa3ba98970f008= 06e99c139d3c3 100644 --- a/drivers/gpu/drm/imx/ipuv3/parallel-display.c +++ b/drivers/gpu/drm/imx/ipuv3/parallel-display.c @@ -160,15 +160,16 @@ static int imx_pd_bridge_atomic_check(struct drm_brid= ge *bridge, =20 return 0; } =20 static int imx_pd_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct imx_parallel_display *imxpd =3D bridge_to_imxpd(bridge); =20 - return drm_bridge_attach(bridge->encoder, imxpd->next_bridge, bridge, fla= gs); + return drm_bridge_attach(encoder, imxpd->next_bridge, bridge, flags); } =20 static const struct drm_bridge_funcs imx_pd_bridge_funcs =3D { .attach =3D imx_pd_bridge_attach, .atomic_reset =3D drm_atomic_helper_bridge_reset, diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/in= genic/ingenic-drm-drv.c index 20b93fff023995062096941ae571756185688387..f851e9ffdb280388452c9ad0883= 932f5b990d6f0 100644 --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c @@ -789,15 +789,16 @@ static void ingenic_drm_encoder_atomic_mode_set(struc= t drm_encoder *encoder, regmap_write(priv->map, JZ_REG_LCD_CFG, cfg); regmap_write(priv->map, JZ_REG_LCD_RGBC, rgbcfg); } =20 static int ingenic_drm_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { - struct ingenic_drm_bridge *ib =3D to_ingenic_drm_bridge(bridge->encoder); + struct ingenic_drm_bridge *ib =3D to_ingenic_drm_bridge(encoder); =20 - return drm_bridge_attach(bridge->encoder, ib->next_bridge, + return drm_bridge_attach(encoder, ib->next_bridge, &ib->bridge, flags); } =20 static int ingenic_drm_bridge_atomic_check(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, diff --git a/drivers/gpu/drm/mcde/mcde_dsi.c b/drivers/gpu/drm/mcde/mcde_ds= i.c index 395449a72f0a1dc0d8ee97ecd245ca52f0282402..b302d8ec3ad0e82ace9c10194ae= 37948ebb8e753 100644 --- a/drivers/gpu/drm/mcde/mcde_dsi.c +++ b/drivers/gpu/drm/mcde/mcde_dsi.c @@ -1046,10 +1046,11 @@ void mcde_dsi_disable(struct drm_bridge *bridge) clk_disable_unprepare(d->hs_clk); clk_disable_unprepare(d->lp_clk); } =20 static int mcde_dsi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct mcde_dsi *d =3D bridge_to_mcde_dsi(bridge); struct drm_device *drm =3D bridge->dev; =20 @@ -1057,11 +1058,11 @@ static int mcde_dsi_bridge_attach(struct drm_bridge= *bridge, dev_err(d->dev, "we need atomic updates\n"); return -ENOTSUPP; } =20 /* Attach the DSI bridge to the output (panel etc) bridge */ - return drm_bridge_attach(bridge->encoder, d->bridge_out, bridge, flags); + return drm_bridge_attach(encoder, d->bridge_out, bridge, flags); } =20 static const struct drm_bridge_funcs mcde_dsi_bridge_funcs =3D { .attach =3D mcde_dsi_bridge_attach, .mode_set =3D mcde_dsi_bridge_mode_set, diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c b/drivers/gpu/drm/mediatek/m= tk_dp.c index 3d4648d2e15f1a1a3c6ae596e1a35cd654fcc35c..4523cc0a2db8cd8b57183e11140= b8a6584e95a34 100644 --- a/drivers/gpu/drm/mediatek/mtk_dp.c +++ b/drivers/gpu/drm/mediatek/mtk_dp.c @@ -2285,10 +2285,11 @@ static void mtk_dp_poweroff(struct mtk_dp *mtk_dp) mtk_dp_power_disable(mtk_dp); phy_exit(mtk_dp->phy); } =20 static int mtk_dp_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct mtk_dp *mtk_dp =3D mtk_dp_from_bridge(bridge); int ret; =20 @@ -2308,11 +2309,11 @@ static int mtk_dp_bridge_attach(struct drm_bridge *= bridge, ret =3D mtk_dp_poweron(mtk_dp); if (ret) goto err_aux_register; =20 if (mtk_dp->next_bridge) { - ret =3D drm_bridge_attach(bridge->encoder, mtk_dp->next_bridge, + ret =3D drm_bridge_attach(encoder, mtk_dp->next_bridge, &mtk_dp->bridge, flags); if (ret) { drm_warn(mtk_dp->drm_dev, "Failed to attach external bridge: %d\n", ret); goto err_bridge_attach; diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/= mtk_dpi.c index 1864eb02dbf50af09c65064834a8b27ca56c3528..6b96ed4fc8614569e53f76fe3e5= 2507c7dc1249c 100644 --- a/drivers/gpu/drm/mediatek/mtk_dpi.c +++ b/drivers/gpu/drm/mediatek/mtk_dpi.c @@ -699,10 +699,11 @@ static int mtk_dpi_bridge_atomic_check(struct drm_bri= dge *bridge, =20 return 0; } =20 static int mtk_dpi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct mtk_dpi *dpi =3D bridge_to_dpi(bridge); int ret; =20 @@ -717,11 +718,11 @@ static int mtk_dpi_bridge_attach(struct drm_bridge *b= ridge, if (IS_ERR(dpi->next_bridge)) return dev_err_probe(dpi->dev, PTR_ERR(dpi->next_bridge), "Failed to get bridge\n"); } =20 - return drm_bridge_attach(bridge->encoder, dpi->next_bridge, + return drm_bridge_attach(encoder, dpi->next_bridge, &dpi->bridge, flags); } =20 static void mtk_dpi_bridge_mode_set(struct drm_bridge *bridge, const struct drm_display_mode *mode, diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/= mtk_dsi.c index b50dc9a013ac5a50e464134f548fa773a5662138..bd3133f604506c4ee4f1126c6e3= 39f28d75ee02a 100644 --- a/drivers/gpu/drm/mediatek/mtk_dsi.c +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c @@ -805,16 +805,17 @@ static void mtk_output_dsi_disable(struct mtk_dsi *ds= i) =20 dsi->enabled =3D false; } =20 static int mtk_dsi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct mtk_dsi *dsi =3D bridge_to_dsi(bridge); =20 /* Attach the panel or bridge to the dsi bridge */ - return drm_bridge_attach(bridge->encoder, dsi->next_bridge, + return drm_bridge_attach(encoder, dsi->next_bridge, &dsi->bridge, flags); } =20 static void mtk_dsi_bridge_mode_set(struct drm_bridge *bridge, const struct drm_display_mode *mode, diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c b/drivers/gpu/drm/mediatek= /mtk_hdmi.c index ac5e40c2761710dfbe722e1ba569d76e4cd5b8fb..b24ebce8163ae6f0a876b53f1ec= 21348d5ac5286 100644 --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c @@ -1276,10 +1276,11 @@ static const struct drm_edid *mtk_hdmi_bridge_edid_= read(struct drm_bridge *bridg =20 return drm_edid; } =20 static int mtk_hdmi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct mtk_hdmi *hdmi =3D hdmi_ctx_from_bridge(bridge); int ret; =20 @@ -1288,11 +1289,11 @@ static int mtk_hdmi_bridge_attach(struct drm_bridge= *bridge, __func__); return -EINVAL; } =20 if (hdmi->next_bridge) { - ret =3D drm_bridge_attach(bridge->encoder, hdmi->next_bridge, + ret =3D drm_bridge_attach(encoder, hdmi->next_bridge, bridge, flags); if (ret) return ret; } =20 diff --git a/drivers/gpu/drm/meson/meson_encoder_cvbs.c b/drivers/gpu/drm/m= eson/meson_encoder_cvbs.c index e79f7c3ce32efa8e5fe7afe274fe991ac363b734..c9678dc68fa142882e2beb24fe8= 1185fbdef733b 100644 --- a/drivers/gpu/drm/meson/meson_encoder_cvbs.c +++ b/drivers/gpu/drm/meson/meson_encoder_cvbs.c @@ -81,16 +81,17 @@ meson_cvbs_get_mode(const struct drm_display_mode *req_= mode) =20 return NULL; } =20 static int meson_encoder_cvbs_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct meson_encoder_cvbs *meson_encoder_cvbs =3D bridge_to_meson_encoder_cvbs(bridge); =20 - return drm_bridge_attach(bridge->encoder, meson_encoder_cvbs->next_bridge, + return drm_bridge_attach(encoder, meson_encoder_cvbs->next_bridge, &meson_encoder_cvbs->bridge, flags); } =20 static int meson_encoder_cvbs_get_modes(struct drm_bridge *bridge, struct drm_connector *connector) diff --git a/drivers/gpu/drm/meson/meson_encoder_dsi.c b/drivers/gpu/drm/me= son/meson_encoder_dsi.c index fe204437bd6576a258dc11319e2b905f170a24a1..3db518e5f95d324c218b730e094= 8c3dc845382bd 100644 --- a/drivers/gpu/drm/meson/meson_encoder_dsi.c +++ b/drivers/gpu/drm/meson/meson_encoder_dsi.c @@ -31,15 +31,16 @@ struct meson_encoder_dsi { =20 #define bridge_to_meson_encoder_dsi(x) \ container_of(x, struct meson_encoder_dsi, bridge) =20 static int meson_encoder_dsi_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct meson_encoder_dsi *encoder_dsi =3D bridge_to_meson_encoder_dsi(bri= dge); =20 - return drm_bridge_attach(bridge->encoder, encoder_dsi->next_bridge, + return drm_bridge_attach(encoder, encoder_dsi->next_bridge, &encoder_dsi->bridge, flags); } =20 static void meson_encoder_dsi_atomic_enable(struct drm_bridge *bridge, struct drm_atomic_state *state) diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/m= eson/meson_encoder_hdmi.c index 6d1c9262a2cfb7b08a68efb86821bf5ecf8c0941..5f02695aafd1aa8444cd936a36e= 8f3a8010881a0 100644 --- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c +++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c @@ -47,15 +47,16 @@ struct meson_encoder_hdmi { =20 #define bridge_to_meson_encoder_hdmi(x) \ container_of(x, struct meson_encoder_hdmi, bridge) =20 static int meson_encoder_hdmi_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct meson_encoder_hdmi *encoder_hdmi =3D bridge_to_meson_encoder_hdmi(= bridge); =20 - return drm_bridge_attach(bridge->encoder, encoder_hdmi->next_bridge, + return drm_bridge_attach(encoder, encoder_hdmi->next_bridge, &encoder_hdmi->bridge, flags); } =20 static void meson_encoder_hdmi_detach(struct drm_bridge *bridge) { diff --git a/drivers/gpu/drm/msm/dsi/dsi_manager.c b/drivers/gpu/drm/msm/ds= i/dsi_manager.c index a210b7c9e5ca281a46fbdb226e25832719a684ea..895ba9815a652f00f7ace9cb712= 5ef8cef555d35 100644 --- a/drivers/gpu/drm/msm/dsi/dsi_manager.c +++ b/drivers/gpu/drm/msm/dsi/dsi_manager.c @@ -422,16 +422,17 @@ static enum drm_mode_status dsi_mgr_bridge_mode_valid= (struct drm_bridge *bridge, =20 return msm_dsi_host_check_dsc(host, mode); } =20 static int dsi_mgr_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { int id =3D dsi_mgr_bridge_get_id(bridge); struct msm_dsi *msm_dsi =3D dsi_mgr_get_dsi(id); =20 - return drm_bridge_attach(bridge->encoder, msm_dsi->next_bridge, + return drm_bridge_attach(encoder, msm_dsi->next_bridge, bridge, flags); } =20 static const struct drm_bridge_funcs dsi_mgr_bridge_funcs =3D { .attach =3D dsi_mgr_bridge_attach, diff --git a/drivers/gpu/drm/omapdrm/dss/dpi.c b/drivers/gpu/drm/omapdrm/ds= s/dpi.c index b17e77f700ddda6c9972e5ff10d394fd72bf96b3..6eff97a091602f6d137095b3b7b= f54fce17e8d3e 100644 --- a/drivers/gpu/drm/omapdrm/dss/dpi.c +++ b/drivers/gpu/drm/omapdrm/dss/dpi.c @@ -418,20 +418,21 @@ static void dpi_init_pll(struct dpi_data *dpi) /* -----------------------------------------------------------------------= ------ * DRM Bridge Operations */ =20 static int dpi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct dpi_data *dpi =3D drm_bridge_to_dpi(bridge); =20 if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) return -EINVAL; =20 dpi_init_pll(dpi); =20 - return drm_bridge_attach(bridge->encoder, dpi->output.next_bridge, + return drm_bridge_attach(encoder, dpi->output.next_bridge, bridge, flags); } =20 static enum drm_mode_status dpi_bridge_mode_valid(struct drm_bridge *bridge, diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c b/drivers/gpu/drm/omapdrm/ds= s/dsi.c index 59d20eb8a7e0fdcc13060d00980452bc80c54eb2..35e3e332bdcf4cf69659de65dee= ea0f5dbd70358 100644 --- a/drivers/gpu/drm/omapdrm/dss/dsi.c +++ b/drivers/gpu/drm/omapdrm/dss/dsi.c @@ -4615,18 +4615,19 @@ static const struct component_ops dsi_component_ops= =3D { /* -----------------------------------------------------------------------= ------ * DRM Bridge Operations */ =20 static int dsi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct dsi_data *dsi =3D drm_bridge_to_dsi(bridge); =20 if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) return -EINVAL; =20 - return drm_bridge_attach(bridge->encoder, dsi->output.next_bridge, + return drm_bridge_attach(encoder, dsi->output.next_bridge, bridge, flags); } =20 static enum drm_mode_status dsi_bridge_mode_valid(struct drm_bridge *bridge, diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi4.c b/drivers/gpu/drm/omapdrm/= dss/hdmi4.c index e1ac447221ee5ae5ee50637acfc8a30a8f111850..a3b22952fdc32b5899dae82d413= 108c5c0a1c3c8 100644 --- a/drivers/gpu/drm/omapdrm/dss/hdmi4.c +++ b/drivers/gpu/drm/omapdrm/dss/hdmi4.c @@ -312,18 +312,19 @@ void hdmi4_core_disable(struct hdmi_core_data *core) /* -----------------------------------------------------------------------= ------ * DRM Bridge Operations */ =20 static int hdmi4_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct omap_hdmi *hdmi =3D drm_bridge_to_hdmi(bridge); =20 if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) return -EINVAL; =20 - return drm_bridge_attach(bridge->encoder, hdmi->output.next_bridge, + return drm_bridge_attach(encoder, hdmi->output.next_bridge, bridge, flags); } =20 static void hdmi4_bridge_mode_set(struct drm_bridge *bridge, const struct drm_display_mode *mode, diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi5.c b/drivers/gpu/drm/omapdrm/= dss/hdmi5.c index fa9904e4c218235bafa87be600680b3e5d5e2ea5..0c98444d39a93d8336b4d8dbd45= aa4521181c3b4 100644 --- a/drivers/gpu/drm/omapdrm/dss/hdmi5.c +++ b/drivers/gpu/drm/omapdrm/dss/hdmi5.c @@ -310,18 +310,19 @@ static void hdmi_core_disable(struct omap_hdmi *hdmi) /* -----------------------------------------------------------------------= ------ * DRM Bridge Operations */ =20 static int hdmi5_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct omap_hdmi *hdmi =3D drm_bridge_to_hdmi(bridge); =20 if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) return -EINVAL; =20 - return drm_bridge_attach(bridge->encoder, hdmi->output.next_bridge, + return drm_bridge_attach(encoder, hdmi->output.next_bridge, bridge, flags); } =20 static void hdmi5_bridge_mode_set(struct drm_bridge *bridge, const struct drm_display_mode *mode, diff --git a/drivers/gpu/drm/omapdrm/dss/sdi.c b/drivers/gpu/drm/omapdrm/ds= s/sdi.c index f9ae358e8e52145b3832b18286ba4834f3c2d8db..e78826e4b560a2b9af2d8a5a38e= 181bd3e44d250 100644 --- a/drivers/gpu/drm/omapdrm/dss/sdi.c +++ b/drivers/gpu/drm/omapdrm/dss/sdi.c @@ -126,18 +126,19 @@ static void sdi_config_lcd_manager(struct sdi_device = *sdi) /* -----------------------------------------------------------------------= ------ * DRM Bridge Operations */ =20 static int sdi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct sdi_device *sdi =3D drm_bridge_to_sdi(bridge); =20 if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) return -EINVAL; =20 - return drm_bridge_attach(bridge->encoder, sdi->output.next_bridge, + return drm_bridge_attach(encoder, sdi->output.next_bridge, bridge, flags); } =20 static enum drm_mode_status sdi_bridge_mode_valid(struct drm_bridge *bridge, diff --git a/drivers/gpu/drm/omapdrm/dss/venc.c b/drivers/gpu/drm/omapdrm/d= ss/venc.c index aaeef603682c25773f2f809d8ac04f64cba5fb21..50349518eda1630400529caf27c= a4469bb09fc82 100644 --- a/drivers/gpu/drm/omapdrm/dss/venc.c +++ b/drivers/gpu/drm/omapdrm/dss/venc.c @@ -536,18 +536,19 @@ static int venc_get_clocks(struct venc_device *venc) /* -----------------------------------------------------------------------= ------ * DRM Bridge Operations */ =20 static int venc_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct venc_device *venc =3D drm_bridge_to_venc(bridge); =20 if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) return -EINVAL; =20 - return drm_bridge_attach(bridge->encoder, venc->output.next_bridge, + return drm_bridge_attach(encoder, venc->output.next_bridge, bridge, flags); } =20 static enum drm_mode_status venc_bridge_mode_valid(struct drm_bridge *bridge, diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c b/drivers/gpu/drm/= renesas/rcar-du/rcar_lvds.c index 380a855b832af9c09652ce39a78f974b63d949bb..a9145253294fcaef6bae4e1406a= 781f6d710d357 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c @@ -632,18 +632,19 @@ static bool rcar_lvds_mode_fixup(struct drm_bridge *b= ridge, =20 return true; } =20 static int rcar_lvds_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct rcar_lvds *lvds =3D bridge_to_rcar_lvds(bridge); =20 if (!lvds->next_bridge) return 0; =20 - return drm_bridge_attach(bridge->encoder, lvds->next_bridge, bridge, + return drm_bridge_attach(encoder, lvds->next_bridge, bridge, flags); } =20 static const struct drm_bridge_funcs rcar_lvds_bridge_ops =3D { .attach =3D rcar_lvds_attach, diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c b/drivers/gpu/= drm/renesas/rcar-du/rcar_mipi_dsi.c index d1e626068065c559a708772d3bbf16efe166ff59..7ab8be46c7f6547f29b4d45af7a= c704283da9dcd 100644 --- a/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c @@ -797,15 +797,16 @@ static void rcar_mipi_dsi_stop_video(struct rcar_mipi= _dsi *dsi) /* -----------------------------------------------------------------------= ------ * Bridge */ =20 static int rcar_mipi_dsi_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct rcar_mipi_dsi *dsi =3D bridge_to_rcar_mipi_dsi(bridge); =20 - return drm_bridge_attach(bridge->encoder, dsi->next_bridge, bridge, + return drm_bridge_attach(encoder, dsi->next_bridge, bridge, flags); } =20 static void rcar_mipi_dsi_atomic_enable(struct drm_bridge *bridge, struct drm_atomic_state *state) diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c b/drivers/gpu/d= rm/renesas/rz-du/rzg2l_mipi_dsi.c index 4550c6d847962f06886f2b7645bae73646f1ffb6..96c014449547b4042d7568573fd= e876b5b39bd04 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c @@ -521,15 +521,16 @@ static int rzg2l_mipi_dsi_stop_video(struct rzg2l_mip= i_dsi *dsi) /* -----------------------------------------------------------------------= ------ * Bridge */ =20 static int rzg2l_mipi_dsi_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct rzg2l_mipi_dsi *dsi =3D bridge_to_rzg2l_mipi_dsi(bridge); =20 - return drm_bridge_attach(bridge->encoder, dsi->next_bridge, bridge, + return drm_bridge_attach(encoder, dsi->next_bridge, bridge, flags); } =20 static void rzg2l_mipi_dsi_atomic_enable(struct drm_bridge *bridge, struct drm_atomic_state *state) diff --git a/drivers/gpu/drm/stm/lvds.c b/drivers/gpu/drm/stm/lvds.c index 4613e8e3b8fddc4455be0e3f81e0e811418746a0..a3ae9a93ce6670eb2c4dd36b3e5= 72fcbca791a1c 100644 --- a/drivers/gpu/drm/stm/lvds.c +++ b/drivers/gpu/drm/stm/lvds.c @@ -932,32 +932,31 @@ static const struct drm_connector_funcs lvds_conn_fun= cs =3D { .destroy =3D drm_connector_cleanup, .atomic_duplicate_state =3D drm_atomic_helper_connector_duplicate_state, .atomic_destroy_state =3D drm_atomic_helper_connector_destroy_state, }; =20 -static int lvds_attach(struct drm_bridge *bridge, +static int lvds_attach(struct drm_bridge *bridge, struct drm_encoder *enco= der, enum drm_bridge_attach_flags flags) { struct stm_lvds *lvds =3D bridge_to_stm_lvds(bridge); struct drm_connector *connector =3D &lvds->connector; - struct drm_encoder *encoder =3D bridge->encoder; int ret; =20 - if (!bridge->encoder) { + if (!encoder) { drm_err(bridge->dev, "Parent encoder object not found\n"); return -ENODEV; } =20 /* Set the encoder type as caller does not know it */ - bridge->encoder->encoder_type =3D DRM_MODE_ENCODER_LVDS; + encoder->encoder_type =3D DRM_MODE_ENCODER_LVDS; =20 /* No cloning support */ - bridge->encoder->possible_clones =3D 0; + encoder->possible_clones =3D 0; =20 /* If we have a next bridge just attach it. */ if (lvds->next_bridge) - return drm_bridge_attach(bridge->encoder, lvds->next_bridge, + return drm_bridge_attach(encoder, lvds->next_bridge, bridge, flags); =20 if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) { drm_err(bridge->dev, "Fix bridge driver to make connector optional!"); return -EINVAL; diff --git a/drivers/gpu/drm/tidss/tidss_encoder.c b/drivers/gpu/drm/tidss/= tidss_encoder.c index 17a86bed805481c6cf054f6cb3176d60faa0351c..95b4aeff277505d64254177093d= 9bcc4de9f4a86 100644 --- a/drivers/gpu/drm/tidss/tidss_encoder.c +++ b/drivers/gpu/drm/tidss/tidss_encoder.c @@ -32,15 +32,16 @@ static inline struct tidss_encoder { return container_of(b, struct tidss_encoder, bridge); } =20 static int tidss_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct tidss_encoder *t_enc =3D bridge_to_tidss_encoder(bridge); =20 - return drm_bridge_attach(bridge->encoder, t_enc->next_bridge, + return drm_bridge_attach(encoder, t_enc->next_bridge, bridge, flags); } =20 static int tidss_bridge_atomic_check(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c index 779b22efe27bffc586a760fdc49012e02ac23d0d..efc6f6078b026764c59cfb2a33b= 28a88b7018c3a 100644 --- a/drivers/gpu/drm/vc4/vc4_dsi.c +++ b/drivers/gpu/drm/vc4/vc4_dsi.c @@ -1158,16 +1158,17 @@ static void vc4_dsi_bridge_enable(struct drm_bridge= *bridge, drm_print_regset32(&p, &dsi->regset); } } =20 static int vc4_dsi_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct vc4_dsi *dsi =3D bridge_to_vc4_dsi(bridge); =20 /* Attach the panel or bridge to the dsi bridge */ - return drm_bridge_attach(bridge->encoder, dsi->out_bridge, + return drm_bridge_attach(encoder, dsi->out_bridge, &dsi->bridge, flags); } =20 static ssize_t vc4_dsi_host_transfer(struct mipi_dsi_host *host, const struct mipi_dsi_msg *msg) diff --git a/drivers/gpu/drm/xlnx/zynqmp_dp.c b/drivers/gpu/drm/xlnx/zynqmp= _dp.c index 1f57935478d395b75842afccf6770ccb8d76c0d9..cbb608c0f16c87f51d6c2c0ea04= 534432c4a9742 100644 --- a/drivers/gpu/drm/xlnx/zynqmp_dp.c +++ b/drivers/gpu/drm/xlnx/zynqmp_dp.c @@ -1479,10 +1479,11 @@ static void zynqmp_dp_disp_disable(struct zynqmp_dp= *dp, /* -----------------------------------------------------------------------= ------ * DRM Bridge */ =20 static int zynqmp_dp_bridge_attach(struct drm_bridge *bridge, + struct drm_encoder *encoder, enum drm_bridge_attach_flags flags) { struct zynqmp_dp *dp =3D bridge_to_dp(bridge); int ret; =20 @@ -1492,11 +1493,11 @@ static int zynqmp_dp_bridge_attach(struct drm_bridg= e *bridge, dev_err(dp->dev, "failed to initialize DP aux\n"); return ret; } =20 if (dp->next_bridge) { - ret =3D drm_bridge_attach(bridge->encoder, dp->next_bridge, + ret =3D drm_bridge_attach(encoder, dp->next_bridge, bridge, flags); if (ret < 0) goto error; } =20 diff --git a/drivers/platform/arm64/acer-aspire1-ec.c b/drivers/platform/ar= m64/acer-aspire1-ec.c index 2df42406430db7bd9ae5dcca6aace88c3bf3baa0..958fe1bf5f85bb69ac7962f217d= e9f0b40cde9a1 100644 --- a/drivers/platform/arm64/acer-aspire1-ec.c +++ b/drivers/platform/arm64/acer-aspire1-ec.c @@ -364,11 +364,12 @@ static const struct power_supply_desc aspire_ec_adp_p= sy_desc =3D { =20 /* * USB-C DP Alt mode HPD. */ =20 -static int aspire_ec_bridge_attach(struct drm_bridge *bridge, enum drm_bri= dge_attach_flags flags) +static int aspire_ec_bridge_attach(struct drm_bridge *bridge, struct drm_e= ncoder *encoder, + enum drm_bridge_attach_flags flags) { return flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR ? 0 : -EINVAL; } =20 static void aspire_ec_bridge_update_hpd_work(struct work_struct *work) diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index d4c75d59fa12be1bd7375ce3ea56415235781b28..2b65466540306feb0694abdc7cd= 801369cb9c9f0 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -71,11 +71,11 @@ struct drm_bridge_funcs { * * RETURNS: * * Zero on success, error code on failure. */ - int (*attach)(struct drm_bridge *bridge, + int (*attach)(struct drm_bridge *bridge, struct drm_encoder *encoder, enum drm_bridge_attach_flags flags); =20 /** * @detach: * --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7A5E7149C55 for ; Thu, 13 Feb 2025 14:45:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457912; cv=none; b=p/QFDD3E4+me0gw0N2Rru0N3rL1+87X7aWW8wogAwoXTpaE3T/VGVvVzneTVBHBx1f9nQrNpacvdFORP4dNxl1r1BqkZ3AAF/xPWAT9/UKxPe9K01stNgl0rlpphnQ4qTISXzbWCYsjby0LiseIswxHUCSETg6MPt6anMUEzXco= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457912; c=relaxed/simple; bh=72Lepx1DN8gQFji9Cjn3zP8xGqZXbIiwFKfACerW6i4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oKmZg7xMMzc3Z8QPurzuRclz5o9KcmsiP9+0yA3oCtjdqA5iNYUQ3Rxgwi4wTGM/DvPMQQkc0TBavi+RoFeCGu9GQM4juvZrTw9ejNluKm7liSDWt8wlMKF21vyvx1lq+nEgRfWhzKjA+/mlUDMYbNLRCSuw9IBQzb8K7V50Upg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=J0bbn1aL; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="J0bbn1aL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A8524C4CED1; Thu, 13 Feb 2025 14:45:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457912; bh=72Lepx1DN8gQFji9Cjn3zP8xGqZXbIiwFKfACerW6i4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=J0bbn1aLsA2ZyNa0O0cxSmj/CWZknrcr+lIZUL+dG4w9+mONgdbhjaLb6WUTOGUko Uuv8BjysxNoR01g2q7nk15elHd8XtXUiPQpQlZf+aAcFxEKta5THptt4oYo5uG+4Vd GDoao6RtiXCn48TQP5Tqx0HTDvAkjspGIrho+bTe8004IQ1v4wa2GALdH0Lpspg06t plO2XIaAuVnaZ5B91Wz41ZhCRwa8b0W7gvEohjyoUipNF/WAWSpc2ccd/9tdpFhSjH tEC4o7QKarMpxNxKgHc7XHkAPUzogNXr35kC6YaVzwpYvqsPLIEP4B5w4of4sstNhg ZmXqJdvuXoVMQ== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:47 +0100 Subject: [PATCH v3 28/37] drm/bridge: Provide a helper to retrieve current bridge state Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-28-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1331; i=mripard@kernel.org; h=from:subject:message-id; bh=72Lepx1DN8gQFji9Cjn3zP8xGqZXbIiwFKfACerW6i4=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWJWWdfacEcg56NQ9o+t24c8dIcYtLy976wdN3RVVe s9u7znTjqksDMKcDLJiiixPZMJOL29fXOVgv/IHzBxWJpAhDFycAjCRxgTGOlU9/gfpCfaPHDOP 1hUbJpauWH657aX739Mucz5prlwsl2zty1kyUTXVWJ7VLZz5U/l3xvqobBUjvUUfllvp7Hny9qK 4zY87HwwlDjz12C4XNikyeKNK8hHJzS/PzH/Uby9/7lY5gyYA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D The current bridge state is accessible from the drm_bridge structure, but since it's fairly indirect it's not easy to figure out. Provide a helper to retrieve it. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- include/drm/drm_bridge.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index 2b65466540306feb0694abdc7cd801369cb9c9f0..4cc12b8bbdfe2b496546607d1ae= 0b66a903c8f89 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -955,10 +955,31 @@ static inline struct drm_bridge *of_drm_find_bridge(s= truct device_node *np) { return NULL; } #endif =20 +/** + * @drm_bridge_get_current_state() - Get the current bridge state + * @bridge: bridge object + * + * This function must be called with the modeset lock held. + * + * RETURNS: + * + * The current bridge state, or NULL if there is none. + */ +static inline struct drm_bridge_state * +drm_bridge_get_current_state(struct drm_bridge *bridge) +{ + drm_modeset_lock_assert_held(&bridge->base.lock); + + if (!bridge) + return NULL; + + return drm_priv_to_bridge_state(bridge->base.state); +} + /** * drm_bridge_get_next_bridge() - Get the next bridge in the chain * @bridge: bridge object * * RETURNS: --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CE308188583 for ; Thu, 13 Feb 2025 14:45:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457914; cv=none; b=jHrvyEmllm4iA0gun71bmyVMpqyTOu4VHOQUXbifSKf8csy5BUP4C7FwtNJhedqrZsHSdbL3bi1j1qZidQdZITIMWMcQn7CryTAo55N5YzcyBeS2KgUZxqOqNHHG7dczU95eG2MpanNDtkwOo+ux3pI4mNVGJx6nkKr4gRivCww= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457914; c=relaxed/simple; bh=G/dtHGJLltHvyQvOlbZxv0Dbjvb3n4W6Sq3TiFqZN7Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HohXZrpPhQUmdLdRs7s1Bq64nwCWvSyhhUgtc9MsczOlanf2rNNdjsM8ROUYre9/UHdyK9eW5sjJsKRhLjJUzeO7ywQ7cWxvBd7nuzJc3m78mDyf4S9yW9NK4OGNq/T0tOiX/IEZqBkGukxF3+AjaSyUW2Q/Ia2ZY4QkuVxTIyM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=CzMJFvu3; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="CzMJFvu3" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5BE5CC4CEE4; Thu, 13 Feb 2025 14:45:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457914; bh=G/dtHGJLltHvyQvOlbZxv0Dbjvb3n4W6Sq3TiFqZN7Q=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=CzMJFvu3mGQSIUbWRdPNGlktfm9tTcHsneSZ6VGrkosVec/KofGhk0jYwLRfilOkl nx0jVjbgz/BdxLezIhIqNLaJtfCws9wy22NfrId90FitkbhOnzKNA3vHJv4A7R1y5o ZTACp5x/zLXzLWrFA0Nk2XsYdksocrwzgyVvj9O0fwPeXME/9mQgcOv1+pgEwG3gIs Evj78V3wOLgrNcvCS102fLqWfyQ+eYEk6yBIyL5CLsdaN7D3fK9Kh431sVTycHTl2d ifvntnXKBcBi82hkUt5eRRswCboNPFU3XXbut8p1czan2Ssj1QlF8eHJi8T1gxodu0 EU+fFaknmMlog== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:48 +0100 Subject: [PATCH v3 29/37] drm/bridge: Introduce drm_bridge_is_atomic() helper Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-29-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1899; i=mripard@kernel.org; h=from:subject:message-id; bh=G/dtHGJLltHvyQvOlbZxv0Dbjvb3n4W6Sq3TiFqZN7Q=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWJV/vm+4t8Y1e/mDxwuOGM18a7vr0OvNa+LKvm4/9 T8nyXuDfcdUFgZhTgZZMUWWJzJhp5e3L65ysF/5A2YOKxPIEAYuTgGYyNV0xnpntr7bD3TyYrdy x1V1FMhbKd4NOJFQmfH754z6eX4iEx2+B9/sPb7j1iZe/R26s0VceRnrTE8mrPky+/KRZZruTiE RXsfPPDOSXbDxx/rGORN9VVgXm2h03pr3ysOBb/YBL8leudsqAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D We test for whether the bridge is atomic in several places in the source code, so let's consolidate them. Suggested-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/drm_bridge.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index 8241c00e4506eceeb9bb4ba74a38d8f360c65d38..d2525d0b1324cc3a63e32f5bf6c= a6c4f9034eb4e 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -278,10 +278,15 @@ drm_bridge_atomic_destroy_priv_state(struct drm_priva= te_obj *obj, static const struct drm_private_state_funcs drm_bridge_priv_state_funcs = =3D { .atomic_duplicate_state =3D drm_bridge_atomic_duplicate_priv_state, .atomic_destroy_state =3D drm_bridge_atomic_destroy_priv_state, }; =20 +static bool drm_bridge_is_atomic(struct drm_bridge *bridge) +{ + return bridge->funcs->atomic_reset !=3D NULL; +} + /** * drm_bridge_attach - attach the bridge to an encoder's chain * * @encoder: DRM encoder * @bridge: bridge to attach @@ -330,11 +335,11 @@ int drm_bridge_attach(struct drm_encoder *encoder, st= ruct drm_bridge *bridge, ret =3D bridge->funcs->attach(bridge, encoder, flags); if (ret < 0) goto err_reset_bridge; } =20 - if (bridge->funcs->atomic_reset) { + if (drm_bridge_is_atomic(bridge)) { struct drm_bridge_state *state; =20 state =3D bridge->funcs->atomic_reset(bridge); if (IS_ERR(state)) { ret =3D PTR_ERR(state); @@ -375,11 +380,11 @@ void drm_bridge_detach(struct drm_bridge *bridge) return; =20 if (WARN_ON(!bridge->dev)) return; =20 - if (bridge->funcs->atomic_reset) + if (drm_bridge_is_atomic(bridge)) drm_atomic_private_obj_fini(&bridge->base); =20 if (bridge->funcs->detach) bridge->funcs->detach(bridge); =20 --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7566619E975 for ; Thu, 13 Feb 2025 14:45:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457917; cv=none; b=OCq9x0ldVsuZ1JzAiL9NgQRsR0g/B1jAyWKdCBtlj5YXLbodja0p1GRJjDEF/fGmXdVafgaDG9o/KU6jvQbsIffur1l+w7MWTXRlOS0r18srhIszJ0g8MBrfaPgNRCID0ElVLdpmBVKUWSTAZoNbb8P+M3tEMtRJ7tV2wvqltLg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457917; c=relaxed/simple; bh=KSXYWH3Ves9FGs7/gAI9crsBWVHKvvZPhvWTImVWl3g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=g4QTxaQtEmCszqqqtC8zvwOo/RyUjohOviPV11T+TJC9/S3T7X7KCAWbt0XxyxAckBhkuf2R33IuNk3uj6PLZ0sSqU8TMy2SmZ4ZXY7pO2uNsKCjuQSLCv+n4PPwWMSNfPJzcpTDQWOdxisfbInrzaQKorxx4ViooRy95I523SU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=G6HbeCUn; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="G6HbeCUn" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0415EC4CEE8; Thu, 13 Feb 2025 14:45:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457917; bh=KSXYWH3Ves9FGs7/gAI9crsBWVHKvvZPhvWTImVWl3g=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=G6HbeCUnoMEqq0sib9Sm5hvc/g5lQc2ZL4c6grKhlXsSUOpXS/1I+5xBf6adm58s0 NUnzvmlZGthij0PvaYx8zbQG1BMGTxhb/vXjPdp5T8Gl7pGAs/G1B48a0NHMgeZ0fl R3mTpvFaTnq6RnvSvUiDGizIaBiiWtu+V43bomessMCR9+a0CUKyc70MteOkpUUryW 6c86WKtJZjGO5vcB1r+E80toa93X97R2jwbu8IWKVDbycODdg6XiAFSbriS+o4FCas jDm3YxeVCrX82dr7iErLsEFsND5tBp2SjCDnugaZZHTu0aUQYBMJHXhhcso756g2iM EsX6FFLHG6b0w== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:49 +0100 Subject: [PATCH v3 30/37] drm/bridge: Assume that a bridge is atomic if it has atomic_reset Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-30-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1817; i=mripard@kernel.org; h=from:subject:message-id; bh=KSXYWH3Ves9FGs7/gAI9crsBWVHKvvZPhvWTImVWl3g=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWJUPJUQen3uaP/1F+JVMc23GzpAns88osIvMieIpn ysc+qOuYyoLgzAng6yYIssTmbDTy9sXVznYr/wBM4eVCWQIAxenAExk+w7GOiVdJ93n817sUH1s XefG6lkql7OrpDdoccOxMMV/N5KmRjHu45eZu312oDt/foX4v7eejA0nLpTsbJnibnvKMNzg144 TM9W/ph17//f3qrevYgVXqvJU7e7oTlji0xhrUHRzd8xD4bsA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D The drm_atomic_bridge_check() runs the atomic_check callback if needed, or falls back to mode_fixup if it's not there. Going forward, we'll need to setup the bridge atomic state even though drivers might not be implementing atomic_check at all. We can thus switch to using drm_bridge_is_atomic() to take the atomic path, and do additional things there in the future, or go the mode_fixup route. Signed-off-by: Maxime Ripard --- drivers/gpu/drm/drm_bridge.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index d2525d0b1324cc3a63e32f5bf6ca6c4f9034eb4e..b6d24092674c8fa33d9b6ebab9e= ce0f91fb8f8ea 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -803,23 +803,25 @@ EXPORT_SYMBOL(drm_atomic_bridge_chain_enable); =20 static int drm_atomic_bridge_check(struct drm_bridge *bridge, struct drm_crtc_state *crtc_state, struct drm_connector_state *conn_state) { - if (bridge->funcs->atomic_check) { + if (drm_bridge_is_atomic(bridge)) { struct drm_bridge_state *bridge_state; int ret; =20 bridge_state =3D drm_atomic_get_new_bridge_state(crtc_state->state, bridge); if (WARN_ON(!bridge_state)) return -EINVAL; =20 - ret =3D bridge->funcs->atomic_check(bridge, bridge_state, - crtc_state, conn_state); - if (ret) - return ret; + if (bridge->funcs->atomic_check) { + ret =3D bridge->funcs->atomic_check(bridge, bridge_state, + crtc_state, conn_state); + if (ret) + return ret; + } } else if (bridge->funcs->mode_fixup) { if (!bridge->funcs->mode_fixup(bridge, &crtc_state->mode, &crtc_state->adjusted_mode)) return -EINVAL; } --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 190101E3DEB for ; Thu, 13 Feb 2025 14:45:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457920; cv=none; b=CYA0R/yaTUDPcAAFR0Us9RaA2DJGhuR3unf1HuAoR3pifp5qXwiri6Nbpvv+IhOA/bKK4L7SuYSESGmiBo5Y2DRcxUGlZGsVaQspgJyK5t0abmLmQN6d7H3djgvCH/+HOLTTGhLWcu7H7LkK6Rd9OkBfyS17XtsD1F/pln8EOa4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457920; c=relaxed/simple; bh=Ruzd7GaGYJAPLi37bBN3Pff7BVs07Ll4eqdWqarhwco=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SRX1Jp3gdLCUNZqn2nRWANoKNdBQ5cLqv0o7+ICPZvdRznbH/rXfgVfCnYya56mU6tScG7PknTmDAYsD5rcUdTKoIL9lQvLmFUkG2NVGbiTMS7v5FeShszXijcDUoF5irSaVSCFijJKGG1EkmQT+SfylGILaiz3kLdWhl9kctIw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Xgp+R+O/; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Xgp+R+O/" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9C730C4CED1; Thu, 13 Feb 2025 14:45:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457920; bh=Ruzd7GaGYJAPLi37bBN3Pff7BVs07Ll4eqdWqarhwco=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Xgp+R+O/z93DPt+x7Qefi98Vy07rr01er3TsIWIOyie1vBEkWJBgZc7KtqFcXuw+e /zmMe8id6kiX/eDpIP4Cn9V5V5H1WFDuAKb2nPJAypb+dXUCAnKyIBHFJ+osgaTa// zYlqvTBQXQySTFqfmjkJDqrreOKP3pr7VCVFo3ZPUkwjk/60lYyW5jaAxfwVXwRduF BAGyQ7tis1ULCBCIqhF792H+IpHtFafPf2mXvXUf6jqyrcc5+fVtkjt8gDtUqADR5A DTakyBKGBFXT/mo8EwXx16Z2f+M1/JIoLHYYEnBPuy+PNFUD9kjPQBVfNHBFbNaA1W 00F6r80yuJc7w== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:50 +0100 Subject: [PATCH v3 31/37] drm/bridge: Provide pointers to the connector and crtc in bridge state Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-31-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3321; i=mripard@kernel.org; h=from:subject:message-id; bh=Ruzd7GaGYJAPLi37bBN3Pff7BVs07Ll4eqdWqarhwco=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWFWMk2vEvvQ27ucR7P5urHQteMXKAw9n+x0yXOD8a 8+aTRv3dUxlYRDmZJAVU2R5IhN2enn74ioH+5U/YOawMoEMYeDiFICJXN7L2NCZ/mhaymalk/te ZztNutXC+3Wav2nQiennN9wrvqTLlGmh9zh5kWnZJSeHsI5k5ctbBBjrE0ukTr1cxLNbdefKjtW lCgFHVqhw3zq8fLGP6Sm1vZnrMpPV1Y6H2K6IPH3muuC3yu/yAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Now that connectors are no longer necessarily created by the bridges drivers themselves but might be created by drm_bridge_connector, it's pretty hard for bridge drivers to retrieve pointers to the connector and CRTC they are attached to. Indeed, the only way to retrieve the CRTC is to follow the drm_bridge encoder field, and then the drm_encoder crtc field, both of them being deprecated. And for the connector, since we can have multiple connectors attached to a CRTC, we don't really have a reliable way to get it. Let's provide both pointers in the drm_bridge_state structure so we don't have to follow deprecated, non-atomic, pointers, and be more consistent with the other KMS entities. Signed-off-by: Maxime Ripard --- drivers/gpu/drm/drm_atomic_state_helper.c | 5 +++++ drivers/gpu/drm/drm_bridge.c | 5 +++++ include/drm/drm_atomic.h | 14 ++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/dr= m_atomic_state_helper.c index 519228eb109533d2596e899a57b571fa0995824f..66661dca077215b78dffca7bc17= 12f56d35e3918 100644 --- a/drivers/gpu/drm/drm_atomic_state_helper.c +++ b/drivers/gpu/drm/drm_atomic_state_helper.c @@ -777,10 +777,15 @@ EXPORT_SYMBOL(drm_atomic_helper_bridge_duplicate_stat= e); * that don't subclass the bridge state. */ void drm_atomic_helper_bridge_destroy_state(struct drm_bridge *bridge, struct drm_bridge_state *state) { + if (state->connector) { + drm_connector_put(state->connector); + state->connector =3D NULL; + } + kfree(state); } EXPORT_SYMBOL(drm_atomic_helper_bridge_destroy_state); =20 /** diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c index b6d24092674c8fa33d9b6ebab9ece0f91fb8f8ea..db2e9834939217d65720ab7a2f8= 2a9ca3db796b0 100644 --- a/drivers/gpu/drm/drm_bridge.c +++ b/drivers/gpu/drm/drm_bridge.c @@ -812,10 +812,15 @@ static int drm_atomic_bridge_check(struct drm_bridge = *bridge, bridge_state =3D drm_atomic_get_new_bridge_state(crtc_state->state, bridge); if (WARN_ON(!bridge_state)) return -EINVAL; =20 + bridge_state->crtc =3D crtc_state->crtc; + + drm_connector_get(conn_state->connector); + bridge_state->connector =3D conn_state->connector; + if (bridge->funcs->atomic_check) { ret =3D bridge->funcs->atomic_check(bridge, bridge_state, crtc_state, conn_state); if (ret) return ret; diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h index 4c673f0698fef6b60f77db980378d5e88e0e250e..293e2538a428bc14013d7fabea5= 7a6b858ed7b47 100644 --- a/include/drm/drm_atomic.h +++ b/include/drm/drm_atomic.h @@ -1216,10 +1216,24 @@ struct drm_bridge_state { /** * @bridge: the bridge this state refers to */ struct drm_bridge *bridge; =20 + /** + * @crtc: CRTC the bridge is connected to, NULL if disabled. + * + * Do not change this directly. + */ + struct drm_crtc *crtc; + + /** + * @connector: The connector the bridge is connected to, NULL if disabled. + * + * Do not change this directly. + */ + struct drm_connector *connector; + /** * @input_bus_cfg: input bus configuration */ struct drm_bus_cfg input_bus_cfg; =20 --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 31F8D1FF60F for ; Thu, 13 Feb 2025 14:45:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457923; cv=none; b=RvE4LJdUU9k0eA8OBltGVI6Ekk9BzSuv65mgVxfLw5YfcXM1dvj28xC8zev4dSA6a1iWia8m+CcVd/XZIBWRiUI6NU1Itw4vsXEfDS6z/OAkDTxP2SjgwbbKRS212XMjeP3wN+JU5gQd9PQzDx4L5XjKNBBtOoUtg6V3yhsAPCM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457923; c=relaxed/simple; bh=vZ1zwX+EIT22jLVdxPPeOac2s5CTPENPj9BdJWzzYrU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cBDV+cUsYBr4A1x6pIVMWVQV2kH7ITPmMWc/XiujAXxgPTQa1Ime4zQsPCEmo7rAJJ00VgUF5sDZ8r9KdzFaQQljdo96fd9xlirHqqPcWi3KNct8nCA6UsHsyznUsXNxBMe32EOJP7TAHGWYkKOJJANzswUvPW1kTnltDmZQ6uA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Q4St6TMh; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Q4St6TMh" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 55406C4CEE2; Thu, 13 Feb 2025 14:45:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457922; bh=vZ1zwX+EIT22jLVdxPPeOac2s5CTPENPj9BdJWzzYrU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Q4St6TMhkyhIG6lEgIn9qNLxZbjFXwDd9fSZ6TQXMgtpYHiVcKPK4SInA1j0Wf7wN SHhztO4/8epvX1EZolbSWgW2b1RrROvmL4AG/ktlfSst6N/+Dxx4ZXenmDChf1/u2N zgN0LcjKc05pq72Wv3v4OXuhmYEstVSie168c+3qqR5nyUBkKDaqSmwWatorPUdMdC 6YklDE6CbppIPmrSbwVPQf4McPOgVnMTdbLZ2sUQWUyyKlL7GxzeERzYV/rypGfb/V 4eSQY69SZCV6Asuubwx2NrB9tPo6t52oa2M3+Ylz7rKebEaSRlzmQCcfCIFEUKuTps UxRpcUCqk4Kag== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:51 +0100 Subject: [PATCH v3 32/37] drm/bridge: Make encoder pointer deprecated Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-32-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1543; i=mripard@kernel.org; h=from:subject:message-id; bh=vZ1zwX+EIT22jLVdxPPeOac2s5CTPENPj9BdJWzzYrU=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWFVUXqTGbf4fsZ9lsVeOXKP+i5taP9tlk58bX2LbY ZTcs/tPx1QWBmFOBlkxRZYnMmGnl7cvrnKwX/kDZg4rE8gQBi5OAZiIwH7G+oTq2u9LT9XaiTAV OL1cctbg4r65/KIn/gadMnO9saF65Zk606Nv5m2e6vdC4UFsul68GWOt8H0OKeNY7a0rFLUuioQ +/+drWPJ/vnmnstObKce1vec1CTQ75zy9EPhc0kGkM+uj5nkA X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D Other entities (drm_connector.crtc, drm_encoder.crtc, etc.) have pointer to other currently bound entities. They are all considered relevant only for non-atomic drivers, and generally perceived as deprecated in favour of the equivalent pointers in the atomic states. It used to be useful because we didn't have alternatives, but now that we do, let's make sure it's done for drm_bridge.encoder too. Reviewed-by: Dmitry Baryshkov Signed-off-by: Maxime Ripard --- include/drm/drm_bridge.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h index 4cc12b8bbdfe2b496546607d1ae0b66a903c8f89..a4dd9be13c5205512c2b3441a3d= 87d557f411bfb 100644 --- a/include/drm/drm_bridge.h +++ b/include/drm/drm_bridge.h @@ -822,12 +822,18 @@ enum drm_bridge_ops { struct drm_bridge { /** @base: inherit from &drm_private_object */ struct drm_private_obj base; /** @dev: DRM device this bridge belongs to */ struct drm_device *dev; - /** @encoder: encoder to which this bridge is connected */ + + /** @encoder: + * + * encoder to which this bridge is connected. Only meaningful + * for non-atomic drivers. Deprecated. + */ struct drm_encoder *encoder; + /** @chain_node: used to form a bridge chain */ struct list_head chain_node; /** @of_node: device node pointer to the bridge */ struct device_node *of_node; /** @list: to keep track of all added bridges */ --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7B6BD20013E for ; Thu, 13 Feb 2025 14:45:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457925; cv=none; b=lxRkCuybbO/CDaW5l5sGsSCFKjDW3JZKNj4hqxVNKGHrRk0P5ecAk1pufpDemzeeGD8qE8LmIrzOYgEs+4pfUdEUahgn/yFC1I4QFf3VuxdB/pmKwB3nAYvzsTC4i1nXvq8jwXWyl03U2+qlRKIjLVvFKtytCbmEbKQeN6+BEFI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457925; c=relaxed/simple; bh=97K/zrwMymEcyzYHacN1UMhzLv2qJvVByoMxUvJWseA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=r+fZctprhDueLso/447uTBfQrRdUB4SDzWCP7+POrJTg5AipoJy+P5WoMt7GIS4HlLaoZEv/fNwOjgBZKuNCDefpTQLWMqWtts1MdxwQk9ggW6iDnCLKu9z0rtswOtn9rno2+CcR3dg6eILem8ZVKbOooEvVT3oOQ//YBfQz5FE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bznUsM24; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bznUsM24" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 09733C4CED1; Thu, 13 Feb 2025 14:45:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457925; bh=97K/zrwMymEcyzYHacN1UMhzLv2qJvVByoMxUvJWseA=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=bznUsM24ZXcttpjSqjd59MBZ+hPvcPERv8NBFWrofUiTJB/EN4KyziJk2Vp1tDPWE HBqca4eG0vwSCirAZPnVT4Vl7dUNBdcqY+LJNlcorSvExC+M7n1HU9oYXbYMe5oiMA 1/FfhE4ZMe7atoPBUn0jvH6HN+dgiVeJTbLuuEnDZnmyRNQg4g/N0xBtOZ3nPM1Nry 7YDBMSVzv5lHyQgj/2wd8pjkaC8rZhvBLfiisMmWiqxgrKakI7K9gU05V0cTUyiIWC MXpYZpYd79i0kv+Av0NBsPVpjvH+mLEbL/2rV+WBJsovJOPN2/eEupUNnHLxP4vO3X BE2ilmTG5I5Rw== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:52 +0100 Subject: [PATCH v3 33/37] drm/bridge: cdns-csi: Switch to atomic helpers Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-33-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4688; i=mripard@kernel.org; h=from:subject:message-id; bh=97K/zrwMymEcyzYHacN1UMhzLv2qJvVByoMxUvJWseA=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWFVid/9d4vJnUsueDbGL1MLdovWyGF7cz/7+SahZe ueyulsXOqayMAhzMsiKKbI8kQk7vbx9cZWD/cofMHNYmUCGMHBxCsBEog4wNkz8ZVd/fPlHbfF0 s7B58zJ0u2VWsu193Jm6ReZM0ElxAT7m89LG3vWZlmc5k/omNiRZMTY0cV0z2vjzdtez77LOps8 qZi0QT5WpzZl+w0lZ4v+k3b5ugWaPp0hkiR2c0601ZcWRVXcB X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D The Cadence DSI driver follows the drm_encoder->crtc pointer that is deprecated and shouldn't be used by atomic drivers. This was due to the fact that we did't have any other alternative to retrieve the CRTC pointer. Fortunately, the CRTC pointer is now provided in the bridge state, so we can move to atomic callbacks and drop that deprecated pointer usage. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 29 ++++++++++++++++++----= ---- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/d= rm/bridge/cadence/cdns-dsi-core.c index 8f54c034ac4f3e82c38607a0e52d4745654b571f..a687585819c014e120176fb990f= e0861698448e7 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c @@ -654,11 +654,12 @@ cdns_dsi_bridge_mode_valid(struct drm_bridge *bridge, return MODE_BAD; =20 return MODE_OK; } =20 -static void cdns_dsi_bridge_disable(struct drm_bridge *bridge) +static void cdns_dsi_bridge_atomic_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct cdns_dsi_input *input =3D bridge_to_cdns_dsi_input(bridge); struct cdns_dsi *dsi =3D input_to_dsi(input); u32 val; =20 @@ -674,11 +675,12 @@ static void cdns_dsi_bridge_disable(struct drm_bridge= *bridge) dsi->platform_ops->disable(dsi); =20 pm_runtime_put(dsi->base.dev); } =20 -static void cdns_dsi_bridge_post_disable(struct drm_bridge *bridge) +static void cdns_dsi_bridge_atomic_post_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct cdns_dsi_input *input =3D bridge_to_cdns_dsi_input(bridge); struct cdns_dsi *dsi =3D input_to_dsi(input); =20 pm_runtime_put(dsi->base.dev); @@ -751,15 +753,18 @@ static void cdns_dsi_init_link(struct cdns_dsi *dsi) writel(val, dsi->regs + MCTL_MAIN_EN); =20 dsi->link_initialized =3D true; } =20 -static void cdns_dsi_bridge_enable(struct drm_bridge *bridge) +static void cdns_dsi_bridge_atomic_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct cdns_dsi_input *input =3D bridge_to_cdns_dsi_input(bridge); struct cdns_dsi *dsi =3D input_to_dsi(input); struct cdns_dsi_output *output =3D &dsi->output; + struct drm_bridge_state *bridge_state; + struct drm_crtc_state *crtc_state; struct drm_display_mode *mode; struct phy_configure_opts_mipi_dphy *phy_cfg =3D &output->phy_opts.mipi_d= phy; unsigned long tx_byte_period; struct cdns_dsi_cfg dsi_cfg; u32 tmp, reg_wakeup, div; @@ -769,11 +774,13 @@ static void cdns_dsi_bridge_enable(struct drm_bridge = *bridge) return; =20 if (dsi->platform_ops && dsi->platform_ops->enable) dsi->platform_ops->enable(dsi); =20 - mode =3D &bridge->encoder->crtc->state->adjusted_mode; + bridge_state =3D drm_atomic_get_new_bridge_state(state, bridge); + crtc_state =3D drm_atomic_get_new_crtc_state(state, bridge_state->crtc); + mode =3D &crtc_state->adjusted_mode; nlanes =3D output->dev->lanes; =20 WARN_ON_ONCE(cdns_dsi_check_conf(dsi, mode, &dsi_cfg, false)); =20 cdns_dsi_hs_init(dsi); @@ -891,11 +898,12 @@ static void cdns_dsi_bridge_enable(struct drm_bridge = *bridge) =20 tmp =3D readl(dsi->regs + MCTL_MAIN_EN) | IF_EN(input->id); writel(tmp, dsi->regs + MCTL_MAIN_EN); } =20 -static void cdns_dsi_bridge_pre_enable(struct drm_bridge *bridge) +static void cdns_dsi_bridge_atomic_pre_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct cdns_dsi_input *input =3D bridge_to_cdns_dsi_input(bridge); struct cdns_dsi *dsi =3D input_to_dsi(input); =20 if (WARN_ON(pm_runtime_get_sync(dsi->base.dev) < 0)) @@ -906,14 +914,17 @@ static void cdns_dsi_bridge_pre_enable(struct drm_bri= dge *bridge) } =20 static const struct drm_bridge_funcs cdns_dsi_bridge_funcs =3D { .attach =3D cdns_dsi_bridge_attach, .mode_valid =3D cdns_dsi_bridge_mode_valid, - .disable =3D cdns_dsi_bridge_disable, - .pre_enable =3D cdns_dsi_bridge_pre_enable, - .enable =3D cdns_dsi_bridge_enable, - .post_disable =3D cdns_dsi_bridge_post_disable, + .atomic_disable =3D cdns_dsi_bridge_atomic_disable, + .atomic_pre_enable =3D cdns_dsi_bridge_atomic_pre_enable, + .atomic_enable =3D cdns_dsi_bridge_atomic_enable, + .atomic_post_disable =3D cdns_dsi_bridge_atomic_post_disable, + .atomic_reset =3D drm_atomic_helper_bridge_reset, + .atomic_duplicate_state =3D drm_atomic_helper_bridge_duplicate_state, + .atomic_destroy_state =3D drm_atomic_helper_bridge_destroy_state, }; =20 static int cdns_dsi_attach(struct mipi_dsi_host *host, struct mipi_dsi_device *dev) { --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 10161202C34 for ; Thu, 13 Feb 2025 14:45:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457928; cv=none; b=qqFSp1ErARvT4SsqEH2UsoUTlNSsd/DFR/AbMQiIOkQ52h5Ibe08fGtnoZFSYGCsNsvJshY8dKQS7p3eLhA9d55HSuAOqBrUozlkWp/Ioc03EPxMLv9vd/Srw6BMBfyGJKmD7WUDb0h/DqCAJq8hv4devw4RHu1zqh7XlA71Q5Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457928; c=relaxed/simple; bh=yIwvG87ThxOh9khY9GFKY72FMB/xyv2RheSYDDPgfBw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eyL5IGuPis2jptFPVVdSizocjtXvtyEbrFm+brhaM0USYmgxAo9bPjnAaQToXXlwnZglKkosfYPusX7mUq9K7fj9ohS+KROBESrvsEtMlZiyBukI//+ladxqngLNjsC6QRG5ueBX6GyLDsUV2ihqR2DDh8cCFPqgQt/ZBDw+Cbo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=F2Br8AR1; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="F2Br8AR1" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9976DC4CEE4; Thu, 13 Feb 2025 14:45:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457927; bh=yIwvG87ThxOh9khY9GFKY72FMB/xyv2RheSYDDPgfBw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=F2Br8AR1VbRQSoFiav8nwUFKWf1wCnHBz1pXsSUSv7RBWBnCqsAi5XhFH9/Vw9TxN wY/qu/rUrmtxtFYiCiVHfxZrt1dFnu1vFYXEH8if7GQuA+hGhvLhrlQF5WpNwe9d3a up/WRK+wDTlILlGM/H04pAXpPITUx6YdCbvahfajEOCkxWxRzKQppmA2RH0cXvALXe UHo/lZ7oYDzAd+uK1VkJiYcfbrQb6VQdm9/dJM2kg6r+Dfuw39v6IzXC33oLR9FE0F ul+hbY7kc1DEyPhE/eWha5G12G2D6mlcqeFnq4F4OEhwOB+AU8IYHPky6oRUlhrxw0 E1g02Po0Xs/pQ== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:53 +0100 Subject: [PATCH v3 34/37] drm/bridge: tc358775: Switch to atomic commit Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-34-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4179; i=mripard@kernel.org; h=from:subject:message-id; bh=yIwvG87ThxOh9khY9GFKY72FMB/xyv2RheSYDDPgfBw=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWFXbXJ6sv7i2bO5x27mRmfP1eqZkMFg1MXt1MiReC gqcNrmyYyoLgzAng6yYIssTmbDTy9sXVznYr/wBM4eVCWQIAxenAEwkZz5jffmD5bI7XNnC5A74 z84RfJa8fCrXPeE7nw1zFucIzE2QOnlH1e3JOpVHCin5QiuYzS6IM9bwXbRsMnikcems65ubfJf ldgRs4F81I2b93luvXM2WMW3xYFwTJVhytLuSbW2M6JtfOx8CAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D The tc358775 driver follows the drm_encoder->crtc pointer that is deprecated and shouldn't be used by atomic drivers. This was due to the fact that we did't have any other alternative to retrieve the CRTC pointer. Fortunately, the CRTC pointer is now provided in the bridge state, so we can move to atomic callbacks and drop that deprecated pointer usage. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/bridge/tc358775.c | 41 +++++++++++++++++------------------= ---- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/drivers/gpu/drm/bridge/tc358775.c b/drivers/gpu/drm/bridge/tc3= 58775.c index 13cd48e77d2d3f8dd646078fb7de95c420f29f73..3288960ddc86b9650939e821f23= 5ffb0ef1e5288 100644 --- a/drivers/gpu/drm/bridge/tc358775.c +++ b/drivers/gpu/drm/bridge/tc358775.c @@ -284,11 +284,12 @@ struct tc_data { static inline struct tc_data *bridge_to_tc(struct drm_bridge *b) { return container_of(b, struct tc_data, bridge); } =20 -static void tc_bridge_pre_enable(struct drm_bridge *bridge) +static void tc_bridge_atomic_pre_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct tc_data *tc =3D bridge_to_tc(bridge); struct device *dev =3D &tc->dsi->dev; int ret; =20 @@ -307,11 +308,12 @@ static void tc_bridge_pre_enable(struct drm_bridge *b= ridge) =20 gpiod_set_value(tc->reset_gpio, 0); usleep_range(10, 20); } =20 -static void tc_bridge_post_disable(struct drm_bridge *bridge) +static void tc_bridge_atomic_post_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct tc_data *tc =3D bridge_to_tc(bridge); struct device *dev =3D &tc->dsi->dev; int ret; =20 @@ -366,34 +368,24 @@ static void d2l_write(struct i2c_client *i2c, u16 add= r, u32 val) if (ret < 0) dev_err(&i2c->dev, "Error %d writing to subaddress 0x%x\n", ret, addr); } =20 -/* helper function to access bus_formats */ -static struct drm_connector *get_connector(struct drm_encoder *encoder) -{ - struct drm_device *dev =3D encoder->dev; - struct drm_connector *connector; - - list_for_each_entry(connector, &dev->mode_config.connector_list, head) - if (connector->encoder =3D=3D encoder) - return connector; - - return NULL; -} - -static void tc_bridge_enable(struct drm_bridge *bridge) +static void tc_bridge_atomic_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct tc_data *tc =3D bridge_to_tc(bridge); u32 hback_porch, hsync_len, hfront_porch, hactive, htime1, htime2; u32 vback_porch, vsync_len, vfront_porch, vactive, vtime1, vtime2; u32 val =3D 0; u16 dsiclk, clkdiv, byteclk, t1, t2, t3, vsdelay; - struct drm_display_mode *mode; - struct drm_connector *connector =3D get_connector(bridge->encoder); - - mode =3D &bridge->encoder->crtc->state->adjusted_mode; + struct drm_bridge_state *bridge_state =3D + drm_atomic_get_new_bridge_state(state, bridge); + struct drm_connector *connector =3D bridge_state->connector; + struct drm_crtc_state *crtc_state =3D + drm_atomic_get_new_crtc_state(state, bridge_state->crtc); + struct drm_display_mode *mode =3D &crtc_state->adjusted_mode; =20 hback_porch =3D mode->htotal - mode->hsync_end; hsync_len =3D mode->hsync_end - mode->hsync_start; vback_porch =3D mode->vtotal - mode->vsync_end; vsync_len =3D mode->vsync_end - mode->vsync_start; @@ -599,14 +591,17 @@ static int tc_bridge_attach(struct drm_bridge *bridge, &tc->bridge, flags); } =20 static const struct drm_bridge_funcs tc_bridge_funcs =3D { .attach =3D tc_bridge_attach, - .pre_enable =3D tc_bridge_pre_enable, - .enable =3D tc_bridge_enable, + .atomic_pre_enable =3D tc_bridge_atomic_pre_enable, + .atomic_enable =3D tc_bridge_atomic_enable, .mode_valid =3D tc_mode_valid, - .post_disable =3D tc_bridge_post_disable, + .atomic_post_disable =3D tc_bridge_atomic_post_disable, + .atomic_reset =3D drm_atomic_helper_bridge_reset, + .atomic_duplicate_state =3D drm_atomic_helper_bridge_duplicate_state, + .atomic_destroy_state =3D drm_atomic_helper_bridge_destroy_state, }; =20 static int tc_attach_host(struct tc_data *tc) { struct device *dev =3D &tc->i2c->dev; --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E4B0D203719 for ; Thu, 13 Feb 2025 14:45:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457931; cv=none; b=iOloQ4qRlNXsXzSr0a5S6g+OPqcyTS+GhW+O82JznY15eo429e0ig6S/+ioQJ3II7NjB6rejfRYtduWFHzvQGvuh0igKljazPh5Pt+OJrY9uQ6DPUjKcbeX4rphi4RJxuoiHMRS9PgrOgSQJuS09MmvoF5PX9UMmCZqEpik7+b0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457931; c=relaxed/simple; bh=HxWPASJqhCk8HMacRro/P3QhUnH5LdloQZZEdGS2Fto=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=La+O3Cju3igHHQR1MMVBkS0hcBZsZMo4Fnoqtghi0pzsRwKqpedetAKEY8UyT2WK/G5l1fhSb4zHDt1ctg0fgJa/Nqq821xhEawh+2EYA5V55IvdHe6XoVFuplj3RZrttS3+kv//rAmLheTgHhPg1S1Fed9/m6Ag/KcoxNRKnro= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fbO4ePyF; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fbO4ePyF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 507E0C4CED1; Thu, 13 Feb 2025 14:45:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457930; bh=HxWPASJqhCk8HMacRro/P3QhUnH5LdloQZZEdGS2Fto=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=fbO4ePyFLlQOnJjYv/oMMoP45ikG7CSyCVRAe/7vZFIC2wNAdgY5/akwRyx/VFzfQ R1ofgNZfXf/gIzVCvIr8tXLumkLAmprn57JhS30R1wXZUVt/mlgXyX1Pho8ulcJ+YP Bu43nle3E8HRDoCPLFpyPNc5qsXf6IL0+z9BtstoJ5VKeRHKbg6w5Q8+BU/bLA5YpE lYlY9VwOfP6wCDRm2s1EIrZyyrX43Sy0gNnbTk1V/CjJxqHbzarGVd8qiZr44P50Ro c30u3fNewv+HCY6wU9kXlOG+i9ZSjJExjF8DED6OXEfgCoKvj4QlK5GnxcuC/xiBK/ wbl83orW0ItHQ== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:54 +0100 Subject: [PATCH v3 35/37] drm/bridge: tc358768: Stop disabling when failing to enable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-35-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2122; i=mripard@kernel.org; h=from:subject:message-id; bh=HxWPASJqhCk8HMacRro/P3QhUnH5LdloQZZEdGS2Fto=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWFUDv+ytSprq/t4jh8HndAXP46awCQzFrge/53oLL ZuYIn+8YyoLgzAng6yYIssTmbDTy9sXVznYr/wBM4eVCWQIAxenAExk+QnG+vo7fYx3p1nE7sw1 jJ8q8fLzSv0kttOG9Yk+B8qe6mVcVlx6SvGTxq64hce+uksZuiXvZ6z3PSm8bOG7V7tiLr1tPrh 30WJ7ZmWu8GjTm/Or2eRvillf+vdUae/vmW1+kaZ7fpTP6FoFAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D The tc358768 bridge driver, if enabling it fails, tries to disable it. This is pretty uncommon in bridge drivers, and also stands in the way for further reworks. Worse, since pre_enable and enable aren't expected to fail, disable and post_disable might be called twice: once to handle the failure, and once to actually disable the bridge. Since post_disable uses regulators and clocks, this would lead to enable count imbalances. In order to prevent that imbalance, and to allow further reworks, let's drop the calls to disable and post_disable, but keep the warning to let users know about what's going on. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/bridge/tc358768.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/bridge/tc358768.c b/drivers/gpu/drm/bridge/tc3= 58768.c index 6db18d1e8824dd7d387211d6d1e668645cf88bbe..6b65ba8aed86012bc0f464bd5ee= 44325dae677c6 100644 --- a/drivers/gpu/drm/bridge/tc358768.c +++ b/drivers/gpu/drm/bridge/tc358768.c @@ -1075,15 +1075,12 @@ static void tc358768_bridge_pre_enable(struct drm_b= ridge *bridge) val =3D TC358768_DSI_CONFW_MODE_CLR | TC358768_DSI_CONFW_ADDR_DSI_CONTROL; val |=3D TC358768_DSI_CONTROL_DIS_MODE; /* DSI mode */ tc358768_write(priv, TC358768_DSI_CONFW, val); =20 ret =3D tc358768_clear_error(priv); - if (ret) { + if (ret) dev_err(dev, "Bridge pre_enable failed: %d\n", ret); - tc358768_bridge_disable(bridge); - tc358768_bridge_post_disable(bridge); - } } =20 static void tc358768_bridge_enable(struct drm_bridge *bridge) { struct tc358768_priv *priv =3D bridge_to_tc358768(bridge); @@ -1099,15 +1096,12 @@ static void tc358768_bridge_enable(struct drm_bridg= e *bridge) =20 /* set PP_en */ tc358768_update_bits(priv, TC358768_CONFCTL, BIT(6), BIT(6)); =20 ret =3D tc358768_clear_error(priv); - if (ret) { + if (ret) dev_err(priv->dev, "Bridge enable failed: %d\n", ret); - tc358768_bridge_disable(bridge); - tc358768_bridge_post_disable(bridge); - } } =20 #define MAX_INPUT_SEL_FORMATS 1 =20 static u32 * --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 70E79241698 for ; Thu, 13 Feb 2025 14:45:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457933; cv=none; b=SkpwLI6MJYLtoLpyptx69mLkhKpfbJmxYqKBtr0UNIdyx68Go7hgV/lgZGFsOsM8x3Hjqe1ApusA6ciU70e78OcFegVHDQSNB3UTB5XyeXbw6DuzwJI4nHlUsX/pGUD6NUkrun2wtjvkFcd6um2yGQ3NnDGnZYm+wo5/GKODFDM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457933; c=relaxed/simple; bh=JrG+Qes6Uhu9pUPHN00ADosGqM1HiFLiaRHuI+fbxOg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MP9kEk8w060uiOXNk8uxWh2RzXJpUCgo6BWcuzxVAnuqFD7Gz+/bfH9Cs+/XU8qwOQO7uewd1O4/cDfIN4yOlFJIoOC1k1bubt37+ag5VTWeCD7smSnHumhqQerDVWjgXW0eEMdKhVU4aU0OXpdBzwEpFT+M4+T1wQB5TJ7MxbE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GYnepvL+; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="GYnepvL+" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 006BEC4CED1; Thu, 13 Feb 2025 14:45:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457933; bh=JrG+Qes6Uhu9pUPHN00ADosGqM1HiFLiaRHuI+fbxOg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=GYnepvL+PQoMzH4kEcgxpqBusT4jAwpFWfu3l3VRLx9RnAGJFN16Oy711NmVfVOjX laMsvvJKqNUiy98nN5EDrE2OoTOqEgj72pIOS9jfy6mEa1G9vwVbOEXOlQwBAZycP1 L+ZxUbpDHBTil5xxWy/7ULKtHHWIqMUG3t4fu34UNpJW0o6UKcbAjg2KbZyIz2KYSo iq8LwtbjJ3nh49mWbIahEtU8QQUaYJS29Q93G02fpX2S7MnIORQfXYncdwYM4SyfQA Kqp6mPZyNQRcTVKCkduTpuo9So1bPGJM2o31BTmzx3DxP4TwcY53FPZ+peZpQDxVgL hqR/wDPWxaLJQ== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:55 +0100 Subject: [PATCH v3 36/37] drm/bridge: tc358768: Convert to atomic helpers Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-36-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4540; i=mripard@kernel.org; h=from:subject:message-id; bh=JrG+Qes6Uhu9pUPHN00ADosGqM1HiFLiaRHuI+fbxOg=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWNV4/nebSdy4kb1Of6bc3sY6tlVe+1sM3J1yJtxud XogZKbWMZWFQZiTQVZMkeWJTNjp5e2LqxzsV/6AmcPKBDKEgYtTACaS1cJY7ybXHizy/yxHiHrr Up2iT3WVdZ9bdplFFp27bvny7NSWnY5zwtYVC2T6Fhybf0vwnPsZxobZjnGRk1N5D36xc7Ou3Sw 5b8ns5B1TX93f9Lsow/6n8f+YiQ6qu+Uydx7effD28bNvnvsBAA== X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D The tc358768 driver follows the drm_encoder->crtc pointer that is deprecated and shouldn't be used by atomic drivers. This was due to the fact that we did't have any other alternative to retrieve the CRTC pointer. Fortunately, the crtc pointer is now provided in the bridge state, so we can move to atomic callbacks and drop that deprecated pointer usage. Signed-off-by: Maxime Ripard Reviewed-by: Dmitry Baryshkov --- drivers/gpu/drm/bridge/tc358768.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/bridge/tc358768.c b/drivers/gpu/drm/bridge/tc3= 58768.c index 6b65ba8aed86012bc0f464bd5ee44325dae677c6..7358f412439e4f6e9d45806181a= b58ad5cb39a50 100644 --- a/drivers/gpu/drm/bridge/tc358768.c +++ b/drivers/gpu/drm/bridge/tc358768.c @@ -579,11 +579,12 @@ tc358768_bridge_mode_valid(struct drm_bridge *bridge, return MODE_CLOCK_RANGE; =20 return MODE_OK; } =20 -static void tc358768_bridge_disable(struct drm_bridge *bridge) +static void tc358768_bridge_atomic_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct tc358768_priv *priv =3D bridge_to_tc358768(bridge); int ret; =20 /* set FrmStop */ @@ -601,11 +602,12 @@ static void tc358768_bridge_disable(struct drm_bridge= *bridge) ret =3D tc358768_clear_error(priv); if (ret) dev_warn(priv->dev, "Software disable failed: %d\n", ret); } =20 -static void tc358768_bridge_post_disable(struct drm_bridge *bridge) +static void tc358768_bridge_atomic_post_disable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct tc358768_priv *priv =3D bridge_to_tc358768(bridge); =20 tc358768_hw_disable(priv); } @@ -681,17 +683,20 @@ static u32 tc358768_dsi_bytes_to_ns(struct tc358768_p= riv *priv, u32 val) u64 n =3D priv->dsiclk / 4 * priv->dsi_lanes; =20 return (u32)div_u64(m, n); } =20 -static void tc358768_bridge_pre_enable(struct drm_bridge *bridge) +static void tc358768_bridge_atomic_pre_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct tc358768_priv *priv =3D bridge_to_tc358768(bridge); struct mipi_dsi_device *dsi_dev =3D priv->output.dev; unsigned long mode_flags =3D dsi_dev->mode_flags; u32 val, val2, lptxcnt, hact, data_type; s32 raw_val; + struct drm_crtc_state *crtc_state; + struct drm_bridge_state *bridge_state; const struct drm_display_mode *mode; u32 hsbyteclk_ps, dsiclk_ps, ui_ps; u32 dsiclk, hsbyteclk; int ret, i; struct videomode vm; @@ -718,11 +723,13 @@ static void tc358768_bridge_pre_enable(struct drm_bri= dge *bridge) dev_err(dev, "Software reset failed: %d\n", ret); tc358768_hw_disable(priv); return; } =20 - mode =3D &bridge->encoder->crtc->state->adjusted_mode; + bridge_state =3D drm_atomic_get_new_bridge_state(state, bridge); + crtc_state =3D drm_atomic_get_new_crtc_state(state, bridge_state->crtc); + mode =3D &crtc_state->adjusted_mode; ret =3D tc358768_setup_pll(priv, mode); if (ret) { dev_err(dev, "PLL setup failed: %d\n", ret); tc358768_hw_disable(priv); return; @@ -1079,11 +1086,12 @@ static void tc358768_bridge_pre_enable(struct drm_b= ridge *bridge) ret =3D tc358768_clear_error(priv); if (ret) dev_err(dev, "Bridge pre_enable failed: %d\n", ret); } =20 -static void tc358768_bridge_enable(struct drm_bridge *bridge) +static void tc358768_bridge_atomic_enable(struct drm_bridge *bridge, + struct drm_atomic_state *state) { struct tc358768_priv *priv =3D bridge_to_tc358768(bridge); int ret; =20 if (!priv->enabled) { @@ -1159,14 +1167,14 @@ static bool tc358768_mode_fixup(struct drm_bridge *= bridge, =20 static const struct drm_bridge_funcs tc358768_bridge_funcs =3D { .attach =3D tc358768_bridge_attach, .mode_valid =3D tc358768_bridge_mode_valid, .mode_fixup =3D tc358768_mode_fixup, - .pre_enable =3D tc358768_bridge_pre_enable, - .enable =3D tc358768_bridge_enable, - .disable =3D tc358768_bridge_disable, - .post_disable =3D tc358768_bridge_post_disable, + .atomic_pre_enable =3D tc358768_bridge_atomic_pre_enable, + .atomic_enable =3D tc358768_bridge_atomic_enable, + .atomic_disable =3D tc358768_bridge_atomic_disable, + .atomic_post_disable =3D tc358768_bridge_atomic_post_disable, =20 .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, .atomic_get_input_bus_fmts =3D tc358768_atomic_get_input_bus_fmts, --=20 2.48.0 From nobody Thu Dec 18 20:14:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2A56F242924 for ; Thu, 13 Feb 2025 14:45:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457936; cv=none; b=C5mjN15flMFL1E4kj7INzV8d9GKVolRPgzKll6e6aqTsuA7MwwsjsX0ey3IpvCmG9UR3LaXHQwg1toPB00Pgv26VxRBipeTVRlX6EXkKIqkLxCnxFwu/r1gz+nJCTcQKNBNF3N6GlewRoKdYJ2AW5awgPl7PBhnNGTvj2MFjJ10= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739457936; c=relaxed/simple; bh=PK2zAFM2ZRvrvU2hnJ7CHHpNERjHdQrZwoJd3TX5Pjc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NWZlY2M+BGR5JoSM9MzKPfFthoWkoheIvCd1bLZU5EuGRHNsQCOpJxKYl8i4HanGlgnZziGyFz05/uG+EnAnYVVBWNEEBOBFDawJ14ueO8Lwc7uRiuEX1pdt3ULbNiN1ddk6TKPfMv5lIZY5NDozqoKpHLg4NSR7+f4aQXfwf1Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SXnbw9du; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="SXnbw9du" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A93C8C4CED1; Thu, 13 Feb 2025 14:45:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739457936; bh=PK2zAFM2ZRvrvU2hnJ7CHHpNERjHdQrZwoJd3TX5Pjc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=SXnbw9duCRYyLxZ+RTCGme6NXm7LFzYzpw/SBaKdWBm+9pycE1qG+ZfdqfXOtDzsc mHmIlD7JIjRcaa0TW5hUvxxlc0mq8dBII8hweGDXhafqArII/lRruXtT7fU2DeF3yL KOH5dj2h4hexKd93ALoLZybHJJTSfLgNpY3JYk7xsqA0QqDKKU93y/pCAsnePkd31U 1CmPC+JZeYoNih4pPT5snfQMOg+oRkHVm+O2g8uaHKvTDNUOKUM4dFg9nZNAFcwphJ QNTeF40iAhaAmeKzQJ0hhOtzjd6KkY7pYNqk+fILckEuPlavc3ACxcE2BGhg4b4nvx nd/SBAPh7NyUg== From: Maxime Ripard Date: Thu, 13 Feb 2025 15:43:56 +0100 Subject: [PATCH v3 37/37] drm/bridge: ti-sn65dsi86: Use bridge_state crtc pointer Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250213-bridge-connector-v3-37-e71598f49c8f@kernel.org> References: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> In-Reply-To: <20250213-bridge-connector-v3-0-e71598f49c8f@kernel.org> To: Maarten Lankhorst , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Douglas Anderson Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Maxime Ripard X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=9298; i=mripard@kernel.org; h=from:subject:message-id; bh=PK2zAFM2ZRvrvU2hnJ7CHHpNERjHdQrZwoJd3TX5Pjc=; b=owGbwMvMwCmsHn9OcpHtvjLG02pJDOnrWNU0NrprMvb7HdlrWp3LMS3e6TTnyTnuzr8ZoiUas 0OrDrd1TGVhEOZkkBVTZHkiE3Z6efviKgf7lT9g5rAygQxh4OIUgIlYcjI2rDzYN3VPhtRnNc5n lR+2dVp93JtS3Z3QZGZ9+GnO4f873kTtPfSQu6H4bXttzoTYR6HTGRteJ6RWP70xa6b3BYPigs2 xlo5HDSyjD9wLWfpom7i2mtj+nF6Tp2t2rQxJWx7Rf3VjmA0A X-Developer-Key: i=mripard@kernel.org; a=openpgp; fpr=BE5675C37E818C8B5764241C254BCFC56BF6CE8D The TI sn65dsi86 driver follows the drm_encoder->crtc pointer that is deprecated and shouldn't be used by atomic drivers. This was due to the fact that we did't have any other alternative to retrieve the CRTC pointer. Fortunately, the crtc pointer is now provided in the bridge state, so we can move to atomic callbacks and drop that deprecated pointer usage. Signed-off-by: Maxime Ripard Reviewed-by: Douglas Anderson Tested-by: Douglas Anderson --- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 58 +++++++++++++++++++++++--------= ---- 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge= /ti-sn65dsi86.c index 066a65eb03ede1cb5bcbc4511381adb9406f923b..99b24d2b3e295d1cdfa7b780312= d75d3b6fe4903 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -241,15 +241,28 @@ static void ti_sn65dsi86_write_u16(struct ti_sn65dsi8= 6 *pdata, u8 buf[2] =3D { val & 0xff, val >> 8 }; =20 regmap_bulk_write(pdata->regmap, reg, buf, ARRAY_SIZE(buf)); } =20 -static u32 ti_sn_bridge_get_dsi_freq(struct ti_sn65dsi86 *pdata) +static struct drm_display_mode * +get_new_adjusted_display_mode(struct drm_bridge *bridge, + struct drm_atomic_state *state) +{ + struct drm_bridge_state *bridge_state =3D + drm_atomic_get_new_bridge_state(state, bridge); + struct drm_crtc_state *crtc_state =3D + drm_atomic_get_new_crtc_state(state, bridge_state->crtc); + + return &crtc_state->adjusted_mode; +} + +static u32 ti_sn_bridge_get_dsi_freq(struct ti_sn65dsi86 *pdata, + struct drm_atomic_state *state) { u32 bit_rate_khz, clk_freq_khz; struct drm_display_mode *mode =3D - &pdata->bridge.encoder->crtc->state->adjusted_mode; + get_new_adjusted_display_mode(&pdata->bridge, state); =20 bit_rate_khz =3D mode->clock * mipi_dsi_pixel_format_to_bpp(pdata->dsi->format); clk_freq_khz =3D bit_rate_khz / (pdata->dsi->lanes * 2); =20 @@ -272,11 +285,12 @@ static const u32 ti_sn_bridge_dsiclk_lut[] =3D { 416000000, 486000000, 460800000, }; =20 -static void ti_sn_bridge_set_refclk_freq(struct ti_sn65dsi86 *pdata) +static void ti_sn_bridge_set_refclk_freq(struct ti_sn65dsi86 *pdata, + struct drm_atomic_state *state) { int i; u32 refclk_rate; const u32 *refclk_lut; size_t refclk_lut_size; @@ -285,11 +299,11 @@ static void ti_sn_bridge_set_refclk_freq(struct ti_sn= 65dsi86 *pdata) refclk_rate =3D clk_get_rate(pdata->refclk); refclk_lut =3D ti_sn_bridge_refclk_lut; refclk_lut_size =3D ARRAY_SIZE(ti_sn_bridge_refclk_lut); clk_prepare_enable(pdata->refclk); } else { - refclk_rate =3D ti_sn_bridge_get_dsi_freq(pdata) * 1000; + refclk_rate =3D ti_sn_bridge_get_dsi_freq(pdata, state) * 1000; refclk_lut =3D ti_sn_bridge_dsiclk_lut; refclk_lut_size =3D ARRAY_SIZE(ti_sn_bridge_dsiclk_lut); } =20 /* for i equals to refclk_lut_size means default frequency */ @@ -309,16 +323,17 @@ static void ti_sn_bridge_set_refclk_freq(struct ti_sn= 65dsi86 *pdata) * regardless of its actual sourcing. */ pdata->pwm_refclk_freq =3D ti_sn_bridge_refclk_lut[i]; } =20 -static void ti_sn65dsi86_enable_comms(struct ti_sn65dsi86 *pdata) +static void ti_sn65dsi86_enable_comms(struct ti_sn65dsi86 *pdata, + struct drm_atomic_state *state) { mutex_lock(&pdata->comms_mutex); =20 /* configure bridge ref_clk */ - ti_sn_bridge_set_refclk_freq(pdata); + ti_sn_bridge_set_refclk_freq(pdata, state); =20 /* * HPD on this bridge chip is a bit useless. This is an eDP bridge * so the HPD is an internal signal that's only there to signal that * the panel is done powering up. ...but the bridge chip debounces @@ -374,11 +389,11 @@ static int __maybe_unused ti_sn65dsi86_resume(struct = device *dev) * so we can do it in resume which lets us read the EDID before * pre_enable(). Without a reference clock we need the MIPI reference * clock so reading early doesn't work. */ if (pdata->refclk) - ti_sn65dsi86_enable_comms(pdata); + ti_sn65dsi86_enable_comms(pdata, NULL); =20 return ret; } =20 static int __maybe_unused ti_sn65dsi86_suspend(struct device *dev) @@ -820,16 +835,17 @@ static void ti_sn_bridge_atomic_disable(struct drm_br= idge *bridge, =20 /* disable video stream */ regmap_update_bits(pdata->regmap, SN_ENH_FRAME_REG, VSTREAM_ENABLE, 0); } =20 -static void ti_sn_bridge_set_dsi_rate(struct ti_sn65dsi86 *pdata) +static void ti_sn_bridge_set_dsi_rate(struct ti_sn65dsi86 *pdata, + struct drm_atomic_state *state) { unsigned int bit_rate_mhz, clk_freq_mhz; unsigned int val; struct drm_display_mode *mode =3D - &pdata->bridge.encoder->crtc->state->adjusted_mode; + get_new_adjusted_display_mode(&pdata->bridge, state); =20 /* set DSIA clk frequency */ bit_rate_mhz =3D (mode->clock / 1000) * mipi_dsi_pixel_format_to_bpp(pdata->dsi->format); clk_freq_mhz =3D bit_rate_mhz / (pdata->dsi->lanes * 2); @@ -855,16 +871,18 @@ static unsigned int ti_sn_bridge_get_bpp(struct drm_c= onnector *connector) */ static const unsigned int ti_sn_bridge_dp_rate_lut[] =3D { 0, 1620, 2160, 2430, 2700, 3240, 4320, 5400 }; =20 -static int ti_sn_bridge_calc_min_dp_rate_idx(struct ti_sn65dsi86 *pdata, u= nsigned int bpp) +static int ti_sn_bridge_calc_min_dp_rate_idx(struct ti_sn65dsi86 *pdata, + struct drm_atomic_state *state, + unsigned int bpp) { unsigned int bit_rate_khz, dp_rate_mhz; unsigned int i; struct drm_display_mode *mode =3D - &pdata->bridge.encoder->crtc->state->adjusted_mode; + get_new_adjusted_display_mode(&pdata->bridge, state); =20 /* Calculate minimum bit rate based on our pixel clock. */ bit_rate_khz =3D mode->clock * bpp; =20 /* Calculate minimum DP data rate, taking 80% as per DP spec */ @@ -959,14 +977,15 @@ static unsigned int ti_sn_bridge_read_valid_rates(str= uct ti_sn65dsi86 *pdata) } =20 return valid_rates; } =20 -static void ti_sn_bridge_set_video_timings(struct ti_sn65dsi86 *pdata) +static void ti_sn_bridge_set_video_timings(struct ti_sn65dsi86 *pdata, + struct drm_atomic_state *state) { struct drm_display_mode *mode =3D - &pdata->bridge.encoder->crtc->state->adjusted_mode; + get_new_adjusted_display_mode(&pdata->bridge, state); u8 hsync_polarity =3D 0, vsync_polarity =3D 0; =20 if (mode->flags & DRM_MODE_FLAG_NHSYNC) hsync_polarity =3D CHA_HSYNC_POLARITY; if (mode->flags & DRM_MODE_FLAG_NVSYNC) @@ -1075,21 +1094,22 @@ static int ti_sn_link_training(struct ti_sn65dsi86 = *pdata, int dp_rate_idx, =20 static void ti_sn_bridge_atomic_enable(struct drm_bridge *bridge, struct drm_atomic_state *state) { struct ti_sn65dsi86 *pdata =3D bridge_to_ti_sn65dsi86(bridge); + struct drm_bridge_state *bridge_state; struct drm_connector *connector; const char *last_err_str =3D "No supported DP rate"; unsigned int valid_rates; int dp_rate_idx; unsigned int val; int ret =3D -EINVAL; int max_dp_lanes; unsigned int bpp; =20 - connector =3D drm_atomic_get_new_connector_for_encoder(state, - bridge->encoder); + bridge_state =3D drm_atomic_get_new_bridge_state(state, bridge); + connector =3D bridge_state->connector; if (!connector) { dev_err_ratelimited(pdata->dev, "Could not get the connector\n"); return; } =20 @@ -1104,11 +1124,11 @@ static void ti_sn_bridge_atomic_enable(struct drm_b= ridge *bridge, regmap_write(pdata->regmap, SN_LN_ASSIGN_REG, pdata->ln_assign); regmap_update_bits(pdata->regmap, SN_ENH_FRAME_REG, LN_POLRS_MASK, pdata->ln_polrs << LN_POLRS_OFFSET); =20 /* set dsi clk frequency value */ - ti_sn_bridge_set_dsi_rate(pdata); + ti_sn_bridge_set_dsi_rate(pdata, state); =20 /* * The SN65DSI86 only supports ASSR Display Authentication method and * this method is enabled for eDP panels. An eDP panel must support this * authentication method. We need to enable this method in the eDP panel @@ -1139,11 +1159,11 @@ static void ti_sn_bridge_atomic_enable(struct drm_b= ridge *bridge, val); =20 valid_rates =3D ti_sn_bridge_read_valid_rates(pdata); =20 /* Train until we run out of rates */ - for (dp_rate_idx =3D ti_sn_bridge_calc_min_dp_rate_idx(pdata, bpp); + for (dp_rate_idx =3D ti_sn_bridge_calc_min_dp_rate_idx(pdata, state, bpp); dp_rate_idx < ARRAY_SIZE(ti_sn_bridge_dp_rate_lut); dp_rate_idx++) { if (!(valid_rates & BIT(dp_rate_idx))) continue; =20 @@ -1155,11 +1175,11 @@ static void ti_sn_bridge_atomic_enable(struct drm_b= ridge *bridge, DRM_DEV_ERROR(pdata->dev, "%s (%d)\n", last_err_str, ret); return; } =20 /* config video parameters */ - ti_sn_bridge_set_video_timings(pdata); + ti_sn_bridge_set_video_timings(pdata, state); =20 /* enable video stream */ regmap_update_bits(pdata->regmap, SN_ENH_FRAME_REG, VSTREAM_ENABLE, VSTREAM_ENABLE); } @@ -1170,11 +1190,11 @@ static void ti_sn_bridge_atomic_pre_enable(struct d= rm_bridge *bridge, struct ti_sn65dsi86 *pdata =3D bridge_to_ti_sn65dsi86(bridge); =20 pm_runtime_get_sync(pdata->dev); =20 if (!pdata->refclk) - ti_sn65dsi86_enable_comms(pdata); + ti_sn65dsi86_enable_comms(pdata, state); =20 /* td7: min 100 us after enable before DSI data */ usleep_range(100, 110); } =20 --=20 2.48.0