[PATCH v2 4/7] drm/i2c: tda998x: always disable and clear interrupts at probe

Hans Verkuil hverkuil at xs4all.nl
Wed Dec 6 13:55:44 UTC 2017


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 at armlinux.org.uk>

Acked-by: Hans Verkuil <hans.verkuil at cisco.com>

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;
> 



More information about the dri-devel mailing list