I am having and issue with the high speed USB host (EHCI) not recovering after a suspend/resume operation.
The following is a dump of important registers just before entering suspend (off power down):
CM_FCLKEN3_CORE (0xd03a4a08) 0x4 CM_ICLKEN3_CORE (0xd03a4a18) 0x4 CM_AUTOIDLE3_CORE (0xd03a4a38) 0x4 CM_FCLKEN_USBHOST (0xd03a5400) 0x3 CM_ICLKEN_USBHOST (0xd03a5410) 0x1 CM_IDLEST_USBHOST (0xd03a5420) 0x0 CM_AUTOIDLE_USBHOST (0xd03a5430) 0x1 CM_SLEEPDEP_USBHOST (0xd03a5444) 0x6 CM_CLKSTCTRL_USBHOST (0xd03a5448) 0x3 CM_CLKSTST_USBHOST (0xd03a544c) 0x1 RM_RSTST_USBHOST (0xd06a7458) 0x4 PM_WKEN_USBHOST (0xd06a74a0) 0x1 PM_MPUGRPSEL_USBHOST (0xd06a74a4) 0x1 PM_IVA2GRPSEL_USBHOST (0xd06a74a8) 0x1 PM_WKST_USBHOST (0xd06a74b0) 0x0 PM_WKDEP_USBHOST (0xd06a74c8) 0x2 PM_PWSTCTRL_USBHOST (0xd06a74e0) 0x30104 PM_PWSTST_USBHOST (0xd06a74e4) 0x3 PM_PREPWSTST_USBHOST (0xd06a74e8) 0x3 CM_CLKEN_PLL (0xd03a4d00) 0x7f007f CM_CLKEN2_PLL (0xd03a4d04) 0x7f CM_IDLEST_CKGEN (0xd03a4d20) 0x20b CM_IDLEST2_CKGEN (0xd03a4d24) 0xb CM_AUTOIDLE_PLL (0xd03a4d30) 0x9 CM_AUTOIDLE2_PLL (0xd03a4d34) 0x1 CM_CLKSEL1_PLL (0xd03a4d40) 0x8a60c00 CM_CLKSEL2_PLL (0xd03a4d44) 0xd80c CM_CLKSEL3_PLL (0xd03a4d48) 0x9 CM_CLKSEL4_PLL (0xd03a4d4c) 0x3c0c CM_CLKSEL5_PLL (0xd03a4d50) 0x1 CM_CLKOUT_CTRL (0xd03a4d70) 0x3 UHH SYSCONFIG (0xd0404010) 0x110c UHH SYSSTATUS (0xd0404014) 0x7 UHH HOSTCONFIG (0xd0404040) 0x1c
After power up resume (on power up) they look like:
CM_FCLKEN3_CORE (0xd03a4a08) 0x4 CM_ICLKEN3_CORE (0xd03a4a18) 0x4 CM_AUTOIDLE3_CORE (0xd03a4a38) 0x4 CM_FCLKEN_USBHOST (0xd03a5400) 0x3 CM_ICLKEN_USBHOST (0xd03a5410) 0x1 CM_IDLEST_USBHOST (0xd03a5420) 0x2 CM_AUTOIDLE_USBHOST (0xd03a5430) 0x1 CM_SLEEPDEP_USBHOST (0xd03a5444) 0x6 CM_CLKSTCTRL_USBHOST (0xd03a5448) 0x3 CM_CLKSTST_USBHOST (0xd03a544c) 0x1 RM_RSTST_USBHOST (0xd06a7458) 0x4 PM_WKEN_USBHOST (0xd06a74a0) 0x1 PM_MPUGRPSEL_USBHOST (0xd06a74a4) 0x1 PM_IVA2GRPSEL_USBHOST (0xd06a74a8) 0x1 PM_WKST_USBHOST (0xd06a74b0) 0x0 PM_WKDEP_USBHOST (0xd06a74c8) 0x2 PM_PWSTCTRL_USBHOST (0xd06a74e0) 0x30104 PM_PWSTST_USBHOST (0xd06a74e4) 0x3 PM_PREPWSTST_USBHOST (0xd06a74e8) 0x3 CM_CLKEN_PLL (0xd03a4d00) 0x7f007f CM_CLKEN2_PLL (0xd03a4d04) 0x7f CM_IDLEST_CKGEN (0xd03a4d20) 0x20b CM_IDLEST2_CKGEN (0xd03a4d24) 0xb CM_AUTOIDLE_PLL (0xd03a4d30) 0x9 CM_AUTOIDLE2_PLL (0xd03a4d34) 0x1 CM_CLKSEL1_PLL (0xd03a4d40) 0x8a60c00 CM_CLKSEL2_PLL (0xd03a4d44) 0xd80c CM_CLKSEL3_PLL (0xd03a4d48) 0x9 CM_CLKSEL4_PLL (0xd03a4d4c) 0x3c0c CM_CLKSEL5_PLL (0xd03a4d50) 0x1 CM_CLKOUT_CTRL (0xd03a4d70) 0x3
I am using USBTLL in bypass mode (ULPI port2). I am also stopping and restarting the FCLK, ICLK, TLL, 48M and 120M clock which I believe is working OK.
I can see by the IDLEST register the controller is still in idle and I can not address any of the UHH registers (which is the root problem).
What am I doing wrong? I tried several different UHH_SYSCONFIG configurations but it always seem to be stuck in idle on resume.
Any ideas on how I can configure so my EHCI controllers restarts/resumes?