Re: [PATCH v2] i2c-omap: Double clear of ARDY status in IRQ handler

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

 



On Fri, Feb 18, 2011 at 5:38 AM, Tony Lindgren <tony@xxxxxxxxxxx> wrote:
> * Keerthy <j-keerthy@xxxxxx> [110215 20:53]:
>> From: Richard woodruff <r-woodruff2@xxxxxx>
>>
>> This errata occurs when the ARDY interrupt generation is enabled.
>> At the begining of every new transaction the ARDY interrupt is cleared.
>>
>> On continuous i2c transactions where after clearing the ARDY bit from
>> I2C_STAT register (clearing the interrupt), the IRQ line is reasserted and the
>> I2C_STAT[ARDY] bit set again on 1. In fact, the ARDY status bit is not cleared
>> at the write access to I2C_STAT[ARDY] and only the IRQ line is deasserted and
>> then reasserted. This is not captured in the usual errata documents.
>>
>> The workaround is to have a double clear of ARDY status in irq handler.
>
> I'll add this to omap-testing for few days and then if no issue Ben
> can merge this.

Thanks Tony.
>
> Regards,
>
> Tony
>
>> Signed-off-by: Richard woodruff <r-woodruff2@xxxxxx>
>> Signed-off-by: Keerthy <j-keerthy@xxxxxx>
>> ---
>>  drivers/i2c/busses/i2c-omap.c |    6 +++++-
>>  1 files changed, 5 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
>> index b605ff3..5b35cf4 100644
>> --- a/drivers/i2c/busses/i2c-omap.c
>> +++ b/drivers/i2c/busses/i2c-omap.c
>> @@ -847,11 +847,15 @@ complete:
>>                       dev_err(dev->dev, "Arbitration lost\n");
>>                       err |= OMAP_I2C_STAT_AL;
>>               }
>> +             /*
>> +              * ProDB0017052: Clear ARDY bit twice
>> +              */
>>               if (stat & (OMAP_I2C_STAT_ARDY | OMAP_I2C_STAT_NACK |
>>                                       OMAP_I2C_STAT_AL)) {
>>                       omap_i2c_ack_stat(dev, stat &
>>                               (OMAP_I2C_STAT_RRDY | OMAP_I2C_STAT_RDR |
>> -                             OMAP_I2C_STAT_XRDY | OMAP_I2C_STAT_XDR));
>> +                             OMAP_I2C_STAT_XRDY | OMAP_I2C_STAT_XDR |
>> +                             OMAP_I2C_STAT_ARDY));
>>                       omap_i2c_complete_cmd(dev, err);
>>                       return IRQ_HANDLED;
>>               }
>> --
>> 1.7.0.4
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>



-- 
Regards and Thanks,
Keerthy
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux