summaryrefslogtreecommitdiffstats
path: root/include/fsl_usb.h
diff options
context:
space:
mode:
authorNikhil Badola <nikhil.badola@freescale.com>2014-11-21 17:25:21 +0530
committerYork Sun <yorksun@freescale.com>2015-05-04 09:23:50 -0700
commit0dc78ff857337a82d39d7e4390e317ffbc93097f (patch)
treed584241cdf4866dadf0659d1fdb073e82b00279e /include/fsl_usb.h
parent7fc63cca611b9d2b5f170f9f37e6f99ddf5992a9 (diff)
downloadblackbird-obmc-uboot-0dc78ff857337a82d39d7e4390e317ffbc93097f.tar.gz
blackbird-obmc-uboot-0dc78ff857337a82d39d7e4390e317ffbc93097f.zip
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.h29
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_ */
OpenPOWER on IntegriCloud