diff options
| -rw-r--r-- | drivers/usb/musb/musb_dsps.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c index c7fe16db6bb6..e0d81b8318ab 100644 --- a/drivers/usb/musb/musb_dsps.c +++ b/drivers/usb/musb/musb_dsps.c | |||
| @@ -121,6 +121,7 @@ struct dsps_glue { | |||
| 121 | unsigned long last_timer; /* last timer data for each instance */ | 121 | unsigned long last_timer; /* last timer data for each instance */ |
| 122 | }; | 122 | }; |
| 123 | 123 | ||
| 124 | static void dsps_musb_try_idle(struct musb *musb, unsigned long timeout); | ||
| 124 | /** | 125 | /** |
| 125 | * dsps_musb_enable - enable interrupts | 126 | * dsps_musb_enable - enable interrupts |
| 126 | */ | 127 | */ |
| @@ -143,6 +144,7 @@ static void dsps_musb_enable(struct musb *musb) | |||
| 143 | /* Force the DRVVBUS IRQ so we can start polling for ID change. */ | 144 | /* Force the DRVVBUS IRQ so we can start polling for ID change. */ |
| 144 | dsps_writel(reg_base, wrp->coreintr_set, | 145 | dsps_writel(reg_base, wrp->coreintr_set, |
| 145 | (1 << wrp->drvvbus) << wrp->usb_shift); | 146 | (1 << wrp->drvvbus) << wrp->usb_shift); |
| 147 | dsps_musb_try_idle(musb, 0); | ||
| 146 | } | 148 | } |
| 147 | 149 | ||
| 148 | /** | 150 | /** |
| @@ -234,6 +236,9 @@ static void dsps_musb_try_idle(struct musb *musb, unsigned long timeout) | |||
| 234 | if (musb->port_mode == MUSB_PORT_MODE_HOST) | 236 | if (musb->port_mode == MUSB_PORT_MODE_HOST) |
| 235 | return; | 237 | return; |
| 236 | 238 | ||
| 239 | if (!musb->g.dev.driver) | ||
| 240 | return; | ||
| 241 | |||
| 237 | if (time_after(glue->last_timer, timeout) && | 242 | if (time_after(glue->last_timer, timeout) && |
| 238 | timer_pending(&glue->timer)) { | 243 | timer_pending(&glue->timer)) { |
| 239 | dev_dbg(musb->controller, | 244 | dev_dbg(musb->controller, |
