Re: SYS_OFF_MODE signaling and CORE domain Transition to OFF Mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Sep 23, 2010 at 11:05 AM, Kevin Hilman
<khilman@xxxxxxxxxxxxxxxxxxx> wrote:
> Laine Walker-Avina <lwalkera@xxxxxxxxx> writes:
>
>> I'm having some troubles putting my OMAP3503(the one without the DSP
>> or SGX modules) board to sleep. I'm using the current master on the
>> l-o git repository.
>
> Looks like you're wanting to use off-mode. ÂThere are many drivers that
> do not yet support off mode, as they need to do context save/restore in
> their suspend/resume paths in order to support off mode.
>
> In particular, MMC in l-o master does not yet have this support, so you
> should not expect MMC to work after an off mode transition.
>
> This is why off-mode is disabled by default, it has to be manually
> enabled by: echo 1 > /debug/pm_debug/enable_off_mode.
>
> Do things work as expected if you leave off-mode disabled?
>
>> This is the output from dmesg and the count file after suspending
>> twice. The first time it wakes immediately after going down, and the
>> second time stays asleep but says that the core domain didn't enter
>> OFF mode.
>
> This is not easy to debug with the current kernel dump.
>
> The way I suggest debugging this is by first getting to a minimal kernel
> that can suspend/resume as you expect. ÂThen you add in the drivers to
> see which one is causing the problem, or keeping the system away.
>
> Clearly the MMC driver has some problems in it's suspend/resume hooks
> with unbalanced regulator enable/disables, so for starters, I'd suggest
> disabling MMC. ÂI'd also suggest disabling musb, but basically the best
> way is to disable everything except a minimal kernel, and then work back
> up to the config you want.
>
> You might try using my PM branch (link below) which comes with a minimal
> kernel config for this purpose: omap3_pm_defconfig.
>
>> In either case, the SYS_OFF_MODE signal never asserts. I added some
>> debug code into map_sram_idle() to capture CM_CORE_IDLEST1 and 3 right
>> before it jumps to the final sleep code in SRAM.
>
> For looking at the idlest regs, you might want to try the patch from my
> pm-debug branch (included in my pm branch) which takes a snapshot of all
> the PM registers just before SRAM idle and right after resume. ÂYou can
> then see the registers using debugfs. ÂThis is documented on the OMAP PM
> wiki:
>
> Â Â Âhttp://elinux.org/OMAP_Power_Management
>
> Hope that helps a little,
>
> Kevin
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at Âhttp://vger.kernel.org/majordomo-info.html
>
Hi Kevin,

Thanks for the help. :)

I recompiled the kernel without anything but UART support like you
said. I applied the debug patch and the results follow. The processor
seems to go into OFF mode according the dmesg output, but the
SYS_OFF_MODE pin doesn't change state. Any thoughts?
Also, is the MMC driver being worked on to make it suspend/resume
compliant? I recall that I was able to at least go into retention with
the MMC as the root FS earlier.

