linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: andy@warmcat.com (Andy Green)
To: linux-arm-kernel@lists.infradead.org
Subject: Device probe order (i2c regulator vs. platform device)
Date: Wed, 24 Mar 2010 11:27:32 +0000	[thread overview]
Message-ID: <4BA9F724.8070901@warmcat.com> (raw)
In-Reply-To: <20100324110820.GA5831@opensource.wolfsonmicro.com>

On 03/24/10 11:08, Somebody in the thread at some point said:
> On Wed, Mar 24, 2010 at 12:02:30PM +0100, Marek Szyprowski wrote:
>
>> Ok, I get this idea, but this requires to move the i2c bus initialization
>> also to subsys_initcall. We use generic i2c-gpio driver. I suspect there
>> might be some unpredicted consequences on some other systems if we push
>> the patch that changes it init to subsys_initcall. I have no idea if the
>> gpiolib calls are available on all systems during the subsys_initcall.
>
> It's been OK for other I2C controllers.  GPIOs are another thing I'd
> expect to see available early since they're in a similar position where
> lots of other devices end up needing them in their probe so it'd seem
> surprising if there were a problem with bringing it up early.

You're missing the point.

On any board with a PMU if you look at the schematic you will see most 
of the assets on the board are totally dependent on the PMU power 
arrangements.

Take for example the SD card socket with its own regulator from the PMU.

In Linux reasonably enough MMC is not related to I2C at all in the 
default case.  Therefore during suspend, nothing stops I2C child suspend 
completing before the MMC stack suspend completes.

In that case, MMC commands designed to put the card to idle nicely ping 
off a dead card because its power is gone already.  And that is an 
uncontrolled race that varied suspend by suspend according to the phase 
of the moon.

The dependency of the SD slot on the PMU is not notional, it's totally 
real in hardware.

The solution is to make explicit the device hierarchy relationship using 
the parent member of struct device.  On a typical board, it means most 
of your devices are children on the PMU -- and that reflects the reality.

To do that, you need a post-PMU-probe callback into the machine file, or 
some even nicer API arrangement you're in a good position to invent :-)

-Andy

  reply	other threads:[~2010-03-24 11:27 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-24  7:10 Device probe order (i2c regulator vs. platform device) Marek Szyprowski
2010-03-24  9:19 ` Andy Green
2010-03-24 11:11   ` Marek Szyprowski
2010-03-24 12:50     ` Andy Green
2010-03-24 13:11       ` Mark Brown
2010-03-24 13:22         ` Andy Green
2010-03-24 11:32   ` Mark Brown
2010-03-24 12:11     ` Andy Green
2010-03-24 14:01       ` Mark Brown
2010-03-24 14:38         ` Andy Green
2010-03-25 10:22           ` Mark Brown
2010-03-25 10:52             ` Andy Green
2010-03-24 10:21 ` Mark Brown
2010-03-24 10:57   ` Andy Green
2010-03-24 11:02   ` Marek Szyprowski
2010-03-24 11:08     ` Mark Brown
2010-03-24 11:27       ` Andy Green [this message]
2010-03-24 12:19         ` Mark Brown
2010-03-24 12:29           ` Andy Green

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=4BA9F724.8070901@warmcat.com \
    --to=andy@warmcat.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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;
as well as URLs for NNTP newsgroup(s).