diff options
-rw-r--r-- | drivers/usb/musb/blackfin_usb.c | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/drivers/usb/musb/blackfin_usb.c b/drivers/usb/musb/blackfin_usb.c index 0eb19a0924c..35268ba58ef 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 | |