Re: [PATCH 0/3] i2c: designware: should not wait for enable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Thank you. As I understand from the trace, everything up until the
> disable-and-poll sequence is working as intended, and then the
> IC_ENABLE_STATUS register seems "stuck" for no apparent reason.
>
> I wonder if simply reading it once after enabling (and discarding the
> retrieved value) is enough to avoid the stuck state, can you please
> check that? I'm pasting a patch below.
>
> If that works, that would be my preference to moving forward with
> this issue. If not, or the idea is objectionable, then we could
> keep polling-after-enable but limit it to IP rev. 1.1.5 and newer.

That works. I'm happy with that fix.

> Alexander
>
> diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
> index fd36c39ddf4e..1bc358766957 100644
> --- a/drivers/i2c/busses/i2c-designware-master.c
> +++ b/drivers/i2c/busses/i2c-designware-master.c
> @@ -209,7 +209,8 @@ static void i2c_dw_xfer_init(struct dw_i2c_dev *dev)
>         i2c_dw_disable_int(dev);
>
>         /* Enable the adapter */
> -       __i2c_dw_enable_and_wait(dev, true);
> +       __i2c_dw_enable(dev, true);
> +       dw_readl(dev, DW_IC_ENABLE_STATUS);
>
>         /* Clear and enable interrupts */
>         dw_readl(dev, DW_IC_CLR_INTR);



[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux