This fits better with the drm_bridge callbacks for when this
driver becomes a drm_bridge.

Suggested-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
Signed-off-by: Peter Rosin <p...@axentia.se>
---
 drivers/gpu/drm/i2c/tda998x_drv.c | 64 ++++++++++++++++++++++-----------------
 1 file changed, 37 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c 
b/drivers/gpu/drm/i2c/tda998x_drv.c
index 8f6e013f2b87..f9028d567ec2 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1163,36 +1163,42 @@ static int tda998x_connector_init(struct tda998x_priv 
*priv,
 
 /* DRM encoder functions */
 
-static void tda998x_encoder_dpms(struct drm_encoder *encoder, int mode)
+static void tda998x_enable(struct tda998x_priv *priv)
 {
-       struct tda998x_priv *priv = enc_to_tda998x_priv(encoder);
-       bool on;
+       if (priv->is_on)
+               return;
 
-       /* we only care about on or off: */
-       on = mode == DRM_MODE_DPMS_ON;
+       /* enable video ports, audio will be enabled later */
+       reg_write(priv, REG_ENA_VP_0, 0xff);
+       reg_write(priv, REG_ENA_VP_1, 0xff);
+       reg_write(priv, REG_ENA_VP_2, 0xff);
+       /* set muxing after enabling ports: */
+       reg_write(priv, REG_VIP_CNTRL_0, priv->vip_cntrl_0);
+       reg_write(priv, REG_VIP_CNTRL_1, priv->vip_cntrl_1);
+       reg_write(priv, REG_VIP_CNTRL_2, priv->vip_cntrl_2);
 
-       if (on == priv->is_on)
-               return;
+       priv->is_on = true;
+}
 
-       if (on) {
-               /* enable video ports, audio will be enabled later */
-               reg_write(priv, REG_ENA_VP_0, 0xff);
-               reg_write(priv, REG_ENA_VP_1, 0xff);
-               reg_write(priv, REG_ENA_VP_2, 0xff);
-               /* set muxing after enabling ports: */
-               reg_write(priv, REG_VIP_CNTRL_0, priv->vip_cntrl_0);
-               reg_write(priv, REG_VIP_CNTRL_1, priv->vip_cntrl_1);
-               reg_write(priv, REG_VIP_CNTRL_2, priv->vip_cntrl_2);
-
-               priv->is_on = true;
-       } else {
-               /* disable video ports */
-               reg_write(priv, REG_ENA_VP_0, 0x00);
-               reg_write(priv, REG_ENA_VP_1, 0x00);
-               reg_write(priv, REG_ENA_VP_2, 0x00);
+static void tda998x_disable(struct tda998x_priv *priv)
+{
+       /* disable video ports */
+       reg_write(priv, REG_ENA_VP_0, 0x00);
+       reg_write(priv, REG_ENA_VP_1, 0x00);
+       reg_write(priv, REG_ENA_VP_2, 0x00);
 
-               priv->is_on = false;
-       }
+       priv->is_on = false;
+}
+
+static void tda998x_encoder_dpms(struct drm_encoder *encoder, int mode)
+{
+       struct tda998x_priv *priv = enc_to_tda998x_priv(encoder);
+
+       /* we only care about on or off: */
+       if (mode == DRM_MODE_DPMS_ON)
+               tda998x_enable(priv);
+       else
+               tda998x_disable(priv);
 }
 
 static void
@@ -1607,12 +1613,16 @@ static int tda998x_create(struct i2c_client *client, 
struct tda998x_priv *priv)
 
 static void tda998x_encoder_prepare(struct drm_encoder *encoder)
 {
-       tda998x_encoder_dpms(encoder, DRM_MODE_DPMS_OFF);
+       struct tda998x_priv *priv = enc_to_tda998x_priv(encoder);
+
+       tda998x_disable(priv);
 }
 
 static void tda998x_encoder_commit(struct drm_encoder *encoder)
 {
-       tda998x_encoder_dpms(encoder, DRM_MODE_DPMS_ON);
+       struct tda998x_priv *priv = enc_to_tda998x_priv(encoder);
+
+       tda998x_enable(priv);
 }
 
 static const struct drm_encoder_helper_funcs tda998x_encoder_helper_funcs = {
-- 
2.11.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to