Move the mutex, waitqueue, timer and detect work initialisation early
in the driver's initialisation, rather than being after we've registered
the CEC device.

Signed-off-by: Russell King <rmk+ker...@armlinux.org.uk>
---
 drivers/gpu/drm/i2c/tda998x_drv.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c 
b/drivers/gpu/drm/i2c/tda998x_drv.c
index 127815253a84..7f4dbca7f7f4 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1476,7 +1476,11 @@ static int tda998x_create(struct i2c_client *client, 
struct tda998x_priv *priv)
        u32 video;
        int rev_lo, rev_hi, ret;
 
-       mutex_init(&priv->audio_mutex); /* Protect access from audio thread */
+       mutex_init(&priv->mutex);       /* protect the page access */
+       mutex_init(&priv->audio_mutex); /* protect access from audio thread */
+       init_waitqueue_head(&priv->edid_delay_waitq);
+       timer_setup(&priv->edid_delay_timer, tda998x_edid_delay_done, 0);
+       INIT_WORK(&priv->detect_work, tda998x_detect_work);
 
        priv->vip_cntrl_0 = VIP_CNTRL_0_SWAP_A(2) | VIP_CNTRL_0_SWAP_B(3);
        priv->vip_cntrl_1 = VIP_CNTRL_1_SWAP_C(0) | VIP_CNTRL_1_SWAP_D(1);
@@ -1490,11 +1494,6 @@ static int tda998x_create(struct i2c_client *client, 
struct tda998x_priv *priv)
        if (!priv->cec)
                return -ENODEV;
 
-       mutex_init(&priv->mutex);       /* protect the page access */
-       init_waitqueue_head(&priv->edid_delay_waitq);
-       timer_setup(&priv->edid_delay_timer, tda998x_edid_delay_done, 0);
-       INIT_WORK(&priv->detect_work, tda998x_detect_work);
-
        /* wake up the device: */
        cec_write(priv, REG_CEC_ENAMODS,
                        CEC_ENAMODS_EN_RXSENS | CEC_ENAMODS_EN_HDMI);
-- 
2.7.4

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

Reply via email to