]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/bridge: Pass full state to atomic_disable
authorMaxime Ripard <mripard@kernel.org>
Thu, 13 Feb 2025 14:43:23 +0000 (15:43 +0100)
committerMaxime Ripard <mripard@kernel.org>
Wed, 19 Feb 2025 15:59:12 +0000 (16:59 +0100)
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 <dmitry.baryshkov@linaro.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Tested-by: Douglas Anderson <dianders@chromium.org>
Link: https://lore.kernel.org/r/20250213-bridge-connector-v3-4-e71598f49c8f@kernel.org
Signed-off-by: Maxime Ripard <mripard@kernel.org>
46 files changed:
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
drivers/gpu/drm/bridge/analogix/anx7625.c
drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c
drivers/gpu/drm/bridge/fsl-ldb.c
drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c
drivers/gpu/drm/bridge/imx/imx8qm-ldb.c
drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c
drivers/gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c
drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c
drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c
drivers/gpu/drm/bridge/ite-it6263.c
drivers/gpu/drm/bridge/ite-it6505.c
drivers/gpu/drm/bridge/ite-it66121.c
drivers/gpu/drm/bridge/lontium-lt9211.c
drivers/gpu/drm/bridge/lontium-lt9611.c
drivers/gpu/drm/bridge/nwl-dsi.c
drivers/gpu/drm/bridge/panel.c
drivers/gpu/drm/bridge/samsung-dsim.c
drivers/gpu/drm/bridge/sii902x.c
drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c
drivers/gpu/drm/bridge/tc358767.c
drivers/gpu/drm/bridge/ti-sn65dsi83.c
drivers/gpu/drm/bridge/ti-sn65dsi86.c
drivers/gpu/drm/bridge/ti-tdp158.c
drivers/gpu/drm/drm_bridge.c
drivers/gpu/drm/ingenic/ingenic-drm-drv.c
drivers/gpu/drm/mediatek/mtk_dp.c
drivers/gpu/drm/mediatek/mtk_dsi.c
drivers/gpu/drm/mediatek/mtk_hdmi.c
drivers/gpu/drm/meson/meson_encoder_cvbs.c
drivers/gpu/drm/meson/meson_encoder_dsi.c
drivers/gpu/drm/meson/meson_encoder_hdmi.c
drivers/gpu/drm/msm/dp/dp_display.c
drivers/gpu/drm/msm/dp/dp_drm.c
drivers/gpu/drm/msm/dp/dp_drm.h
drivers/gpu/drm/omapdrm/dss/hdmi4.c
drivers/gpu/drm/omapdrm/dss/hdmi5.c
drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c
drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c
drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c
drivers/gpu/drm/stm/lvds.c
drivers/gpu/drm/vc4/vc4_dsi.c
drivers/gpu/drm/xlnx/zynqmp_dp.c
include/drm/drm_bridge.h

index 3d22685d33b51f59115b289b70c990d585aa5230..050dae338ffee36a8d6ee6fcce69f51486a957fe 100644 (file)
@@ -919,7 +919,7 @@ static void adv7511_bridge_atomic_enable(struct drm_bridge *bridge,
 }
 
 static void adv7511_bridge_atomic_disable(struct drm_bridge *bridge,
-                                         struct drm_bridge_state *bridge_state)
+                                         struct drm_atomic_state *state)
 {
        struct adv7511 *adv = bridge_to_adv7511(bridge);
 
index 7fc0918c086d40604825681de5a0450b4bb08e71..78391682cca9c48ddad2608205718bf962dc06e3 100644 (file)
@@ -1323,11 +1323,9 @@ static void analogix_dp_bridge_disable(struct drm_bridge *bridge)
        dp->dpms_mode = DRM_MODE_DPMS_OFF;
 }
 
-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 = old_bridge_state->base.state;
        struct analogix_dp_device *dp = bridge->driver_private;
        struct drm_crtc *old_crtc, *new_crtc;
        struct drm_crtc_state *old_crtc_state = NULL;
