All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nick Thompson <nick.thompson@ge.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] I2C: OMAP: spurious i2c probe addresses
Date: Thu, 26 May 2011 13:35:16 +0100	[thread overview]
Message-ID: <4DDE4904.4060409@ge.com> (raw)
In-Reply-To: <4DDE3BA2.2000807@matrix-vision.de>

On 26/05/11 12:38, Michael Jones wrote:
> On 05/26/2011 11:23 AM, Nick Thompson wrote:
>> On 26/05/11 08:03, Michael Jones wrote:
>>> On 05/25/2011 05:38 PM, Michael Jones wrote:
>>>> While running v2011.06-rc1, I noticed some new behavior on my OMAP3 i2c
>>>> bus.  I tracked it to commit 0e57968a215d1b, "I2C: OMAP: detect more
>>>> devices when probing an i2c bus".  It detects more devices indeed, such
>>>> as some that don't even exist. Even better than that, it detects
>>>> different devices every time.  It looks like just false positives, the
>>>> existent devices seem to always be found among the ghost devices.
>>>>
>>>> Here's the behavior I see:
>>>> --------------------------
>>>> # i2c probe
>>>> Valid chip addresses: 05 18 30 49 50 51 5E 7A
>>>> # i2c probe
>>>> Valid chip addresses: 02 06 0B 18 1D 24 25 30 35 50 51 57 5D 6F 7C
>>>> # i2c probe
>>>> Valid chip addresses: 18 2E 30 33 35 50 51 62 6F
>>>> # i2c probe
>>>> Valid chip addresses: 18 1B 1F 2D 30 46 50 51 5C 5D
>>>> # i2c probe
>>>> Valid chip addresses: 0A 18 21 26 2B 30 32 50 51 60 66 69 6D 79
>>>> # i2c probe
>>>> Valid chip addresses: 08 09 18 1B 30 50 51 5E 6C
>>>>
>>>>
>>>> Here's what it looks like after reverting the commit:
>>>> ------------------------------------------
>>>> # i2c probe
>>>> Valid chip addresses: 18 30 50 51
>>>> # i2c probe
>>>> Valid chip addresses: 18 30 50 51
>>>> # i2c probe
>>>> Valid chip addresses: 18 30 50 51
>>>> # i2c probe
>>>> Valid chip addresses: 18 30 50 51
>>>>
>>>>
>>>> -Michael
>>>
>>> Sorry- relevant point here: I have a device with a 2-byte subaddress,
>>> which I suspect is the culprit here.  As Nick mentioned in his commit
>>> message, such devices are unsupported by the current OMAP i2c driver.
>>> I'm in the process of adding support for 2-byte subaddresses to the
>>> driver.  In light of the above, I now realize that such changes will
>>> probably have to involve i2c_probe() as well.
>>>
>>> -Michael
>>
> 
> Hi Nick,
> 
>> Hi Michael,
>>
>> What do you mean by sub-address? The address within the device or an
>> extended chip address?
> 
> I mean the address within the device.
> 
>>
>> The change I made aborts the write after sending the 7 bit chip
>> address and 1 write bit, so a device's internal address shouldn't be
>> relevant.
> 
> Mmm, OK.  I only jumped to that conclusion because your comment in the
> commit message mentions that the driver only supports devices with
> single-byte subaddresses.

That appears to true. The Davinci driver supports two byte addresses. You
might be able to use that as a template for your changes.

> 
>>
>> Extended chip addressing devices would not be supported as it stands.
>> I can imagine NACK may not be occur for a device waiting for more
>> chip address bits, though I would have thought it wouldn't drive the bus
>> low until the full address is received.
> 
> Curious.  It sounds like you would've expected it to work with my device.

Yes.

I've made a similar change to Davinci's probe and it works with a 25x256
(Spansion) device (and more stubborn Analog Devices DACs and ADCs, as well
as temperature and current sensors). The probe always returns the same
results, much like our OMAP boards.

> 
>>
>> Can you tell us what device this is? Even better a link to the data
>> sheet.
> 
> It's a 128 Kbit EEPROM.
> http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00259167.pdf 
> 
>>
>> Does your bus have only one master (the OMAP)? There could be an issue
>> if bus arbitration failures occur.
> 
> OMAP is the only master.

Okay.

> 
>>
>> I guess your bus pull-ups are strong enough to assert the NAK...?
>> If not, you probably you would have seen other issues before now.
> 
> Right- I assume this is not the problem because I haven't had other
> issues before now.

Hmm, I'm a bit stumped then. I'm still playing with I2C on Davinci,
so more ideas may come out of that.

The bus pull-ups on our boards are 2k-ohm to 3v3 rail, if it helps.

> 
>>
>> Nick.
> 
> I am going to focus on getting proper reads and writes working
> with my device before looking into this myself.  If you have
> suggestions in the meantime, I'm all ears.  Otherwise I'll be
> in touch when I get around to looking at probe again.

Okay, let me know how you get on.

> 
> -Michael

Nick.

      reply	other threads:[~2011-05-26 12:35 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-25 15:38 [U-Boot] I2C: OMAP: spurious i2c probe addresses Michael Jones
2011-05-26  7:03 ` Michael Jones
2011-05-26  7:14   ` Heiko Schocher
2011-05-26  7:25   ` Andre Schwarz
2011-05-26  9:23   ` Nick Thompson
2011-05-26 11:38     ` Michael Jones
2011-05-26 12:35       ` Nick Thompson [this message]

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=4DDE4904.4060409@ge.com \
    --to=nick.thompson@ge.com \
    --cc=u-boot@lists.denx.de \
    /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.