On Sun, 4 Dec 2011 21:58:59 +1100 NeilBrown <[email protected]> wrote:

> On Sun, 04 Dec 2011 11:56:44 +0200 Igor Grinberg <[email protected]>
> wrote:
> 
> > Hi Neil,
> > 
> > On 12/03/11 03:35, NeilBrown wrote:
> > > On Sun, 27 Nov 2011 11:42:17 +0200 Igor Grinberg <[email protected]>
> > > wrote:
> > > 
> > >> ping!
> > > 
> > > pong ...
> > > 
> > > 
> > > Hi,
> > >  I've been trying this patch out on my GTA04 with 3.2-rc4 and it doesn't
> > >  work :-(
> > 
> > Probably, v3.2-rc4 is not the best to try things out...
> > This patch is based on v3.1, can you try v3.1, so at least we can
> > check the that the patch itself has no problems?
> > Also, CC'ing linux-omap.
> 
> I think I'll be able to give 3.1 a try - I'll let you know.
> 

Yes, works fine with 3.1


I've managed to find the problem.

commit af8db1508f2c9f3b6e633e2d2d906c6557c617f9
Author: Peter Chen <[email protected]>
Date:   Tue Nov 15 21:52:29 2011 +0100

    PM / driver core: disable device's runtime PM during shutdown
 
....

@@ -1742,6 +1743,8 @@ void device_shutdown(void)
                 */
                list_del_init(&dev->kobj.entry);
                spin_unlock(&devices_kset->list_lock);
+               /* Disable all device's runtime power management */
+               pm_runtime_disable(dev);
 
                if (dev->bus && dev->bus->shutdown) {
                        dev_dbg(dev, "shutdown\n");



Removing this call allows power-off to work.

It seems that omap_i2c.1 is normally in runtime suspend.
omap_i2c_xfer wakes it up, performs the xfer, then puts it back to sleep.

So this pm_runtime_disable is called while the device is asleep, so it stays
asleep.  omap_i2c_xfer cannot wake it up and so cannot xfer anything.

I'll start a new thread including the people responsible for that patch.

Thanks for your time,
NeilBrown

Attachment: signature.asc
Description: PGP signature

Reply via email to