root@spark:/debug/pm_debug$ echo mem > /sys/power/state
[  209.520324] PM: Syncing filesystems ... done.
[  209.525787] PM: Preparing system for mem sleep
[  209.530944] Freezing user space processes ... (elapsed 0.02 seconds) done.
[  209.559204] Freezing remaining freezable tasks ... (elapsed 0.02
seconds) done.
[  209.590545] PM: Entering mem sleep
[  209.594177] Suspending console(s) (use no_console_suspend to debug)
[  209.600982] platform reg-dummy: preparing suspend
[  209.601318] platform omapdss: preparing suspend
[  209.601409] reg-fixed-voltage reg-fixed-voltage.1: preparing suspend
[  209.601501] platform nop_usb_xceiv: preparing suspend
[  209.601623] serial8250 serial8250.0: preparing suspend
[  209.601715] serial8250 serial8250.1: preparing suspend
[  209.601806] serial8250 serial8250.2: preparing suspend
[  209.601898] platform arm-pmu.0: preparing suspend
[  209.604217] platform mpu.0: preparing suspend
[  209.604339] platform iva.0: preparing suspend
[  209.604461] platform l3_main.0: preparing suspend
[  209.604583] serial8250 serial8250: preparing suspend
[  209.607818] serial8250 serial8250: suspend
[  209.608001] platform l3_main.0: suspend
[  209.608123] platform iva.0: suspend
[  209.608245] platform mpu.0: suspend
[  209.611083] platform arm-pmu.0: suspend
[  209.611236] serial8250 serial8250.2: suspend
[  209.611663] serial8250 serial8250.1: suspend
[  209.611846] serial8250 serial8250.0: suspend
[  209.612030] platform nop_usb_xceiv: suspend
[  209.612152] reg-fixed-voltage reg-fixed-voltage.1: suspend
[  209.612274] platform omapdss: suspend
[  209.612609] platform reg-dummy: suspend
[  209.612854] PM: suspend of devices complete after 6.778 msecs
[  209.614685] serial8250 serial8250: LATE suspend
[  209.614746] platform l3_main.0: LATE suspend
[  209.614776] platform iva.0: LATE suspend
[  209.614807] platform mpu.0: LATE suspend
[  209.615020] platform arm-pmu.0: LATE suspend
[  209.615051] serial8250 serial8250.2: LATE suspend
[  209.615081] serial8250 serial8250.1: LATE suspend
[  209.615112] serial8250 serial8250.0: LATE suspend
[  209.615142] platform nop_usb_xceiv: LATE suspend
[  209.615173] reg-fixed-voltage reg-fixed-voltage.1: LATE suspend
[  209.615203] platform omapdss: LATE suspend
[  209.615264] platform reg-dummy: LATE suspend
[  209.615325] PM: late suspend of devices complete after 2.412 msecs
[  220.011688] sdrc_pwr before:00000129 now:00000129
[  220.011749] Successfully put all powerdomains to target state
[  220.012115] platform reg-dummy: EARLY resume
[  220.012176] platform omapdss: EARLY resume
[  220.012207] reg-fixed-voltage reg-fixed-voltage.1: EARLY resume
[  220.012237] platform nop_usb_xceiv: EARLY resume
[  220.012268] serial8250 serial8250.0: EARLY resume
[  220.012298] serial8250 serial8250.1: EARLY resume
[  220.012329] serial8250 serial8250.2: EARLY resume
[  220.012359] platform arm-pmu.0: EARLY resume
[  220.012573] platform mpu.0: EARLY resume
[  220.012603] platform iva.0: EARLY resume
[  220.012634] platform l3_main.0: EARLY resume
[  220.012664] serial8250 serial8250: EARLY resume
[  220.012847] PM: early resume of devices complete after 0.793 msecs
[  220.012969] irqstatus 00000200
[  220.013488] platform reg-dummy: resume
[  220.013793] platform omapdss: resume
[  220.013885] reg-fixed-voltage reg-fixed-voltage.1: resume
[  220.014007] platform nop_usb_xceiv: resume
[  220.014099] serial8250 serial8250.0: resume
[  220.014617] serial8250 serial8250.1: resume
[  220.014801] serial8250 serial8250.2: resume
[  220.022766] platform arm-pmu.0: resume
[  220.024688] platform mpu.0: resume
[  220.024780] platform iva.0: resume
[  220.024871] platform l3_main.0: resume
[  220.024993] serial8250 serial8250: resume
[  220.026458] PM: resume of devices complete after 13.128 msecs
[  220.027740] serial8250 serial8250: completing resume
[  220.027862] platform l3_main.0: completing resume
[  220.027954] platform iva.0: completing resume
[  220.028045] platform mpu.0: completing resume
[  220.029785] platform arm-pmu.0: completing resume
[  220.029907] serial8250 serial8250.2: completing resume
[  220.029998] serial8250 serial8250.1: completing resume
[  220.030426] serial8250 serial8250.0: completing resume
[  220.030548] platform nop_usb_xceiv: completing resume
[  220.030639] reg-fixed-voltage reg-fixed-voltage.1: completing resume
[  220.030731] platform omapdss: completing resume
[  220.031005] platform reg-dummy: completing resume
[  220.393035] PM: Finishing wakeup.
[  220.396423] Restarting tasks ... done.
root@spark:/debug/pm_debug$ cat registers/1
MOD: CM_IVA2 (48014000)
  04 => 00000011  20 => 00000001  34 => 00000001  40 => 00080000
  44 => 00000001  48 => 00000003
