[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