diff options
author | Nikhil Badola <nikhil.badola@freescale.com> | 2014-11-21 17:25:21 +0530 |
---|---|---|
committer | York Sun <yorksun@freescale.com> | 2015-05-04 09:23:50 -0700 |
commit | 0dc78ff857337a82d39d7e4390e317ffbc93097f (patch) | |
tree | d584241cdf4866dadf0659d1fdb073e82b00279e /include/fsl_usb.h | |
parent | 7fc63cca611b9d2b5f170f9f37e6f99ddf5992a9 (diff) | |
download | u-boot-0dc78ff857337a82d39d7e4390e317ffbc93097f.tar.gz |
drivers: usb: fsl: Workaround for Erratum A004477
Add a delay of 1 microsecond before issuing soft reset to the
controller to let ongoing ULPI transaction complete.
This prevents corruption of ULPI Function Control Register which
eventually prevents phy clock from entering to low power mode
Signed-off-by: Nikhil Badola <nikhil.badola@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
Diffstat (limited to 'include/fsl_usb.h')
-rw-r--r-- | include/fsl_usb.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/include/fsl_usb.h b/include/fsl_usb.h index 33d9f03096..8e3ddedfad 100644 --- a/include/fsl_usb.h +++ b/include/fsl_usb.h @@ -209,6 +209,30 @@ static inline bool has_erratum_a005697(void) return false; } +static inline bool has_erratum_a004477(void) +{ + u32 svr = get_svr(); + u32 soc = SVR_SOC_VER(svr); + + switch (soc) { + case SVR_P1010: + return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0); + case SVR_P1022: + case SVR_9131: + case SVR_9132: + return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1); + case SVR_P2020: + return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0) || + IS_SVR_REV(svr, 2, 1); + case SVR_B4860: + case SVR_B4420: + return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0); + case SVR_P4080: + return IS_SVR_REV(svr, 2, 0) || IS_SVR_REV(svr, 3, 0); + } + + return false; +} #else static inline bool has_dual_phy(void) { @@ -239,5 +263,10 @@ static inline bool has_erratum_a005697(void) { return false; } + +static inline bool has_erratum_a004477(void) +{ + return false; +} #endif #endif /*_ASM_FSL_USB_H_ */ |