[Gta04-owner] Suspend / Resume on 3.12

Dr. H. Nikolaus Schaller hns at goldelico.com
Thu Nov 14 18:36:21 CET 2013


Am 13.11.2013 um 15:45 schrieb Andreas Kemnade:

> Hi,
> 
> On Tue, 2013-11-12 at 09:49 +1100, NeilBrown wrote: 
>> On Mon, 11 Nov 2013 16:38:31 +0100 Andreas Kemnade <andreas at kemnade.info>
>> wrote:
>> 
>>>> 
>>>> I look forward to hearing of your results.
>>> 
>>> At the moment I even cannot reproduce your the lower currents when the
>>> module is removed or unbind is done (when the modem does not show up on
>>> the bus). I measured current_now directly after suspend and retried also
>>> with that 5-min average using charge_now.
>> 
>> What current do you measure? 
> 
> 3.7 with ehci-hcd compiled in
> - 32mA without modem, 2 tries
> doing unbind
> - 45mA (3x)
> doing bind
> - 54mA
> - 24mA
> - 24mA
> - 54mA
> 
> doing unbind
> 
> - 45mA
> - 45mA
> 
> doing bind
> - 24mA
> - 24mA
> - 47mA(?)
> - 24mA
> - 24mA
> - 41mA(?)
> 
> 
>> Is it consistent over several measurements?
> 
> I retried it using some 5 minute slots (the values above are current_now
> after suspend), and i never got any lower values than the ones from
> above.
> 
>> What kernel are you using?
>> 
> A 3.7-nplus kernel with the following change to the offmode thingy:
> --- a/arch/arm/mach-omap2/pm34xx.c
> +++ b/arch/arm/mach-omap2/pm34xx.c
> @@ -377,12 +377,12 @@ static int omap3_pm_suspend(void)
>        /* Set ones wanted by suspend */
>        list_for_each_entry(pwrst, &pwrst_list, node) {
>                if (strcmp(pwrst->pwrdm->name, "core_pwrdm") == 0) {
> -                       static int times = 0;
> -                       times++;
> -                       if (times == 1)
> +               //      static int times = 0;
> +               //      times++;
> +               //      if (times == 1)
>                                pwrst->next_state = PWRDM_POWER_RET;
> -                       if (times == 2)
> -                               pwrst->next_state = PWRDM_POWER_OFF;
> +               //      if (times == 2)
> +               //              pwrst->next_state = PWRDM_POWER_OFF;
>                }
>                if (omap_set_pwrdm_state(pwrst->pwrdm,
> pwrst->next_state))
>                        goto restore;
> 
> I did this because suspend did only work once. I also retried using the
> qtmoko56.2 kernel

Ok, I have reverted this in the 3.12.0 kernel. Maybe it conflicts with the
3.12 kernel?

But I still have a problem with mmc1 (WiFi):

echo mem > /sys/power/state

[  462.113830] PM: Syncing filesystems ... done.
[  462.190917] Freezing user space processes ... (elapsed 0.001 seconds) done.
[  462.201293] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[  462.210693] Suspending console(s) (use no_console_suspend to debug)
[  462.218627] dpm_run_callback(): mmc_bus_suspend+0x0/0x44 returns -38
[  462.218750] PM: Device mmc1:0001 failed to suspend: error -38
[  462.218780] PM: Some devices failed to suspend, or early wake event detected
[  462.219146] PM: resume of devices complete after 0.335 msecs
[  462.246551] Restarting tasks ... done.

BTW: a description about OMAP3 power management can be found here:

http://elinux.org/OMAP_Power_Management

The only thing to note is that some /sys nodes have moved and changed.

BR,
Nikolaus



More information about the Gta04-owner mailing list