Re: [PATCH] MFD: TWL: add power off functionality

From: NeilBrown
Date: Sun Dec 04 2011 - 16:44:10 EST


On Sun, 4 Dec 2011 21:58:59 +1100 NeilBrown <neilb@xxxxxxx> wrote:

> On Sun, 04 Dec 2011 11:56:44 +0200 Igor Grinberg <grinberg@xxxxxxxxxxxxxx>
> wrote:
>
> > Hi Neil,
> >
> > On 12/03/11 03:35, NeilBrown wrote:
> > > On Sun, 27 Nov 2011 11:42:17 +0200 Igor Grinberg <grinberg@xxxxxxxxxxxxxx>
> > > 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 <peter.chen@xxxxxxxxxxxxx>
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