]> git.sur5r.net Git - u-boot/commitdiff
usb: musb: blackfin: check anomaly workarounds at runtime too
authorMike Frysinger <vapier@gentoo.org>
Thu, 17 Mar 2011 21:35:01 +0000 (17:35 -0400)
committerRemy Bohmer <linux@bohmer.net>
Sat, 2 Apr 2011 07:38:24 +0000 (09:38 +0200)
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

index 0eb19a0924cb79a4e0334b575b4f8fcb310f2cff..35268ba58ef00b1c18e18ccecd7f0b0c85e3f0b9 100644 (file)
@@ -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 |