index 79f78dbe96351ef5fb746dc6731176a8d2989376..0b97b66de577421b0e68e748d0075f674c71fbf1 100644 (file)
@@ -2419,7 +2419,7 @@ static void anx7625_bridge_atomic_enable(struct drm_bridge *bridge,
 }
 
 static void anx7625_bridge_atomic_disable(struct drm_bridge *bridge,
-                                         struct drm_bridge_state *old)
+                                         struct drm_atomic_state *state)
 {
        struct anx7625_data *ctx = bridge_to_anx7625(bridge);
        struct device *dev = ctx->dev;
index edc5347551e5c0c93265ac61cb6cb764c2a3db6f..81fad14c2cd598045d989c7d51f292bafb92c144 100644 (file)
@@ -2069,7 +2069,7 @@ out:
 }
 
 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 = bridge_to_mhdp(bridge);
        u32 resp;
index 0ba8bbc1afaec9cd7ae420568f98d21a31759614..26ae1ab5237f81ebd6c56075a18136f4a5b56ec9 100644 (file)
@@ -223,7 +223,7 @@ static void fsl_ldb_atomic_enable(struct drm_bridge *bridge,
 }
 
 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 = to_fsl_ldb(bridge);
 
index 9ee645489ea30a0478b114457aa0768dd7f2952e..a17433a7c75530668662ed8dd1526b44f9a32f32 100644 (file)
@@ -89,7 +89,7 @@ static void imx8mp_hdmi_pvi_bridge_enable(struct drm_bridge *bridge,
 }
 
 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 = to_imx8mp_hdmi_pvi(bridge);
 
index fe2313aa2051c9d36ec0edbbd27d103229da6a9b..524aac751359f5cd377807508cbeeb6a597529e1 100644 (file)
@@ -246,9 +246,8 @@ static void imx8qm_ldb_bridge_atomic_enable(struct drm_bridge *bridge,
        ldb_bridge_enable_helper(bridge);
 }
 
-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 = bridge->driver_private;
        struct ldb *ldb = ldb_ch->ldb;
index f3f5b7b810f682f9973413ad1d65c9764437e94a..3cb484773ddf95695111d4d64c1eba4fbb363dc3 100644 (file)
@@ -253,9 +253,8 @@ static void imx8qxp_ldb_bridge_atomic_enable(struct drm_bridge *bridge,
                companion->funcs->atomic_enable(companion, state);
 }
 
-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 = bridge->driver_private;
        struct ldb *ldb = ldb_ch->ldb;
@@ -281,7 +280,7 @@ imx8qxp_ldb_bridge_atomic_disable(struct drm_bridge *bridge,
        clk_disable_unprepare(imx8qxp_ldb->clk_pixel);
 
        if (is_split && companion)
-               companion->funcs->atomic_disable(companion, old_bridge_state);
+               companion->funcs->atomic_disable(companion, state);
 
        ret = pm_runtime_put(dev);
        if (ret < 0)
index 1812bd106261b802658dfbd9d52ecab7de1036e2..1d9529dc7f2a93e7547ae1f4c6193598a5574135 100644 (file)
@@ -176,9 +176,8 @@ imx8qxp_pc_bridge_mode_set(struct drm_bridge *bridge,
        clk_disable_unprepare(pc->clk_apb);
 }
 
-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 = bridge->driver_private;
        struct imx8qxp_pc *pc = ch->pc;
index 9b79e5dbcaca7f2b24a4183bcea4d6aac4464165..cd6818db0fd332cac03241917bbb107b7261097c 100644 (file)
@@ -163,9 +163,8 @@ static void imx8qxp_pixel_link_bridge_atomic_enable(struct drm_bridge *bridge,
        imx8qxp_pixel_link_enable_sync(pl);
 }
 
-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 *bridge,
+                                                    struct drm_atomic_state *state)
 {
        struct imx8qxp_pixel_link *pl = bridge->driver_private;
 
index 65cf3a6c8ec692488aaf421946c6b2180fcebcc1..49dd4f96d52c966d9a038b0b04007631d0837f4d 100644 (file)
@@ -122,9 +122,8 @@ imx8qxp_pxl2dpi_bridge_mode_set(struct drm_bridge *bridge,
        }
 }
 
