-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Medium
-
Linux Core SDK
-
LCPD-37081
-
09.00.00
-
09.02.00
-
-
USB 2.0 PHY locks up due to short suspend. PHY stops providing UTMI clock after waking up from suspend if the wakeup occurs within 3us after entering suspend. The USB 2.0 link wakeup event can occur during PHY suspend entry and cause this corner case to be triggered.
Once lockup occurs, it can only be recovered by power cycling (warm reset is ineffective). However, the below workaround will ensure that the faulty logic is bypassed and hence lockup can be avoided.
*Please refer to workaround field for errata document text.
Workaround for AM62, AM62A, AM62P:
The following register fields have to be written during USB initialization (after LPSC removes USB reset but before USB Controller initialization) to avoid this lockup. Both bits can be written at the same time or alternatively bit 5 can be set before bit 4. It has to be ensured that bit 4 is NOT set before bit 5.
Set PLL_REG12.pll_ldo_ref_en field (bit 5) in PHY2 region to 1
Set PLL_REG12.pll_ldo_ref_en_en field (bit 4) in PHY2 region to 1
This workaround only bypasses the faulty logic and does NOT prevent the faulty logic from locking up. As a result, this workaround needs to be set during USB initialization and should remain active throughout USB operation.
Power impact due to workaround: With refclk ON, the change is around 40 uW & with refclk off it is around 130uW. This is for Nom 25C.
Please note: This workaround needs to be implemented in ROM even though ROM does not enable PHY suspend. This is because ROM could hang without this workaround if short suspend occurs during runtime and a warm reset occurs.