We have a DM37xx platform with TPS65960 for which we are trying to get Suspend/Resume working to the point where SYS_OFF_MODE goes high and the TPS69650 then receives the signal on the nSLEEP1 pin, and turns off the clock and voltage rails. Essentially, we are trying to get Mode 7 in Table 4-14 of the DM37xx Technical Reference.
Using Adeneo's BSP, we can enter a sleep mode, but SYS_OFF_MODE pin never goes active. We've verified the polarity (in PRM_POLCTRL, ensured SEL_OFF and AUTO_OFF are selected in PRM_VOLTCTRL, then run through the CPU Idle assembly code up to the WFI instruction, per step 1 of 4.4.3.2 in DM37xx Technical Reference. The MUXMODE of this pin is also set correctly to the best of our knowledge.
When we do so, we monitor SYS_OFF_MODE, but it never goes high. There is a statement in 3.5.7.4.1.1, Step 2, that says, "When all sleep conditions are met, all domain clocks are shutdown. At this stage, all output pads are inactive and static."
Precisely what is meant by "all sleep conditions are met"? At the time we call the CPU Idle, values stored in all the key registers are captured (based on debug code within the BSP), then printed upon resuming. We are trying to identify what conditions are not met, and thus preventing the system from going into a proper sleep mode.
On a related note, when we do successfully suspend, is there an easy way to determine which of the modes in Table 4-14 we have actually enterred?
Any guidance that can be provided will be very helpful. Thanks!
Enabled wake sources:
SYSINTR 20
SYSINTR 31
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_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 0x0000020f
CM_IDLEST_IVA2 0x00000001
CM_IDLEST_PLL_IVA2 0x00000001
CM_AUTOIDLE_PLL_IVA2 0x00000001
CM_CLKSEL1_PLL_IVA2 0x00114a0c
CM_CLKSEL2_PLL_IVA2 0x00000001
CM_CLKSTCTRL_IVA2 0x00000003
CM_CLKSTST_IVA2 0x00000001
OCP_System_Reg_CM:
CM_REVISION 0x00000010
CM_SYSCONFIG 0x00000001
MPU_CM:
CM_CLKEN_PLL_MPU 0x0000027f
CM_IDLEST_MPU 0x00000000
CM_IDLEST_PLL_MPU 0x00000001
CM_AUTOIDLE_PLL_MPU 0x00000001
CM_CLKSEL1_PLL_MPU 0x0011900c
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 0x00000042
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 0x00000001
CM_CLKSEL_SGX 0x00000005
CM_SLEEPDEP_SGX 0x00000000
CM_CLKSTCTRL_SGX 0x00000003
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 0x007f000f
CM_CLKEN2_PLL 0x0000000f
CM_IDLEST_CKGEN 0x00000001
CM_IDLEST2_CKGEN 0x00000000
CM_AUTOIDLE_PLL 0x00000009
CM_AUTOIDLE2_PLL 0x00000001
CM_CLKSEL1_PLL 0x08c80c00
CM_CLKSEL2_PLL 0x0483600c
CM_CLKSEL3_PLL 0x00000009
CM_CLKSEL4_PLL 0x0000780c
CM_CLKSEL5_PLL 0x00000001
CM_CLKOUT_CTRL 0x00000003
DSS_CM:
CM_FCLKEN_DSS 0x00000000
CM_ICLKEN_DSS 0x00000000
CM_IDLEST_DSS 0x00000002
CM_AUTOIDLE_DSS 0x00000001
CM_CLKSEL_DSS 0x00001009
CM_SLEEPDEP_DSS 0x00000000
CM_CLKSTCTRL_DSS 0x00000003
CM_CLKSTST_DSS 0x00000001
CAM_CM:
CM_FCLKEN_CAM 0x00000000
CM_ICLKEN_CAM 0x00000000
CM_IDLEST_CAM 0x00000001
CM_AUTOIDLE_CAM 0x00000001
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 0x0007ffff
CM_CLKSEL_PER 0x00000001
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 0x00000001
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 0x00000ff7
PM_PREPWSTST_IVA2 0x00000ff7
PRM_IRQSTATUS_IVA2 0x00000000
PRM_IRQENABLE_IVA2 0x00000000
OCP_System_Reg_PRM:
PRM_REVISION 0x00000010
PRM_SYSCONFIG 0x00000001
PRM_IRQSTATUS_MPU 0x00000010
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 0x000f0310
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 0x00000004
PM_WKDEP_SGX 0x00000000
PM_PWSTCTRL_SGX 0x00030104
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 0x00000004
PM_WKEN_DSS 0x00000000
PM_WKDEP_DSS 0x00000000
PM_PWSTCTRL_DSS 0x00030104
PM_PWSTST_DSS 0x00000003
PM_PREPWSTST_DSS 0x00000003
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 0x00000000
PRM_VC_SMPS_VOL_RA 0x00000000
PRM_VC_SMPS_CMD_RA 0x00000000
PRM_VC_CMD_VAL_0 0x00000000
PRM_VC_CMD_VAL_1 0x00000000
PRM_VC_CH_CONF 0x00000000
PRM_VC_I2C_CFG 0x00000018
PRM_VC_BYPASS_VAL 0x00000000
PRM_RSTCTRL 0x00000000
PRM_RSTTIME 0x00001006
PRM_RSTST 0x00000000
PRM_VOLTCTRL 0x0000000c
PRM_SRAM_PCHARGE 0x00000050
PRM_CLKSRC_CTRL 0x00000091
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 0x00000004
PM_WKEN_USBHOST 0x00000000
PM_MPUGRPSEL_USBHOST 0x00000001
PM_IVA2GRPSEL_USBHOST 0x00000001
PM_WKST_USBHOST 0x00000000
PM_WKDEP_USBHOST 0x00000000
PM_PWSTCTRL_USBHOST 0x00030114
PM_PWSTST_USBHOST 0x00000000
PM_PREPWSTST_USBHOST 0x00000000