From: Nikhil Badola <nikhil.badola@freescale.com>
Date: Thu, 30 Oct 2014 04:41:28 +0000 (+0530)
Subject: drivers: usb: fsl: Check USB Erratum A007792 applicability
X-Git-Tag: v2025.01-rc5-pxa1908~14166^2~10
X-Git-Url: http://git.dujemihanovic.xyz/img/html/index.html?a=commitdiff_plain;h=da5ce448c731321ba8cad5502a35c669b5e1bf8c;p=u-boot.git

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>
---

diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c
index 61cd16840a..5d4288d38f 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 e4902aac96..d251f5d4ce 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_ */