summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/usb/musb/blackfin_usb.c29
1 files changed, 26 insertions, 3 deletions
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 |