-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 *bridge,
+                                                 struct drm_atomic_state *state)
 {
        struct imx8qxp_pxl2dpi *p2d = bridge->driver_private;
        int ret;
@@ -134,8 +133,7 @@ imx8qxp_pxl2dpi_bridge_atomic_disable(struct drm_bridge *bridge,
                DRM_DEV_ERROR(p2d->dev, "failed to put runtime PM: %d\n", ret);
 
        if (p2d->companion)
-               p2d->companion->funcs->atomic_disable(p2d->companion,
-                                                       old_bridge_state);
+               p2d->companion->funcs->atomic_disable(p2d->companion, state);
 }
 
 static const u32 imx8qxp_pxl2dpi_bus_output_fmts[] = {
index 0cf624a8495c00c15158aed6e0ec7227bcad529d..21152a1c28f7f5e326794488f473b030219a2f65 100644 (file)
@@ -569,9 +569,8 @@ static int it6263_read_edid(void *data, u8 *buf, unsigned int block, size_t len)
        return 0;
 }
 
-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 = bridge_to_it6263(bridge);
 
index 159fdce3512978daae28d652d3d91e4968d4a729..d8265a205c0dc17e38c426e225e33c361a41a256 100644 (file)
@@ -3238,7 +3238,7 @@ static void it6505_bridge_atomic_enable(struct drm_bridge *bridge,
 }
 
 static void it6505_bridge_atomic_disable(struct drm_bridge *bridge,
-                                        struct drm_bridge_state *old_state)
+                                        struct drm_atomic_state *state)
 {
        struct it6505 *it6505 = bridge_to_it6505(bridge);
        struct device *dev = it6505->dev;
index 4b784ac04b3a0284c4ff4b62a390ade75d686c21..b9f90f32145de0f17eadfdf0efbe95a2b5ca026d 100644 (file)
@@ -731,7 +731,7 @@ static void it66121_bridge_enable(struct drm_bridge *bridge,
 }
 
 static void it66121_bridge_disable(struct drm_bridge *bridge,
-                                  struct drm_bridge_state *bridge_state)
+                                  struct drm_atomic_state *state)
 {
        struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge);
 
index 65d5cdfe0d32cf9dca6582a60225db335c80172c..0fc5ea18fe6a8d0c1578dcae960d78cc33f4fb6d 100644 (file)
@@ -552,7 +552,7 @@ static void lt9211_atomic_enable(struct drm_bridge *bridge,
 }
 
 static void lt9211_atomic_disable(struct drm_bridge *bridge,
-                                 struct drm_bridge_state *old_bridge_state)
+                                 struct drm_atomic_state *state)
 {
        struct lt9211 *ctx = bridge_to_lt9211(bridge);
        int ret;
index 521cce42d0332564dfa1bb1cb06012711198022e..bacc8d373fe7c8af1370afef2588d9c41fd7f5f3 100644 (file)
@@ -687,9 +687,8 @@ static void lt9611_bridge_atomic_enable(struct drm_bridge *bridge,
        regmap_write(lt9611->regmap, 0x8130, 0xea);
 }
 
-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 = bridge_to_lt9611(bridge);
        int ret;
index 516ef0409b5db1e91fe488f2a84b0f19064ffeba..d04c62a0cb9f8ab6bbc1e3f6e49c3a5ba9cf9716 100644 (file)
@@ -736,9 +736,8 @@ static int nwl_dsi_disable(struct nwl_dsi *dsi)
        return 0;
 }
 
-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 = bridge_to_dsi(bridge);
        int ret;
index 08b1704b0ab23de875076bdc2faeba9a41ee504a..19b08303ed8b3cc1f06c4b4964d00da1dac0791f 100644 (file)
@@ -147,10 +147,9 @@ static void panel_bridge_atomic_enable(struct drm_bridge *bridge,
 }
 
 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 = drm_bridge_to_panel_bridge(bridge);
-       struct drm_atomic_state *atomic_state = old_bridge_state->base.state;
        struct drm_encoder *encoder = bridge->encoder;
        struct drm_crtc *crtc;
        struct drm_crtc_state *new_crtc_state;
index ddf55fad2815125e70c2c7029d26e7ba036eb9ad..4a75a49110bca0e4ce71fbb81081fbffd7d72465 100644 (file)
@@ -1496,7 +1496,7 @@ static void samsung_dsim_atomic_enable(struct drm_bridge *bridge,
 }
 
 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 = bridge_to_dsi(bridge);
 
index ae53d94a39317b4f753d4d59184f7ee5858e44d9..2100a687096e50c83a7c554e6d21b3c638ef713b 100644 (file)
@@ -325,7 +325,7 @@ static const struct drm_connector_helper_funcs sii902x_connector_helper_funcs =
 };
 
 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 = bridge_to_sii902x(bridge);
 
index e480842016232d36014a849d6b1cc0f29b409cc7..1d39015f1533e7957fb8bcc57995125dddbd4fd3 100644 (file)
@@ -395,7 +395,7 @@ static void dw_hdmi_qp_bridge_atomic_enable(struct drm_bridge *bridge,
 }
 
 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 = bridge->driver_private;
 
index b92e1fa9f3526c3d81b50cf95f4fc4d447907975..0890add5f7070f13fefad923526e92f516f06764 100644 (file)
@@ -2945,7 +2945,7 @@ static void dw_hdmi_bridge_mode_set(struct drm_bridge *bridge,
 }
 
 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 = bridge->driver_private;
 
index a1f72e61b9444cc79bf1bb7bed552c302bc30873..39e2d3a7a27d2603bb847d55c4812fb170389ba0 100644 (file)
@@ -1563,9 +1563,8 @@ static void tc_dpi_bridge_atomic_enable(struct drm_bridge *bridge,
        }
 }
 
-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 = bridge_to_tc(bridge);
        int ret;
@@ -1601,9 +1600,8 @@ static void tc_edp_bridge_atomic_enable(struct drm_bridge *bridge,
        }
 }
 
-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 = bridge_to_tc(bridge);
        int ret;
index 3ea3165b6e051c0c468d491d422c51604bc1e68e..54ad462d17ef7cdfce5c7a9f8242ee479e19903d 100644 (file)
@@ -665,7 +665,7 @@ static void sn65dsi83_atomic_enable(struct drm_bridge *bridge,
 }
 
 static void sn65dsi83_atomic_disable(struct drm_bridge *bridge,
-                                    struct drm_bridge_state *old_bridge_state)
+                                    struct drm_atomic_state *state)
 {
        struct sn65dsi83 *ctx = bridge_to_sn65dsi83(bridge);
        int ret;
index c3ad7e326ae809eda8e61c905d37a85ff2137487..38f30aad7d9b72083272702c8bda73e61dbe0267 100644 (file)
@@ -813,7 +813,7 @@ ti_sn_bridge_mode_valid(struct drm_bridge *bridge,
 }
 
 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 = bridge_to_ti_sn65dsi86(bridge);
 
index c0308f997445f52f7f9c680eb67dde55edcb1049..22316382451fa3a55e1b3977982bd306b52b5888 100644 (file)
@@ -35,7 +35,8 @@ static void tdp158_enable(struct drm_bridge *bridge,
        gpiod_set_value_cansleep(tdp158->enable, 1);
 }
 
-static void tdp158_disable(struct drm_bridge *bridge, struct drm_bridge_state *prev)
+static void tdp158_disable(struct drm_bridge *bridge,
+                          struct drm_atomic_state *state)
 {
        struct tdp158 *tdp158 = bridge->driver_private;
 
index 7d9d176347f37569dddeb8fc0dbdcdebe4445a60..198083cacfc0924f1fd3bcf7a6a690f4e5779de0 100644 (file)
@@ -571,15 +571,7 @@ void drm_atomic_bridge_chain_disable(struct drm_bridge *bridge,
        encoder = 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 =
-                               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);
                }
index e52d8c4f0b7e93d6be88e3b3897e711a12bc70c1..20b93fff023995062096941ae571756185688387 100644 (file)
@@ -260,7 +260,7 @@ static void ingenic_drm_crtc_atomic_enable(struct drm_crtc *crtc,
 }
 
 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 = drm_device_get_priv(bridge->dev);
        unsigned int var;
index bd67423556b789be74fe648fd5ca6141a8ab9fb8..3d4648d2e15f1a1a3c6ae596e1a35cd654fcc35c 100644 (file)
@@ -2400,7 +2400,7 @@ power_off_aux:
 }
 
 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 = mtk_dp_from_bridge(bridge);
 
