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>
Subject: Re: [PATCH 3/3] [OMAP:I2C]OMAP3430 Silicon Errata 1.153
Date: Wed, 15 Jul 2009 16:43:22 -0500 [thread overview]
Message-ID: <4A5E4D7A.6010706@ti.com> (raw)
In-Reply-To: <CD8CC2B65FEE304DA95744A5472698F202957C7C3A@dlee06.ent.ti.com>
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;
> + }
> +
> if (dev->fifo_size) {
> if (stat & OMAP_I2C_STAT_XRDY)
> num_bytes = dev->fifo_size;
>
>
> Regards,
> Nishanth Menon
> Ref:
> [1] http://patchwork.kernel.org/patch/32332/
--
Regards,
Nishanth Menon
next prev parent reply other threads:[~2009-07-15 21:43 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 [this message]
2009-07-15 22:23 ` Sonasath, Moiz
2009-07-15 22:27 ` Nishanth Menon
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=4A5E4D7A.6010706@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 \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.