|
@@ -290,6 +290,7 @@ int musb_hub_control(
|
|
u32 temp;
|
|
u32 temp;
|
|
int retval = 0;
|
|
int retval = 0;
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
|
|
+ bool start_musb = false;
|
|
|
|
|
|
spin_lock_irqsave(&musb->lock, flags);
|
|
spin_lock_irqsave(&musb->lock, flags);
|
|
|
|
|
|
@@ -390,7 +391,7 @@ int musb_hub_control(
|
|
* logic relating to VBUS power-up.
|
|
* logic relating to VBUS power-up.
|
|
*/
|
|
*/
|
|
if (!hcd->self.is_b_host && musb_has_gadget(musb))
|
|
if (!hcd->self.is_b_host && musb_has_gadget(musb))
|
|
- musb_start(musb);
|
|
|
|
|
|
+ start_musb = true;
|
|
break;
|
|
break;
|
|
case USB_PORT_FEAT_RESET:
|
|
case USB_PORT_FEAT_RESET:
|
|
musb_port_reset(musb, true);
|
|
musb_port_reset(musb, true);
|
|
@@ -451,5 +452,9 @@ error:
|
|
retval = -EPIPE;
|
|
retval = -EPIPE;
|
|
}
|
|
}
|
|
spin_unlock_irqrestore(&musb->lock, flags);
|
|
spin_unlock_irqrestore(&musb->lock, flags);
|
|
|
|
+
|
|
|
|
+ if (start_musb)
|
|
|
|
+ musb_start(musb);
|
|
|
|
+
|
|
return retval;
|
|
return retval;
|
|
}
|
|
}
|