summaryrefslogtreecommitdiff
path: root/drivers/usb/musb-new/omap2430.c
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2015-03-02 07:24:27 -0500
committerTom Rini <trini@konsulko.com>2015-03-02 07:24:27 -0500
commit57c6941b433722ab83a50dab35b8ab5a0954942a (patch)
treec1e785f490e844420407c6de8331bdc76df0817c /drivers/usb/musb-new/omap2430.c
parenta1b341989b241be6e308ec9328d2fbb08049c8f9 (diff)
parentc01c418717d718603e746fbc7885f76a5f8f73a5 (diff)
downloadu-boot-imx-57c6941b433722ab83a50dab35b8ab5a0954942a.zip
u-boot-imx-57c6941b433722ab83a50dab35b8ab5a0954942a.tar.gz
u-boot-imx-57c6941b433722ab83a50dab35b8ab5a0954942a.tar.bz2
Merge git://git.denx.de/u-boot-usb
Diffstat (limited to 'drivers/usb/musb-new/omap2430.c')
-rw-r--r--drivers/usb/musb-new/omap2430.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/usb/musb-new/omap2430.c b/drivers/usb/musb-new/omap2430.c
index 98f4830..31a280e 100644
--- a/drivers/usb/musb-new/omap2430.c
+++ b/drivers/usb/musb-new/omap2430.c
@@ -321,6 +321,7 @@ static int omap2430_musb_init(struct musb *musb)
{
u32 l;
int status = 0;
+ unsigned long int start;
#ifndef __UBOOT__
struct device *dev = musb->controller;
struct omap2430_glue *glue = dev_get_drvdata(dev->parent);
@@ -331,6 +332,21 @@ static int omap2430_musb_init(struct musb *musb)
(struct omap_musb_board_data *)musb->controller;
#endif
+ /* Reset the controller */
+ musb_writel(musb->mregs, OTG_SYSCONFIG, SOFTRST);
+
+ start = get_timer(0);
+
+ while (1) {
+ l = musb_readl(musb->mregs, OTG_SYSCONFIG);
+ if ((l & SOFTRST) == 0)
+ break;
+
+ if (get_timer(start) > (CONFIG_SYS_HZ / 1000)) {
+ dev_err(musb->controller, "MUSB reset is taking too long\n");
+ return -ENODEV;
+ }
+ }
#ifndef __UBOOT__
/* We require some kind of external transceiver, hooked