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
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
CM_IDLEST_USBHOST (0xd03a5420) 0x2
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?
Which kernel base are you using ? As of now PSP Linux based releasees doesn't support suspend/resume on HS USB (EHCI) port.
Regards,
Ajay
I am not using Linux but CE. And please don't say go to Bsquare.
I am just looking for the proper sequence to apply and remove clocks to put the EHCI host controller in suspend and then resume.
ALL CONTENT AND MATERIALS ON THIS SITE ARE PROVIDED "AS IS". TI AND ITS RESPECTIVE SUPPLIERS MAKE NO REPRESENTATIONS ABOUT THE SUITABILITY OF THESE MATERIALS FOR ANY PURPOSE AND DISCLAIM ALL WARRANTIES AND CONDITIONS WITH REGARD TO THESE MATERIALS, INCLUDING BUT NOT LIMITED TO, ALL IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT OF ANY THIRD PARTY INTELLECTUAL PROPERTY RIGHT. NO LICENSE, EITHER EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, IS GRANTED BY TI. USE OF THE INFORMATION ON THIS SITE MAY REQUIRE A LICENSE FROM A THIRD PARTY, OR A LICENSE FROM TI.
Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Terms of Use of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Terms of Use of this site. TI and its suppliers reserve the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.