MOD: CM_OCP (48004800)
  00 => 00000010  10 => 00000001
MOD: CM_MPU (48004900)
  04 => 00000077  24 => 00000001  34 => 00000001  40 => 0010fa05
  44 => 00000001  48 => 00000003  4c => 00000001
MOD: CM_CORE (48004a00)
  10 => 00000042  20 => ffffffbd  24 => 0000001f  28 => 0000000d
  30 => fffffed9  34 => 0000001f  38 => 0000000c  40 => 0000030a
  48 => 0000003f  4c => 00000003
MOD: CM_SGX (48004b00)

MOD: CM_WKUP (48004c00)
  10 => 0000000e  20 => 000002f1  30 => 0000003f  40 => 00000015
MOD: CM_CCR (48004d00)
  00 => 00770007  04 => 00000011  20 => 00000003  30 => 00000001
  34 => 00000001  40 => 08a60500  44 => 0000d805  48 => 00000009
  4c => 00003204  50 => 00000001  70 => 00000092
MOD: CM_DSS (48004e00)
  20 => 00000003  30 => 00000001  40 => 00001009  48 => 00000003
MOD: CM_CAM (48004f00)
  20 => 00000001  30 => 00000001  40 => 00000004  48 => 00000003
MOD: CM_PER (48005000)
  10 => 0003e000  20 => 00001fff  30 => 0003ffff  40 => 000000ff
  44 => 00000006  48 => 00000003  4c => 00000001
MOD: CM_EMU (48005100)
  40 => 03020a50  48 => 00000001
MOD: CM_NEON (48005300)
  48 => 00000003
MOD: CM_USB (48005400)
  20 => 00000003  30 => 00000001  48 => 00000003
MOD: PRM_IVA2 (48316000)
  50 => 00000007  e0 => 00ff0f04  f8 => 00000002
MOD: PRM_OCP (48306800)
  04 => 00000010  14 => 00000001  18 => 00000010  1c => 00000201
MOD: PRM_MPU (48306900)
  58 => 0000000c  d4 => 00000012  e0 => 00030104  e4 => 000000c7
  e8 => 000000c7
MOD: PRM_CORE (48306a00)
  58 => 00000304  a0 => c33f9e18  a4 => c33ffe18  e0 => 000f0314
  e4 => 000000f7  e8 => 000000f7  f0 => 00000004  f8 => 00000004
MOD: PRM_SGX (48306b00)

MOD: PRM_WKUP (48306c00)
  a0 => 0001010b  a4 => 0000010b  b0 => 00010000
MOD: PRM_CCR (48306d00)
  70 => 00000080
MOD: PRM_DSS (48306e00)
  a0 => 00000001  e0 => 00030104
MOD: PRM_CAM (48306f00)
  e0 => 00030104
MOD: PRM_PER (48307000)
  58 => 0000000c  a0 => 0003e007  a4 => 0003e807  c8 => 00000006
  e0 => 00030104  e4 => 00000007  e8 => 00000007
MOD: PRM_EMU (48307100)
  58 => 00000004  e4 => 00000100
MOD: PRM_GLBL (48307200)
  38 => 00000018  54 => 00001006  58 => 00000001  60 => 0000000c
  64 => 00000050  70 => 00000049  9c => 00000002  c4 => 00000001
  e4 => 00000001
MOD: PRM_NEON (48307300)
  58 => 0000000c  c8 => 00000002  e0 => 00000004  e4 => 00000003
  e8 => 00000003
MOD: PRM_USB (48307400)
  58 => 00000008  a0 => 00000001  a4 => 00000001  a8 => 00000001
  e0 => 00030104
root@spark:/debug/pm_debug$ cat registers/2
MOD: CM_IVA2 (48014000)
  04 => 00000011  20 => 00000001  40 => 00080000  44 => 00000001
MOD: CM_OCP (48004800)
  00 => 00000010  10 => 00000001
MOD: CM_MPU (48004900)
  04 => 00000077  24 => 00000001  34 => 00000001  40 => 0010fa05
  44 => 00000001  4c => 00000001
MOD: CM_CORE (48004a00)
  10 => 0000004a  20 => ffffffbd  24 => 0000001f  28 => 0000000d
  30 => 00000008  40 => 0000030a  4c => 00000003
MOD: CM_SGX (48004b00)

MOD: CM_WKUP (48004c00)
  20 => 000002ff  40 => 00000015
MOD: CM_CCR (48004d00)
  00 => 00770007  04 => 00000011  20 => 00000003  30 => 00000001
  40 => 08a60500  44 => 0000d805  48 => 00000009  50 => 00000001
  70 => 00000003
MOD: CM_DSS (48004e00)
  20 => 00000003  40 => 00001010
MOD: CM_CAM (48004f00)
  20 => 00000001  40 => 00000010
MOD: CM_PER (48005000)
  20 => 0003ffff
MOD: CM_EMU (48005100)
  40 => 10100a50  48 => 00000002  4c => 00000001
MOD: CM_NEON (48005300)

MOD: CM_USB (48005400)
  20 => 00000003
MOD: PRM_IVA2 (48316000)
  50 => 00000007  e0 => 00ff0f04  f8 => 00000002
MOD: PRM_OCP (48306800)
  04 => 00000010  14 => 00000001  18 => 00000210  1c => 00000201
MOD: PRM_MPU (48306900)
  58 => 0000000c  d4 => 00000012  e0 => 00030104  e4 => 000000c7
MOD: PRM_CORE (48306a00)
  58 => 00000304  a0 => c33f9e18  a4 => c33ffe18  e0 => 000f0314
  e4 => 000000f7  f0 => 00000004  f8 => 00000004
MOD: PRM_SGX (48306b00)

MOD: PRM_WKUP (48306c00)
  a0 => 0000010b  a4 => 0000010b  b0 => 00010100
MOD: PRM_CCR (48306d00)
  70 => 00000080
MOD: PRM_DSS (48306e00)
  a0 => 00000001  e0 => 00030104
MOD: PRM_CAM (48306f00)
  e0 => 00030104
MOD: PRM_PER (48307000)
  58 => 0000000c  a0 => 0003e007  a4 => 0003e807  c8 => 00000006
  e0 => 00030104
MOD: PRM_EMU (48307100)
  58 => 00000004  e4 => 00000103
MOD: PRM_GLBL (48307200)
  38 => 00000018  54 => 00001006  58 => 00000001  60 => 0000000c
  64 => 00000050  70 => 00000049  9c => 00000002  c4 => 00000001
  e4 => 00000001
MOD: PRM_NEON (48307300)
  58 => 0000000c  c8 => 00000002  e0 => 00000004  e4 => 00000003
MOD: PRM_USB (48307400)
  58 => 00000008  a0 => 00000001  a4 => 00000001  a8 => 00000001
  e0 => 00030104
root@spark:/debug/pm_debug$ cat registers/current
MOD: CM_IVA2 (48014000)
  04 => 00000011  20 => 00000001  34 => 00000001  40 => 00080000
  44 => 00000001  48 => 00000003
MOD: CM_OCP (48004800)
  00 => 00000010  10 => 00000001
MOD: CM_MPU (48004900)
  04 => 00000077  24 => 00000001  34 => 00000001  40 => 0010fa05
  44 => 00000001  48 => 00000003  4c => 00000001
MOD: CM_CORE (48004a00)
  00 => 00006000  10 => 00006042  20 => ffff9fbd  24 => 0000001f
  28 => 0000000d  30 => fffffed9  34 => 0000001f  38 => 0000000c
  40 => 0000030a  48 => 0000003f  4c => 00000003
MOD: CM_SGX (48004b00)

MOD: CM_WKUP (48004c00)
  10 => 0000000e  20 => 000002f1  30 => 0000003f  40 => 00000015
MOD: CM_CCR (48004d00)
  00 => 00770007  04 => 00000011  20 => 0000020b  30 => 00000001
  34 => 00000001  40 => 08a60500  44 => 0000d805  48 => 00000009
  4c => 00003204  50 => 00000001  70 => 00000092
MOD: CM_DSS (48004e00)
  20 => 00000003  30 => 00000001  40 => 00001009  48 => 00000003
MOD: CM_CAM (48004f00)
  20 => 00000001  30 => 00000001  40 => 00000004  48 => 00000003
