The atomic variants of enable/disable in drm_bridge_funcs are the
preferred operations - introduce these.

The ps8640 driver used the non-atomic variants of the 
drm_bridge_chain_pre_enable/
drm_bridge_chain_post_disable - convert these to the atomic variants.

v2:
  - Init state operations in drm_bridge_funcs (Laurent)

Signed-off-by: Sam Ravnborg <s...@ravnborg.org>
Reviewed-by: Maxime Ripard <mrip...@kernel.org>
Cc: Jitao Shi <jitao....@mediatek.com>
Cc: Enric Balletbo i Serra <enric.balle...@collabora.com>
Cc: Philip Chen <philipc...@chromium.org>
Cc: Andrzej Hajda <a.ha...@samsung.com>
Cc: Neil Armstrong <narmstr...@baylibre.com>
Cc: Robert Foss <robert.f...@linaro.org>
Cc: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
Cc: Jonas Karlman <jo...@kwiboo.se>
Cc: Jernej Skrabec <jernej.skra...@gmail.com>
---
 drivers/gpu/drm/bridge/parade-ps8640.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c 
b/drivers/gpu/drm/bridge/parade-ps8640.c
index 31e88cb39f8a..bb8076fb8625 100644
--- a/drivers/gpu/drm/bridge/parade-ps8640.c
+++ b/drivers/gpu/drm/bridge/parade-ps8640.c
@@ -15,6 +15,7 @@
 
 #include <drm/display/drm_dp_aux_bus.h>
 #include <drm/display/drm_dp_helper.h>
+#include <drm/drm_atomic_state_helper.h>
 #include <drm/drm_bridge.h>
 #include <drm/drm_edid.h>
 #include <drm/drm_mipi_dsi.h>
@@ -409,7 +410,8 @@ static const struct dev_pm_ops ps8640_pm_ops = {
                                pm_runtime_force_resume)
 };
 
-static void ps8640_pre_enable(struct drm_bridge *bridge)
+static void ps8640_atomic_pre_enable(struct drm_bridge *bridge,
+                                    struct drm_bridge_state *old_bridge_state)
 {
        struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
        struct regmap *map = ps_bridge->regmap[PAGE2_TOP_CNTL];
@@ -443,7 +445,8 @@ static void ps8640_pre_enable(struct drm_bridge *bridge)
        ps_bridge->pre_enabled = true;
 }
 
-static void ps8640_post_disable(struct drm_bridge *bridge)
+static void ps8640_atomic_post_disable(struct drm_bridge *bridge,
+                                      struct drm_bridge_state 
*old_bridge_state)
 {
        struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
 
@@ -521,7 +524,7 @@ static struct edid *ps8640_bridge_get_edid(struct 
drm_bridge *bridge,
         * EDID, for this chip, we need to do a full poweron, otherwise it will
         * fail.
         */
-       drm_bridge_chain_pre_enable(bridge);
+       drm_atomic_bridge_chain_pre_enable(bridge, connector->state->state);
 
        edid = drm_get_edid(connector,
                            ps_bridge->page[PAGE0_DP_CNTL]->adapter);
@@ -531,7 +534,7 @@ static struct edid *ps8640_bridge_get_edid(struct 
drm_bridge *bridge,
         * before, return the chip to its original power state.
         */
        if (poweroff)
-               drm_bridge_chain_post_disable(bridge);
+               drm_atomic_bridge_chain_post_disable(bridge, 
connector->state->state);
 
        return edid;
 }
@@ -546,8 +549,11 @@ static const struct drm_bridge_funcs ps8640_bridge_funcs = 
{
        .attach = ps8640_bridge_attach,
        .detach = ps8640_bridge_detach,
        .get_edid = ps8640_bridge_get_edid,
-       .post_disable = ps8640_post_disable,
-       .pre_enable = ps8640_pre_enable,
+       .atomic_post_disable = ps8640_atomic_post_disable,
+       .atomic_pre_enable = ps8640_atomic_pre_enable,
+       .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
+       .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
+       .atomic_reset = drm_atomic_helper_bridge_reset,
 };
 
 static int ps8640_bridge_get_dsi_resources(struct device *dev, struct ps8640 
*ps_bridge)
-- 
2.34.1

Reply via email to