index be21f8e643172b5fe07ce640af2c33f060a3bb24..661db80b2377fce4ea09a46c4ad19a58fab3fe7d 100644 (file)
@@ -826,7 +826,7 @@ static void mtk_dsi_bridge_mode_set(struct drm_bridge *bridge,
 }
 
 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 = bridge_to_dsi(bridge);
 
index a1904480fff8dcc0b4f3da883b9abe3238653253..602c9d348a7d3ec4f0ba13386508c531772b6e14 100644 (file)
@@ -1309,7 +1309,7 @@ static bool mtk_hdmi_bridge_mode_fixup(struct drm_bridge *bridge,
 }
 
 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 = hdmi_ctx_from_bridge(bridge);
 
index b535e74345f02079e22a18c8d991adeb03c5e41a..e79f7c3ce32efa8e5fe7afe274fe991ac363b734 100644 (file)
@@ -190,7 +190,7 @@ static void meson_encoder_cvbs_atomic_enable(struct drm_bridge *bridge,
 }
 
 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 =
                                        bridge_to_meson_encoder_cvbs(bridge);
index 140b3604dba10ac2aabadae065c2d9de8169ed03..fe204437bd6576a258dc11319e2b905f170a24a1 100644 (file)
@@ -79,7 +79,7 @@ static void meson_encoder_dsi_atomic_enable(struct drm_bridge *bridge,
 }
 
 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 =
                                        bridge_to_meson_encoder_dsi(bridge);
index 7544c4e6af635b7e612a1a970987e0e15e054cf1..6d1c9262a2cfb7b08a68efb86821bf5ecf8c0941 100644 (file)
@@ -249,7 +249,7 @@ static void meson_encoder_hdmi_atomic_enable(struct drm_bridge *bridge,
 }
 
 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 = bridge_to_meson_encoder_hdmi(bridge);
        struct meson_drm *priv = encoder_hdmi->priv;
index ffb9c80543ad2306b2148b6f05a803d7634334d5..77948f0514de572caa9bc776a3d0fc178bf3bd51 100644 (file)
@@ -1552,7 +1552,7 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
 }
 
 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 = to_dp_bridge(drm_bridge);
        struct msm_dp *dp = msm_dp_bridge->msm_dp_display;
index eae8e849edc54da1faa9c557757873561fa223a1..84ecec79467dcb1d3c35abf422b1d6b7caf8d0ee 100644 (file)
@@ -166,9 +166,8 @@ static void msm_edp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
 }
 
 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 = old_bridge_state->base.state;
        struct drm_crtc *crtc;
        struct drm_crtc_state *new_crtc_state = NULL, *old_crtc_state = NULL;
        struct msm_dp_bridge *msm_dp_bridge = to_dp_bridge(drm_bridge);
@@ -207,7 +206,7 @@ static void msm_edp_bridge_atomic_disable(struct drm_bridge *drm_bridge,
        }
 
 out:
