drivers : usb: fsl: Implement usb Erratum A007798 workaround
authorNikhil Badola <nikhil.badola@freescale.com>
Fri, 17 Oct 2014 03:42:07 +0000 (09:12 +0530)
committerYork Sun <yorksun@freescale.com>
Mon, 24 Nov 2014 17:27:04 +0000 (09:27 -0800)
Set TXFIFOTHRESH to adjust ddr pipeline delay for successful large
usb writes

Signed-off-by: Nikhil Badola <nikhil.badola@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
arch/powerpc/cpu/mpc85xx/cmd_errata.c
arch/powerpc/include/asm/config_mpc85xx.h
drivers/usb/host/ehci-fsl.c
include/fsl_usb.h

index 349ce52..fe3eb06 100644 (file)
@@ -294,6 +294,10 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if (has_erratum_a007075())
                puts("Work-around for Erratum A007075 enabled\n");
 #endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A007798
+       if (has_erratum_a007798())
+               puts("Work-around for Erratum A007798 enabled\n");
+#endif
 #ifdef CONFIG_SYS_FSL_ERRATUM_I2C_A004447
        if ((SVR_SOC_VER(svr) == SVR_8548 && IS_SVR_REV(svr, 3, 1)) ||
            (SVR_REV(svr) <= CONFIG_SYS_FSL_A004447_SVR_REV))
index 4c1774f..7860b40 100644 (file)
 #define CONFIG_SYS_FSL_ERRATUM_A006379
 #define CONFIG_SYS_FSL_ERRATUM_A007186
 #define CONFIG_SYS_FSL_ERRATUM_A006593
+#define CONFIG_SYS_FSL_ERRATUM_A007798
 #define CONFIG_SYS_CCSRBAR_DEFAULT     0xfe000000
 #define CONFIG_SYS_FSL_SFP_VER_3_0
 #define CONFIG_SYS_FSL_PCI_VER_3_X
index d5361d7..8f55464 100644 (file)
@@ -130,8 +130,7 @@ int ehci_hcd_init(int index, enum usb_init_type init,
 
        in_le32(&ehci->usbmode);
 
-       if (SVR_SOC_VER(get_svr()) == SVR_T4240 &&
-           IS_SVR_REV(get_svr(), 2, 0))
+       if (has_erratum_a007798())
                set_txfifothresh(ehci, TXFIFOTHRESH);
 
        return 0;
index 66f8934..e4902aa 100644 (file)
@@ -139,6 +139,12 @@ static inline bool has_erratum_a007075(void)
        }
        return false;
 }
+
+static inline bool has_erratum_a007798(void)
+{
+       return SVR_SOC_VER(get_svr()) == SVR_T4240 &&
+               IS_SVR_REV(get_svr(), 2, 0);
+}
 #else
 static inline bool has_erratum_a006261(void)
 {
@@ -150,5 +156,10 @@ static inline bool has_erratum_a007075(void)
        return false;
 }
 
+static inline bool has_erratum_a007798(void)
+{
+       return false;
+}
+
 #endif
 #endif /*_ASM_FSL_USB_H_ */