MOD: CM_PER (48005000)
  00 => 00000800  10 => 0003e800  20 => 000017ff  30 => 0003ffff
  40 => 000000ff  44 => 00000006  48 => 00000003  4c => 00000001
MOD: CM_EMU (48005100)
  40 => 03020a50  48 => 00000001
MOD: CM_NEON (48005300)
  48 => 00000003
MOD: CM_USB (48005400)
  20 => 00000003  30 => 00000001  48 => 00000003
MOD: PRM_IVA2 (48316000)
  50 => 00000007  e0 => 00ff0f04  f8 => 00000002
MOD: PRM_OCP (48306800)
  04 => 00000010  14 => 00000001  18 => 00000010  1c => 00000201
MOD: PRM_MPU (48306900)
  58 => 0000000c  d4 => 00000012  e0 => 00030104  e4 => 000000c7
MOD: PRM_CORE (48306a00)
  58 => 00000304  a0 => c33f9e18  a4 => c33ffe18  e0 => 000f0314
  e4 => 000000f7  f0 => 00000004  f8 => 00000004
MOD: PRM_SGX (48306b00)

MOD: PRM_WKUP (48306c00)
  a0 => 0000000b  a4 => 0000010b
MOD: PRM_CCR (48306d00)
  70 => 00000080
MOD: PRM_DSS (48306e00)
  a0 => 00000001  e0 => 00030104
MOD: PRM_CAM (48306f00)
  e0 => 00030104
MOD: PRM_PER (48307000)
  58 => 0000000c  a0 => 0003e007  a4 => 0003e807  c8 => 00000006
  e0 => 00030104  e4 => 00000007
MOD: PRM_EMU (48307100)
  58 => 00000004  e4 => 00000100
MOD: PRM_GLBL (48307200)
  38 => 00000018  54 => 00001006  58 => 00000001  60 => 0000000c
  64 => 00000050  70 => 00000049  9c => 00000002  c4 => 00000001
  e4 => 00000001
MOD: PRM_NEON (48307300)
  58 => 0000000c  c8 => 00000002  e0 => 00000004  e4 => 00000003
MOD: PRM_USB (48307400)
  58 => 00000008  a0 => 00000001  a4 => 00000001  a8 => 00000001
  e0 => 00030104
root@spark:/debug/pm_debug$ cat count
usbhost_pwrdm (OFF),OFF:1,RET:1,INA:0,ON:1,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0
sgx_pwrdm (OFF),OFF:1,RET:0,INA:0,ON:0,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0
per_pwrdm (ON),OFF:3,RET:0,INA:0,ON:4,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0
dss_pwrdm (OFF),OFF:1,RET:1,INA:0,ON:1,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0
cam_pwrdm (OFF),OFF:1,RET:1,INA:0,ON:1,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0
core_pwrdm (ON),OFF:3,RET:0,INA:0,ON:4,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0,RET-MEMBANK2-OFF:0
neon_pwrdm (ON),OFF:3,RET:0,INA:0,ON:4,RET-LOGIC-OFF:0
mpu_pwrdm (ON),OFF:3,RET:0,INA:0,ON:4,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0
iva2_pwrdm (OFF),OFF:1,RET:1,INA:0,ON:1,RET-LOGIC-OFF:0,RET-MEMBANK1-OFF:0,RET-MEMBANK2-OFF:0,RET-MEMBANK3-OFF:0,RET-MEMBANK4-OFF:0
per_clkdm->per_pwrdm (9)
usbhost_clkdm->usbhost_pwrdm (0)
cam_clkdm->cam_pwrdm (0)
dss_clkdm->dss_pwrdm (0)
core_l4_clkdm->core_pwrdm (7)
core_l3_clkdm->core_pwrdm (4)
d2d_clkdm->core_pwrdm (0)
sgx_clkdm->sgx_pwrdm (0)
iva2_clkdm->iva2_pwrdm (0)
neon_clkdm->neon_pwrdm (0)
mpu_clkdm->mpu_pwrdm (0)
prm_clkdm->wkup_pwrdm (0)
cm_clkdm->core_pwrdm (0)

Thanks,
-- 
Laine Walker-Avina
Firmware Engineer
PASCO scientific
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux