We have an issue with suspend/resume on an AM3703+TPS65950 custom board. The board is running a Windows CE6 BSP based on the 6.15 release. The board suspends correctly the first time CE is put into suspend but fails to power down on subsequent suspends (SYS_OFF_MODE is not being asserted by the OMAP).
The same issue is seen on the OMAP EVM with DM3730 module running the 6.15 BSP so the problem is not unique to the AM3703 board. The issue is *not* seen on the EVM with the unified ARM-A8 BSP so there is a fix for this issue in there somewhere. Any idea what the fix is?
What could be preventing the OMAP asserting SYS_OFF_MODE?
I've checked the AM3703 errata and there were a few issues that may have been relevant (Advisories 1.83, 1.85, 1.106) but these do not appear to the cause.
Enabling the PRCM debug code in the BSP shows no obvious reasons why the OMAP would not go into sleep mode - log below.
One option would be to move to the unified BSP on the AM3703 board but this will take a lot of merge effort and validation. We would prefer to fix the issue in the exsiting BSP if possible.
Any ideas?
Thanks,
Mike Wyatt
MPC Data Limited, a BSQUARE Company
------
Power Off Called
Enabled wake sources:
SYSINTR 20
Wake due to SYSINTR 20
OALWakeupLatency Saved Snapshot::
Saved Non-Zero Interrupt Latency Device Enabled Counts:
Saved suspend state: 0 = LATENCY_STATE_CHIP_OFF, CORE+MPU+OTHER = OFF
Saved Information Prior to Suspend::
Saved VDD ref counts:
kVDD_EXT 1
Saved DPLL ref counts:
kDPLL_EXT 1
Saved DPLL CLKOUT ref counts:
kEXT_32KHZ 1
Saved SRC CLOCK ref counts:
k32K_FCLK 2
kWKUP_32K_FCLK 1
kPER_32K_ALWON_FCLK 5
Saved device ICLK ref counts:
Saved PRCM Device ICLK RefCount OMAP_DEVICE_SDRC = 1
Saved PRCM Device ICLK RefCount OMAP_DEVICE_OMAPCTRL = 1
Saved PRCM Device ICLK RefCount OMAP_DEVICE_32KSYNC = 1
Saved PRCM Device ICLK RefCount OMAP_DEVICE_GPIO1 = 1
Saved PRCM Device ICLK RefCount OMAP_DEVICE_GPIO2 = 1
Saved PRCM Device ICLK RefCount OMAP_DEVICE_GPIO3 = 1
Saved PRCM Device ICLK RefCount OMAP_DEVICE_GPIO4 = 1
Saved PRCM Device ICLK RefCount OMAP_DEVICE_GPIO5 = 1
Saved PRCM Device ICLK RefCount OMAP_DEVICE_GPIO6 = 1
Saved PRCM Device ICLK RefCount OMAP_DEVICE_VRFB = 1
Saved PRCM Device ICLK RefCount OMAP_DEVICE_GENERIC = -382910224
Saved device FCLK ref counts:
Saved PRCM Device FCLK RefCount OMAP_DEVICE_GPIO1 = 1
Saved PRCM Device FCLK RefCount OMAP_DEVICE_GPIO2 = 1
Saved PRCM Device FCLK RefCount OMAP_DEVICE_GPIO3 = 1
Saved PRCM Device FCLK RefCount OMAP_DEVICE_GPIO4 = 1
Saved PRCM Device FCLK RefCount OMAP_DEVICE_GPIO5 = 1
Saved PRCM Device FCLK RefCount OMAP_DEVICE_GPIO6 = 1
Saved PRCM Device FCLK RefCount OMAP_DEVICE_GENERIC = -382909456
Saved Domain RefCounts:
Saved Domain RefCount POWERDOMAIN_WAKEUP = 1
Saved Domain RefCount POWERDOMAIN_PERIPHERAL = 5
IVA2_CM:
CM_FCLKEN_IVA2 0x00000000
CM_CLKEN_PLL_IVA2 0x0000021f
CM_IDLEST_IVA2 0x00000001
CM_IDLEST_PLL_IVA2 0x00000000
CM_AUTOIDLE_PLL_IVA2 0x00000001
CM_CLKSEL1_PLL_IVA2 0x0021b50c
CM_CLKSEL2_PLL_IVA2 0x00000001
CM_CLKSTCTRL_IVA2 0x00000003
CM_CLKSTST_IVA2 0x00000000
OCP_System_Reg_CM:
CM_REVISION 0x00000010
CM_SYSCONFIG 0x00000001
MPU_CM:
CM_CLKEN_PLL_MPU 0x0000021f
CM_IDLEST_MPU 0x00000000
CM_IDLEST_PLL_MPU 0x00000001
CM_AUTOIDLE_PLL_MPU 0x00000001
CM_CLKSEL1_PLL_MPU 0x0011f40c
CM_CLKSEL2_PLL_MPU 0x00000001
CM_CLKSTCTRL_MPU 0x00000003
CM_CLKSTST_MPU 0x00000001
CORE_CM:
CM_FCLKEN1_CORE 0x00000000
CM_FCLKEN3_CORE 0x00000000
CM_ICLKEN1_CORE 0x0000004a
CM_ICLKEN2_CORE 0x00000000
CM_ICLKEN3_CORE 0x00000000
CM_IDLEST1_CORE 0xffffffbd
CM_IDLEST2_CORE 0x0000001f
CM_IDLEST3_CORE 0x0000000d
CM_AUTOIDLE1_CORE 0x7ffffed1
CM_AUTOIDLE2_CORE 0x0000001f
CM_AUTOIDLE3_CORE 0x00000004
CM_CLKSEL_CORE 0x0000130a
CM_CLKSTCTRL_CORE 0x0000003f
CM_CLKSTST_CORE 0x00000003
SGX_CM:
CM_FCLKEN_SGX 0x00000000
CM_ICLKEN_SGX 0x00000000
CM_IDLEST_SGX 0x00000000
CM_CLKSEL_SGX 0x00000000
CM_SLEEPDEP_SGX 0x00000000
CM_CLKSTCTRL_SGX 0x00000000
CM_CLKSTST_SGX 0x00000000
WKUP_CM:
CM_FCLKEN_WKUP 0x00000008
CM_ICLKEN_WKUP 0x0000000c
CM_IDLEST_WKUP 0x000002f3
CM_AUTOIDLE_WKUP 0x0000003f
CM_CLKSEL_WKUP 0x00000014
Clock_Control_Reg_CM:
CM_CLKEN_PLL 0x001f001f
CM_CLKEN2_PLL 0x0000001f
CM_IDLEST_CKGEN 0x00000001
CM_IDLEST2_CKGEN 0x00000000
CM_AUTOIDLE_PLL 0x00000009
CM_AUTOIDLE2_PLL 0x00000001
CM_CLKSEL1_PLL 0x08a60c00
CM_CLKSEL2_PLL 0x0481b00c
CM_CLKSEL3_PLL 0x00000009
CM_CLKSEL4_PLL 0x00003c0c
CM_CLKSEL5_PLL 0x00000001
CM_CLKOUT_CTRL 0x00000003
DSS_CM:
CM_FCLKEN_DSS 0x00000000
CM_ICLKEN_DSS 0x00000000
CM_IDLEST_DSS 0x00000003
CM_AUTOIDLE_DSS 0x00000001
CM_CLKSEL_DSS 0x00001009
CM_SLEEPDEP_DSS 0x00000000
CM_CLKSTCTRL_DSS 0x00000003
CM_CLKSTST_DSS 0x00000000
CAM_CM:
CM_FCLKEN_CAM 0x00000000
CM_ICLKEN_CAM 0x00000000
CM_IDLEST_CAM 0x00000001
CM_AUTOIDLE_CAM 0x00000000
CM_CLKSEL_CAM 0x00000004
CM_SLEEPDEP_CAM 0x00000000
CM_CLKSTCTRL_CAM 0x00000003
CM_CLKSTST_CAM 0x00000000
PER_CM:
CM_FCLKEN_PER 0x00000000
CM_ICLKEN_PER 0x00000000
CM_IDLEST_PER 0x0007ffff
CM_AUTOIDLE_PER 0x0003e808
CM_CLKSEL_PER 0x00000000
CM_SLEEPDEP_PER 0x00000002
CM_CLKSTCTRL_PER 0x00000003
CM_CLKSTST_PER 0x00000001
EMU_CM:
CM_CLKSEL1_EMU 0x03020a50
CM_CLKSTCTRL_EMU 0x00000003
CM_CLKSTST_EMU 0x00000000
CM_CLKSEL2_EMU 0x00000000
CM_CLKSEL3_EMU 0x00000000
Global_Reg_CM:
CM_POLCTRL 0x00000000
NEON_CM:
CM_IDLEST_NEON 0x00000000
CM_CLKSTCTRL_NEON 0x00000003
USBHOST_CM:
CM_FCLKEN_USBHOST 0x00000000
CM_ICLKEN_USBHOST 0x00000000
CM_IDLEST_USBHOST 0x00000003
CM_AUTOIDLE_USBHOST 0x00000000
CM_SLEEPDEP_USBHOST 0x00000000
CM_CLKSTCTRL_USBHOST 0x00000003
CM_CLKSTST_USBHOST 0x00000000
IVA2_PRM:
RM_RSTCTRL_IVA2 0x00000007
RM_RSTST_IVA2 0x00000000
PM_WKDEP_IVA2 0x00000000
PM_PWSTCTRL_IVA2 0x00ff0f04
PM_PWSTST_IVA2 0x00000000
PM_PREPWSTST_IVA2 0x00000000
PRM_IRQSTATUS_IVA2 0x00000000
PRM_IRQENABLE_IVA2 0x00000000
OCP_System_Reg_PRM:
PRM_REVISION 0x00000010
PRM_SYSCONFIG 0x00000001
PRM_IRQSTATUS_MPU 0x00000011
PRM_IRQENABLE_MPU 0x01c926a0
MPU_PRM:
RM_RSTST_MPU 0x00000000
PM_WKDEP_MPU 0x00000000
PM_EVGENCTRL_MPU 0x00000012
PM_EVGENONTIM_MPU 0x00000000
PM_EVGENOFFTIM_MPU 0x00000000
PM_PWSTCTRL_MPU 0x00030104
PM_PWSTST_MPU 0x000000c7
PM_PREPWSTST_MPU 0x000000c7
CORE_PRM:
RM_RSTST_CORE 0x00000000
PM_WKEN1_CORE 0x00000000
PM_MPUGRPSEL1_CORE 0xc33ffe18
PM_IVA2GRPSEL1_CORE 0xc33ffe18
PM_WKST1_CORE 0x00000000
PM_WKST3_CORE 0x00000000
PM_PWSTCTRL_CORE 0x000f0300
PM_PWSTST_CORE 0x000000f7
PM_PREPWSTST_CORE 0x000000f7
PM_WKEN3_CORE 0x00000000
PM_IVA2GRPSEL3_CORE 0x00000004
PM_MPUGRPSEL3_CORE 0x00000004
SGX_PRM:
RM_RSTST_SGX 0x00000000
PM_WKDEP_SGX 0x00000000
PM_PWSTCTRL_SGX 0x00000000
PM_PWSTST_SGX 0x00000000
PM_PREPWSTST_SGX 0x00000000
WKUP_PRM:
PM_WKEN_WKUP 0x0000010a
PM_MPUGRPSEL_WKUP 0x000003cb
PM_IVA2GRPSEL_WKUP 0x00000000
PM_WKST_WKUP 0x00000000
Clock_Control_Reg_PRM:
PRM_CLKSEL 0x00000003
PRM_CLKOUT_CTRL 0x00000080
DSS_PRM:
RM_RSTST_DSS 0x0000000c
PM_WKEN_DSS 0x00000000
PM_WKDEP_DSS 0x00000000
PM_PWSTCTRL_DSS 0x00030104
PM_PWSTST_DSS 0x00000000
PM_PREPWSTST_DSS 0x00000000
CAM_PRM:
RM_RSTST_CAM 0x00000000
PM_WKDEP_CAM 0x00000000
PM_PWSTCTRL_CAM 0x00030104
PM_PWSTST_CAM 0x00000000
PM_PREPWSTST_CAM 0x00000000
PER_PRM:
RM_RSTST_PER 0x00000000
PM_WKEN_PER 0x0003e000
PM_MPUGRPSEL_PER 0x0003efff
PM_IVA2GRPSEL_PER 0x0007efff
PM_WKST_PER 0x00000000
PM_WKDEP_PER 0x00000012
PM_PWSTCTRL_PER 0x00030104
PM_PWSTST_PER 0x00000007
PM_PREPWSTST_PER 0x00000007
EMU_PRM:
RM_RSTST_EMU 0x00000000
PM_PWSTST_EMU 0x00000000
Global_Reg_PRM:
PRM_VC_SMPS_SA 0x00120012
PRM_VC_SMPS_VOL_RA 0x00010000
PRM_VC_SMPS_CMD_RA 0x00000000
PRM_VC_CMD_VAL_0 0x39202000
PRM_VC_CMD_VAL_1 0x2b202000
PRM_VC_CH_CONF 0x00170000
PRM_VC_I2C_CFG 0x00000005
PRM_VC_BYPASS_VAL 0x00000000
PRM_RSTCTRL 0x00000000
PRM_RSTTIME 0x00001006
PRM_RSTST 0x00000000
PRM_VOLTCTRL 0x0000000c
PRM_SRAM_PCHARGE 0x00000050
PRM_CLKSRC_CTRL 0x00000050
PRM_OBS 0x00000000
PRM_VOLTSETUP1 0x01120112
PRM_VOLTOFFSET 0x00000000
PRM_CLKSETUP 0x000000a0
PRM_POLCTRL 0x00000002
PRM_VOLTSETUP2 0x00000000
NEON_PRM:
RM_RSTST_NEON 0x00000000
PM_WKDEP_NEON 0x00000002
PM_PWSTCTRL_NEON 0x00000004
PM_PWSTST_NEON 0x00000003
PM_PREPWSTST_NEON 0x00000003
USBHOST_PRM:
RM_RSTST_USBHOST 0x00000000
PM_WKEN_USBHOST 0x00000000
PM_MPUGRPSEL_USBHOST 0x00000001
PM_IVA2GRPSEL_USBHOST 0x00000001
PM_WKST_USBHOST 0x00000000
PM_WKDEP_USBHOST 0x00000000
PM_PWSTCTRL_USBHOST 0x00030104
PM_PWSTST_USBHOST 0x00000000
PM_PREPWSTST_USBHOST 0x00000000