I have a problem with LPM module on the OMAP3530 processor. I can't set the DSP to sleep/hibernate and then wake/resume without rebooting the system. After calling LPM Hibernate I am able to verify, that the DSP is off by the power draw change. I am running a 2.6.22 linux kernel and use the following kernel modules: dsplink 1.61.03, lpm 2.23.01, cmem 2.23.01
Here is what LPM operations that I am running:
1) LPM Open
2) LPM On
3) LPM Connect <- Returns Erorr
4) LPM Hibernate <- Returns Error
5) LPM Resume <- Returns Error
6) LPM Disconnect <- Returns Error
7) LPM Off
Trace:
[ 13.984375] cmem initialized 8 pools between 0x8cc00000 and 0x8ec00000
[ 14.351562] DSPLINK Module (1.61.03) created on Date: Jul 29 2010 Time: 12:07:26
[ 14.429687] --> lpm_init
[ 14.429687] --> LPM_init
[ 14.437500] LPM_init: os_remap pa = 0x48002000, va = 0xCD02C000
[ 14.445312] LPM_init: os_remap pa = 0x48004000, va = 0xCD02E000
[ 14.445312] LPM_init: os_remap pa = 0x48306000, va = 0xCD030000
[ 14.453125] LPM_init: os_remap pa = 0x5D000000, va = 0xCD032000
[ 14.460937] Control Revision: 0x10
[ 14.468750] <-- LPM_init: stat = 0x0
[ 14.484375] <-- lpm_init
1) LPM Open
[ 32.718750] --> lpm_open
[ 32.726562] <-- lpm_open
2) LPM On
[ 32.726562] --> lpm_ioctl, cmd: 0x10001003
[ 32.734375] ioctl: ON, args = 0x3
[ 32.734375] ref = 1
[ 32.734375] --> LPM_on
[ 32.742187] lpm.ko: --> LPM_off
[ 32.742187] lpm.ko: <-- LPM_off: stat = 0x0
[ 32.750000] <-- LPM_on: stat = 0x0
[ 32.750000] <-- lpm_ioctl
3) LPM Connect
[ 32.757812] --> lpm_ioctl, cmd: 0x10001000
[ 32.757812] ioctl: CONNECT
[ 32.765625] --> LPM_connect
[ 32.765625] calling TAL_open
[ 32.765625] calling TAL_registerEvents
[ 32.773437] Error: TAL_registerEvents failed (0x1)
[ 32.773437] <-- LPM_connect: stat = 0x1
[ 32.781250] <-- lpm_ioctl
4) LPM Hibernate
[ 33.781250] --> lpm_ioctl, cmd: 0x10001005
[ 33.789062] ioctl: SETPOWERSTATE, args = 0x402001
[ 33.796875] --> LPM_setPowerState: state = 0x402001
[ 33.796875] calling TAL_changeState
[ 33.804687] TAL_changeState failed (0x1)
[ 33.804687] <-- LPM_setPowerState: stat = 0x1
[ 33.812500] <-- lpm_ioctl
5) LPM Resume
[ 34.812500] --> lpm_ioctl, cmd: 0x10001004
[ 34.820312] ioctl: RESUME
[ 34.820312] --> LPM_resume
[ 34.828125] calling TAL_sendEvent(PWRM_SH_RESUME)
[ 34.828125] TAL_sendEvent failed (0x1)
[ 34.835937] <-- LPM_resume: stat = 0x1
[ 34.835937] <-- lpm_ioctl
6) LPM Disconnect
[ 34.843750] --> lpm_ioctl, cmd: 0x10001001
[ 34.843750] ioctl: DISCONNECT
[ 34.843750] + LPM_disconnect
[ 34.851562] LPM_disconnect: Error: LPM not in connected state
[ 34.859375] - LPM_disconnect: stat = 0x1
[ 34.859375] <-- lpm_ioctl
7) LPM Off
[ 34.867187] --> lpm_release
[ 34.867187] ref = 0
[ 34.867187] lpm.ko: --> LPM_off
[ 34.875000] lpm.ko: <-- LPM_off: stat = 0x0
[ 34.875000] <-- lpm_release
Has anyone been able to hibernate then resume the DSP before?