-       msm_dp_bridge_atomic_disable(drm_bridge, old_bridge_state);
+       msm_dp_bridge_atomic_disable(drm_bridge, atomic_state);
 }
 
 static void msm_edp_bridge_atomic_post_disable(struct drm_bridge *drm_bridge,
index d54253ecbbff85f06112a1f62981c724774c237a..faf31a9da752c9ea65e80c8c95896fef39ffa8a8 100644 (file)
@@ -28,7 +28,7 @@ int msm_dp_bridge_init(struct msm_dp *msm_dp_display, struct 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_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,
index c43f4a5218d1227a7431cccb015530e1b1543329..e1ac447221ee5ae5ee50637acfc8a30a8f111850 100644 (file)
@@ -409,7 +409,7 @@ done:
 }
 
 static void hdmi4_bridge_disable(struct drm_bridge *bridge,
-                                struct drm_bridge_state *bridge_state)
+                                struct drm_atomic_state *state)
 {
        struct omap_hdmi *hdmi = drm_bridge_to_hdmi(bridge);
        unsigned long flags;
index 49a4d31243e7dbb4ad6a9136e16032fd15dbe607..fa9904e4c218235bafa87be600680b3e5d5e2ea5 100644 (file)
@@ -407,7 +407,7 @@ done:
 }
 
 static void hdmi5_bridge_disable(struct drm_bridge *bridge,
-                                struct drm_bridge_state *bridge_state)
+                                struct drm_atomic_state *state)
 {
        struct omap_hdmi *hdmi = drm_bridge_to_hdmi(bridge);
        unsigned long flags;
index 86e112fe1fc44603585d916fc70c0a3bd7ab1313..380a855b832af9c09652ce39a78f974b63d949bb 100644 (file)
@@ -595,7 +595,7 @@ static void rcar_lvds_atomic_enable(struct drm_bridge *bridge,
 }
 
 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 = bridge_to_rcar_lvds(bridge);
 
index 4c8f63bd106e12b62e6c5006a439305f979beb64..d1e626068065c559a708772d3bbf16efe166ff59 100644 (file)
@@ -816,7 +816,7 @@ static void rcar_mipi_dsi_atomic_enable(struct drm_bridge *bridge,
 }
 
 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 = bridge_to_rcar_mipi_dsi(bridge);
 
index 1eafb637092b1731a606ed50d7cc8f89a7964606..4550c6d847962f06886f2b7645bae73646f1ffb6 100644 (file)
@@ -567,7 +567,7 @@ err_stop:
 }
 
 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 = bridge_to_rzg2l_mipi_dsi(bridge);
 
index 7ec44f2264038c3642c40202bc014c438ecee104..4613e8e3b8fddc4455be0e3f81e0e811418746a0 100644 (file)
@@ -1016,7 +1016,7 @@ static void lvds_atomic_enable(struct drm_bridge *bridge,
 }
 
 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 = bridge_to_stm_lvds(bridge);
 
index 59d881ddf0eebf1265875c3cad7cce45990cde4d..60b300db52d24af6a04131c99cfdc05b6e9509aa 100644 (file)
@@ -800,7 +800,7 @@ dsi_esc_timing(u32 ns)
 }
 
 static void vc4_dsi_bridge_disable(struct drm_bridge *bridge,
-                                  struct drm_bridge_state *state)
+                                  struct drm_atomic_state *state)
 {
        struct vc4_dsi *dsi = bridge_to_vc4_dsi(bridge);
        u32 disp0_ctrl;
index 576683dfcae044870feeb9ab81282003f0d54883..a6a4a871f197652f589e569b9b8c95f79fa5a2a1 100644 (file)
@@ -1625,8 +1625,10 @@ static void zynqmp_dp_bridge_atomic_enable(struct drm_bridge *bridge,
 }
 
 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 = drm_atomic_get_old_bridge_state(state,
+                                                                                   bridge);
        struct zynqmp_dp *dp = bridge_to_dp(bridge);
 
        mutex_lock(&dp->lock);
index 4c5e231230301f08ed568edbb4b6b2020234c012..087752226bf9c25b47838be265ad2e4c3070bc7e 100644 (file)
@@ -342,7 +342,7 @@ struct drm_bridge_funcs {
         * 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);
 
        /**
         * @atomic_post_disable: