From: Nishanth Menon <nm@ti.com>
To: "Sonasath, Moiz" <m-sonasath@ti.com>
Cc: "linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
"Kamat, Nishant" <nskamat@ti.com>, Paul Walmsley <paul@pwsan.com>,
"Pandita, Vikram" <vikram.pandita@ti.com>
Subject: Re: [PATCH 3/3] [OMAP:I2C]OMAP3430 Silicon Errata 1.153
Date: Wed, 15 Jul 2009 17:27:17 -0500 [thread overview]
Message-ID: <4A5E57C5.6000600@ti.com> (raw)
In-Reply-To: <CD8CC2B65FEE304DA95744A5472698F202957C7DB5@dlee06.ent.ti.com>
Sonasath, Moiz had written, on 07/15/2009 05:23 PM, the following:
> Hello Nishant,
>
> Comments inlined,
>
> Regards
> Moiz Sonasath
>
>
> -----Original Message-----
> From: Menon, Nishanth
> Sent: Wednesday, July 15, 2009 4:43 PM
> To: Sonasath, Moiz
> Cc: linux-omap@vger.kernel.org; Kamat, Nishant; Paul Walmsley
> Subject: Re: [PATCH 3/3] [OMAP:I2C]OMAP3430 Silicon Errata 1.153
>
> Sonasath, Moiz had written, on 07/15/2009 10:40 AM, the following:
>>> When an XRDY/XDR is hit, wait for XUDF before writing data to DATA_REG.
>>> Otherwise some data bytes can be lost while transferring them from the
>>> memory to the I2C interface.
>>>
>>> Do a Busy-wait for XUDF, before writing data to DATA_REG. While waiting
>>> if there is NACK | AL, set the appropriate error flags, ack the pending
>>> + }
>>> + cpu_relax();
>>> + stat = omap_i2c_read_reg(dev, OMAP_I2C_STAT_REG);
>>> + }
>> this is an infinite while loop + it tries to handle error cases -
>> essentially do another isr routine inside itself.
>> [Moiz]
>> Yes, it is a busy wait loop. But AFAIK while we come to this part of
> > the code the only thing that can go wrong in the transfer is either
> > the device would go off suddenly (creating a NACK) or there is an
> > arbitration lost(AL). This loop takes care of these two error conditions.
> > Apart from these, if the hardware is functional, the XUDF bit should
> > be set as soon as the FIFO gets empty.
>> Correct me if I am missing something.
> That is exactly what I was complaining about -> why not use the existing
> logic above in the code to take care of it as I indicated below? do you
> see a problem with the logic I send? it is lesser code and should IMHO
> take care of the same issue without the additional 3rd nested while loop
>> How about:
>> Apply [1] and the following?
>> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
>> index ad8d201..e3f21af 100644
>> --- a/drivers/i2c/busses/i2c-omap.c
>> +++ b/drivers/i2c/busses/i2c-omap.c
>> @@ -728,6 +728,12 @@ omap_i2c_isr(int this_irq, void *dev_id)
>> }
>> if (stat & (OMAP_I2C_STAT_XRDY | OMAP_I2C_STAT_XDR)) {
>> u8 num_bytes = 1;
>> + if (cpu_is_omap34xx() &&
>> + !(stat & OMAP_I2C_STAT_XUDF)){
>> + cpu_relax();
>> + continue;
>> + }
>> +
>
> [Moiz]
>
> In this alternate implementation if a NACK|AL is produced while waiting
> on the XUDF, it returns from the ISR (as per my patch [2/3])
> without ACKING the XRDY/XDR interrupts which would make it return
> to the ISR again and again which looks like a problem. To accommodate
>this implementation, we will have to ACK XRDY/XDR before returning
from the ISR.
ok, this is due to my [1] patch which should have handled this condition
in the first place. I will rework my original [1] patch and resend it.
Regards,
Nishanth Menon
Ref:
[1] http://patchwork.kernel.org/patch/32332/
next prev parent reply other threads:[~2009-07-15 22:27 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-14 21:21 [PATCH 3/3] [OMAP:I2C]OMAP3430 Silicon Errata 1.153 Sonasath, Moiz
2009-07-14 23:23 ` Nishanth Menon
2009-07-15 15:40 ` Sonasath, Moiz
2009-07-15 21:43 ` Nishanth Menon
2009-07-15 22:23 ` Sonasath, Moiz
2009-07-15 22:27 ` Nishanth Menon [this message]
2009-07-15 22:29 ` Sonasath, Moiz
2009-07-15 22:31 ` Nishanth Menon
2009-07-15 22:37 ` Sonasath, Moiz
2009-07-15 23:03 ` Nishanth Menon
2009-07-16 15:52 ` Sonasath, Moiz
2009-07-20 16:54 ` Sonasath, Moiz
-- strict thread matches above, loose matches on Subject: below --
2009-07-21 15:15 Sonasath, Moiz
2009-08-03 7:35 ` Paul Walmsley
2009-08-03 20:19 ` Sonasath, Moiz
[not found] ` <CD8CC2B65FEE304DA95744A5472698F202959C0D61-UmuGNrFEPrGIQmiDNMet8wC/G2K4zDHf@public.gmane.org>
2009-08-10 15:44 ` Sonasath, Moiz
2009-08-10 16:29 ` Paul Walmsley
2009-08-11 16:33 ` Sonasath, Moiz
[not found] ` <CD8CC2B65FEE304DA95744A5472698F20295A89A21-UmuGNrFEPrGIQmiDNMet8wC/G2K4zDHf@public.gmane.org>
2009-08-16 17:39 ` Paul Walmsley
[not found] ` <alpine.DEB.2.00.0908160841160.31720-rwI8Ez+7Ko+d5PgPZx9QOdBPR1lH4CV8@public.gmane.org>
2009-08-20 17:16 ` Sonasath, Moiz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A5E57C5.6000600@ti.com \
--to=nm@ti.com \
--cc=linux-omap@vger.kernel.org \
--cc=m-sonasath@ti.com \
--cc=nskamat@ti.com \
--cc=paul@pwsan.com \
--cc=vikram.pandita@ti.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox