Patchwork [U-Boot,2/2] usb: musb: blackfin: check anomaly workarounds at runtime too

login
register
mail settings
Submitter Mike Frysinger
Date March 17, 2011, 9:35 p.m.
Message ID <1300397701-7162-2-git-send-email-vapier@gentoo.org>
Download mbox | patch
Permalink /patch/87435/
State Accepted
Commit 081b59e4536d050ed5dc3c16ec5c65d16c0edc94
Delegated to: Remy Bohmer
Headers show

Comments

Mike Frysinger - March 17, 2011, 9:35 p.m.
The anomaly workarounds we need for older silicon might break things
if used on newer versions where the anomalies don't exist.  So check
the silicon rev at runtime too.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/usb/musb/blackfin_usb.c |   29 ++++++++++++++++++++++++++---
 1 files changed, 26 insertions(+), 3 deletions(-)
Remy Bohmer - March 25, 2011, 7:15 p.m.
Hi,

2011/3/17 Mike Frysinger <vapier@gentoo.org>:
> The anomaly workarounds we need for older silicon might break things
> if used on newer versions where the anomalies don't exist.  So check
> the silicon rev at runtime too.
>
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
> ---
>  drivers/usb/musb/blackfin_usb.c |   29 ++++++++++++++++++++++++++---
>  1 files changed, 26 insertions(+), 3 deletions(-)

Applied to u-boot-usb.

Thanks.

Remy

Patch

diff --git a/drivers/usb/musb/blackfin_usb.c b/drivers/usb/musb/blackfin_usb.c
index 0eb19a0..35268ba 100644
--- a/drivers/usb/musb/blackfin_usb.c
+++ b/drivers/usb/musb/blackfin_usb.c
@@ -97,10 +97,25 @@  static void __def_musb_init(void)
 }
 void board_musb_init(void) __attribute__((weak, alias("__def_musb_init")));
 
-int musb_platform_init(void)
+static void bfin_anomaly_init(void)
 {
-	/* board specific initialization */
-	board_musb_init();
+	u32 revid;
+
+	if (!ANOMALY_05000346 && !ANOMALY_05000347)
+		return;
+
+	revid = bfin_revid();
+
+#ifdef __ADSPBF54x__
+	if (revid > 0)
+		return;
+#endif
+#ifdef __ADSPBF52x__
+	if (ANOMALY_BF526 && revid > 0)
+		return;
+	if (ANOMALY_BF527 && revid > 1)
+		return;
+#endif
 
 	if (ANOMALY_05000346) {
 		bfin_write_USB_APHY_CALIB(ANOMALY_05000346_value);
@@ -111,6 +126,14 @@  int musb_platform_init(void)
 		bfin_write_USB_APHY_CNTRL(0x0);
 		SSYNC();
 	}
+}
+
+int musb_platform_init(void)
+{
+	/* board specific initialization */
+	board_musb_init();
+
+	bfin_anomaly_init();
 
 	/* Configure PLL oscillator register */
 	bfin_write_USB_PLLOSC_CTRL(0x3080 |