On 12/06/17 13:35, Russell King wrote: > Always disable and clear interrupts at probe time to ensure that the > TDA998x is in a sane state. This ensures that the interrupt line, > which is also the CEC clock calibration signal, is always deasserted. > > Signed-off-by: Russell King <rmk+kernel@xxxxxxxxxxxxxxx> Acked-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> Regards, Hans > --- > drivers/gpu/drm/i2c/tda998x_drv.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c > index 661cb8915f2f..e294f5b50236 100644 > --- a/drivers/gpu/drm/i2c/tda998x_drv.c > +++ b/drivers/gpu/drm/i2c/tda998x_drv.c > @@ -1547,6 +1547,15 @@ static int tda998x_create(struct i2c_client *client, struct tda998x_priv *priv) > cec_write(priv, REG_CEC_FRO_IM_CLK_CTRL, > CEC_FRO_IM_CLK_CTRL_GHOST_DIS | CEC_FRO_IM_CLK_CTRL_IMCLK_SEL); > > + /* ensure interrupts are disabled */ > + cec_write(priv, REG_CEC_RXSHPDINTENA, 0); > + > + /* clear pending interrupts */ > + cec_read(priv, REG_CEC_RXSHPDINT); > + reg_read(priv, REG_INT_FLAGS_0); > + reg_read(priv, REG_INT_FLAGS_1); > + reg_read(priv, REG_INT_FLAGS_2); > + > /* initialize the optional IRQ */ > priv->cec = i2c_new_dummy(client->adapter, priv->cec_addr); > if (!priv->cec) > @@ -1558,11 +1567,6 @@ static int tda998x_create(struct i2c_client *client, struct tda998x_priv *priv) > /* init read EDID waitqueue and HDP work */ > init_waitqueue_head(&priv->wq_edid); > > - /* clear pending interrupts */ > - reg_read(priv, REG_INT_FLAGS_0); > - reg_read(priv, REG_INT_FLAGS_1); > - reg_read(priv, REG_INT_FLAGS_2); > - > irq_flags = > irqd_get_trigger_type(irq_get_irq_data(client->irq)); > irq_flags |= IRQF_SHARED | IRQF_ONESHOT; > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel