瀏覽代碼

usb: musb: blackfin: check anomaly workarounds at runtime too

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>
Mike Frysinger 14 年之前
父節點
當前提交
081b59e453
共有 1 個文件被更改,包括 26 次插入3 次删除
  1. 26 3
      drivers/usb/musb/blackfin_usb.c

+ 26 - 3
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")));
 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) {
 	if (ANOMALY_05000346) {
 		bfin_write_USB_APHY_CALIB(ANOMALY_05000346_value);
 		bfin_write_USB_APHY_CALIB(ANOMALY_05000346_value);
@@ -111,6 +126,14 @@ int musb_platform_init(void)
 		bfin_write_USB_APHY_CNTRL(0x0);
 		bfin_write_USB_APHY_CNTRL(0x0);
 		SSYNC();
 		SSYNC();
 	}
 	}
+}
+
+int musb_platform_init(void)
+{
+	/* board specific initialization */
+	board_musb_init();
+
+	bfin_anomaly_init();
 
 
 	/* Configure PLL oscillator register */
 	/* Configure PLL oscillator register */
 	bfin_write_USB_PLLOSC_CTRL(0x3080 |
 	bfin_write_USB_PLLOSC_CTRL(0x3080 |