]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
drivers: usb: fsl: Check USB Erratum A007792 applicability
authorNikhil Badola <nikhil.badola@freescale.com>
Thu, 30 Oct 2014 04:41:28 +0000 (10:11 +0530)
committerYork Sun <yorksun@freescale.com>
Thu, 11 Dec 2014 17:41:11 +0000 (09:41 -0800)
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>
drivers/usb/host/ehci-fsl.c
include/fsl_usb.h

index 61cd16840a98b65c0d374ef8d4b84fd44c2bdb57..5d4288d38f086c7967f8388bde7bf8423afdcc47 100644 (file)
@@ -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
index e4902aac96d2bd102e73d0cb3581a2ed03e35953..d251f5d4ce17831f715aa2c241c6452576b02ac1 100644 (file)
@@ -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_ */