diff options
author | Nikhil Badola <nikhil.badola@freescale.com> | 2014-10-30 10:11:28 +0530 |
---|---|---|
committer | York Sun <yorksun@freescale.com> | 2014-12-11 09:41:11 -0800 |
commit | da5ce448c731321ba8cad5502a35c669b5e1bf8c (patch) | |
tree | 99d3f705c1dbb760c0337df6aca8d3045c59a571 | |
parent | ecfc19f31f1fa25f739d11c81d4810f9b35b29aa (diff) | |
download | u-boot-da5ce448c731321ba8cad5502a35c669b5e1bf8c.zip u-boot-da5ce448c731321ba8cad5502a35c669b5e1bf8c.tar.gz u-boot-da5ce448c731321ba8cad5502a35c669b5e1bf8c.tar.bz2 |
drivers: usb: fsl: Check USB Erratum A007792 applicability
Check USB Erratum A007792 applicability. If applicable, add
corresponding property in the device tree via device tree fixup
Signed-off-by: Nikhil Badola <nikhil.badola@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
-rw-r--r-- | drivers/usb/host/ehci-fsl.c | 9 | ||||
-rw-r--r-- | include/fsl_usb.h | 23 |
2 files changed, 32 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c index 61cd168..5d4288d 100644 --- a/drivers/usb/host/ehci-fsl.c +++ b/drivers/usb/host/ehci-fsl.c @@ -262,6 +262,7 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd) static const char * const phys[] = { "ulpi", "utmi" }; int usb_erratum_a006261_off = -1; int usb_erratum_a007075_off = -1; + int usb_erratum_a007792_off = -1; int usb_mode_off = -1; int usb_phy_off = -1; char str[5]; @@ -332,6 +333,14 @@ void fdt_fixup_dr_usb(void *blob, bd_t *bd) if (usb_erratum_a007075_off < 0) return; } + if (has_erratum_a007792()) { + usb_erratum_a007792_off = fdt_fixup_usb_erratum + (blob, + "fsl,usb-erratum-a007792", + usb_erratum_a007792_off); + if (usb_erratum_a007792_off < 0) + return; + } } } #endif diff --git a/include/fsl_usb.h b/include/fsl_usb.h index e4902aa..d251f5d 100644 --- a/include/fsl_usb.h +++ b/include/fsl_usb.h @@ -145,6 +145,25 @@ static inline bool has_erratum_a007798(void) return SVR_SOC_VER(get_svr()) == SVR_T4240 && IS_SVR_REV(get_svr(), 2, 0); } + +static inline bool has_erratum_a007792(void) +{ + u32 svr = get_svr(); + u32 soc = SVR_SOC_VER(svr); + + switch (soc) { + case SVR_T4240: + case SVR_T4160: + return IS_SVR_REV(svr, 2, 0); + case SVR_T1040: + return IS_SVR_REV(svr, 1, 0); + case SVR_T2080: + case SVR_T2081: + return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1); + } + return false; +} + #else static inline bool has_erratum_a006261(void) { @@ -161,5 +180,9 @@ static inline bool has_erratum_a007798(void) return false; } +static inline bool has_erratum_a007792(void) +{ + return false; +} #endif #endif /*_ASM_FSL_USB_H_ */ |