drm/bridge: use atomic enable/disable callbacks for panel bridge
authorVinod Polimera <quic_vpolimer@quicinc.com>
Thu, 2 Mar 2023 16:33:05 +0000 (22:03 +0530)
committerDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Mon, 13 Mar 2023 01:43:49 +0000 (04:43 +0300)
Use atomic variants for panel bridge callback functions such that
certain states like self-refresh can be accessed as part of
enable/disable sequence.

Signed-off-by: Sankeerth Billakanti <quic_sbillaka@quicinc.com>
Signed-off-by: Vinod Polimera <quic_vpolimer@quicinc.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Patchwork: https://patchwork.freedesktop.org/patch/524720/
Link: https://lore.kernel.org/r/1677774797-31063-3-git-send-email-quic_vpolimer@quicinc.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drivers/gpu/drm/bridge/panel.c

index 1708098fba6d9adc6f3e20458a22b21e111f38de..5c4b3f3bf0a537892412c2f2143ed401b3d653bd 100644 (file)
@@ -109,28 +109,32 @@ static void panel_bridge_detach(struct drm_bridge *bridge)
                drm_connector_cleanup(connector);
 }
 
-static void panel_bridge_pre_enable(struct drm_bridge *bridge)
+static void panel_bridge_atomic_pre_enable(struct drm_bridge *bridge,
+                               struct drm_bridge_state *old_bridge_state)
 {
        struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge);
 
        drm_panel_prepare(panel_bridge->panel);
 }
 
-static void panel_bridge_enable(struct drm_bridge *bridge)
+static void panel_bridge_atomic_enable(struct drm_bridge *bridge,
+                               struct drm_bridge_state *old_bridge_state)
 {
        struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge);
 
        drm_panel_enable(panel_bridge->panel);
 }
 
-static void panel_bridge_disable(struct drm_bridge *bridge)
+static void panel_bridge_atomic_disable(struct drm_bridge *bridge,
+                               struct drm_bridge_state *old_bridge_state)
 {
        struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge);
 
        drm_panel_disable(panel_bridge->panel);
 }
 
-static void panel_bridge_post_disable(struct drm_bridge *bridge)
+static void panel_bridge_atomic_post_disable(struct drm_bridge *bridge,
+                               struct drm_bridge_state *old_bridge_state)
 {
        struct panel_bridge *panel_bridge = drm_bridge_to_panel_bridge(bridge);
 
@@ -159,10 +163,10 @@ static void panel_bridge_debugfs_init(struct drm_bridge *bridge,
 static const struct drm_bridge_funcs panel_bridge_bridge_funcs = {
        .attach = panel_bridge_attach,
        .detach = panel_bridge_detach,
-       .pre_enable = panel_bridge_pre_enable,
-       .enable = panel_bridge_enable,
-       .disable = panel_bridge_disable,
-       .post_disable = panel_bridge_post_disable,
+       .atomic_pre_enable = panel_bridge_atomic_pre_enable,
+       .atomic_enable = panel_bridge_atomic_enable,
+       .atomic_disable = panel_bridge_atomic_disable,
+       .atomic_post_disable = panel_bridge_atomic_post_disable,
        .get_modes = panel_bridge_get_modes,
        .atomic_reset = drm_atomic_helper_bridge_reset,
        .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,