The tda998x bridge still uses the deprecated non-atomic bridge
callbacks.

Switch to their atomic counterparts, adding the bridge state
handlers if not already present.

Generated by the following Coccinelle script:

@ is_bridge @
identifier funcs;
@@

 struct drm_bridge_funcs funcs = {
        ...,
 };

@ has_create_state depends on is_bridge @
identifier funcs, f;
@@

struct drm_bridge_funcs funcs = {
  ...,
  .atomic_create_state = f,
  ...,
};

@ update_struct depends on (is_bridge && !has_create_state) @
identifier is_bridge.funcs;
identifier f;
@@

 struct drm_bridge_funcs funcs = {
+       .atomic_create_state = drm_atomic_helper_bridge_create_state,
+       .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
+       .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
        ...,
 };

@ update_pre_enable_struct depends on (is_bridge && !has_create_state) @
identifier is_bridge.funcs;
identifier f;
@@

 struct drm_bridge_funcs funcs = {
        ...,
-       .pre_enable = f,
+       .atomic_pre_enable = f,
        ...,
 };

@ update_pre_enable_impl depends on update_pre_enable_struct @
identifier update_pre_enable_struct.f;
identifier b;
@@

-void f(struct drm_bridge *b)
+void f(struct drm_bridge *b, struct drm_atomic_commit *commit)
 {
        ...
 }

@ update_enable_struct depends on (is_bridge && !has_create_state) @
identifier is_bridge.funcs;
identifier f;
@@

 struct drm_bridge_funcs funcs = {
        ...,
-       .enable = f,
+       .atomic_enable = f,
        ...,
 };

@ update_enable_impl depends on update_enable_struct @
identifier update_enable_struct.f;
identifier b;
@@

-void f(struct drm_bridge *b)
+void f(struct drm_bridge *b, struct drm_atomic_commit *commit)
 {
        ...
 }

@ update_disable_struct depends on (is_bridge && !has_create_state) @
identifier is_bridge.funcs;
identifier f;
@@

 struct drm_bridge_funcs funcs = {
        ...,
-       .disable = f,
+       .atomic_disable = f,
        ...,
 };

@ update_disable_impl depends on update_disable_struct @
identifier update_disable_struct.f;
identifier b;
@@

-void f(struct drm_bridge *b)
+void f(struct drm_bridge *b, struct drm_atomic_commit *commit)
 {
        ...
 }

@ update_post_disable_struct depends on (is_bridge && !has_create_state) @
identifier is_bridge.funcs;
identifier f;
@@

 struct drm_bridge_funcs funcs = {
        ...,
-       .post_disable = f,
+       .atomic_post_disable = f,
        ...,
 };

@ update_post_disable_impl depends on update_post_disable_struct @
identifier update_post_disable_struct.f;
identifier b;
@@

-void f(struct drm_bridge *b)
+void f(struct drm_bridge *b, struct drm_atomic_commit *commit)
 {
        ...
 }

Signed-off-by: Maxime Ripard <[email protected]>

---
To: Russell King <[email protected]>
---
 drivers/gpu/drm/bridge/tda998x_drv.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/bridge/tda998x_drv.c 
b/drivers/gpu/drm/bridge/tda998x_drv.c
index 6c427bc75896..16c745591175 100644
--- a/drivers/gpu/drm/bridge/tda998x_drv.c
+++ b/drivers/gpu/drm/bridge/tda998x_drv.c
@@ -1408,11 +1408,12 @@ static enum drm_mode_status 
tda998x_bridge_mode_valid(struct drm_bridge *bridge,
        if (mode->vtotal >= BIT(11))
                return MODE_BAD_VVALUE;
        return MODE_OK;
 }
 
-static void tda998x_bridge_enable(struct drm_bridge *bridge)
+static void tda998x_bridge_enable(struct drm_bridge *bridge,
+                                 struct drm_atomic_commit *commit)
 {
        struct tda998x_priv *priv = bridge_to_tda998x_priv(bridge);
 
        if (!priv->is_on) {
                /* enable video ports, audio will be enabled later */
@@ -1426,11 +1427,12 @@ static void tda998x_bridge_enable(struct drm_bridge 
*bridge)
 
                priv->is_on = true;
        }
 }
 
-static void tda998x_bridge_disable(struct drm_bridge *bridge)
+static void tda998x_bridge_disable(struct drm_bridge *bridge,
+                                  struct drm_atomic_commit *commit)
 {
        struct tda998x_priv *priv = bridge_to_tda998x_priv(bridge);
 
        if (priv->is_on) {
                /* disable video ports */
@@ -1743,16 +1745,19 @@ static void tda998x_bridge_hpd_disable(struct 
drm_bridge *bridge)
 
        cec_write(priv, REG_CEC_RXSHPDINTENA, 0);
 }
 
 static const struct drm_bridge_funcs tda998x_bridge_funcs = {
+       .atomic_create_state = drm_atomic_helper_bridge_create_state,
+       .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
+       .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
        .attach = tda998x_bridge_attach,
        .detach = tda998x_bridge_detach,
        .mode_valid = tda998x_bridge_mode_valid,
-       .disable = tda998x_bridge_disable,
+       .atomic_disable = tda998x_bridge_disable,
        .mode_set = tda998x_bridge_mode_set,
-       .enable = tda998x_bridge_enable,
+       .atomic_enable = tda998x_bridge_enable,
        .edid_read = tda998x_bridge_edid_read,
        .detect = tda998x_bridge_detect,
        .hpd_enable = tda998x_bridge_hpd_enable,
        .hpd_disable = tda998x_bridge_hpd_disable,
 };

-- 
2.54.0

Reply via email to