|
@@ -442,23 +442,16 @@ static void set_link_state(struct dummy_hcd *dum_hcd)
|
|
|
/* Report reset and disconnect events to the driver */
|
|
|
if (dum->driver && (disconnect || reset)) {
|
|
|
stop_activity(dum);
|
|
|
- spin_unlock(&dum->lock);
|
|
|
if (reset)
|
|
|
usb_gadget_udc_reset(&dum->gadget, dum->driver);
|
|
|
else
|
|
|
dum->driver->disconnect(&dum->gadget);
|
|
|
- spin_lock(&dum->lock);
|
|
|
}
|
|
|
} else if (dum_hcd->active != dum_hcd->old_active) {
|
|
|
- if (dum_hcd->old_active && dum->driver->suspend) {
|
|
|
- spin_unlock(&dum->lock);
|
|
|
+ if (dum_hcd->old_active && dum->driver->suspend)
|
|
|
dum->driver->suspend(&dum->gadget);
|
|
|
- spin_lock(&dum->lock);
|
|
|
- } else if (!dum_hcd->old_active && dum->driver->resume) {
|
|
|
- spin_unlock(&dum->lock);
|
|
|
+ else if (!dum_hcd->old_active && dum->driver->resume)
|
|
|
dum->driver->resume(&dum->gadget);
|
|
|
- spin_lock(&dum->lock);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
dum_hcd->old_status = dum_hcd->port_status;
|
|
@@ -983,7 +976,9 @@ static int dummy_udc_stop(struct usb_gadget *g)
|
|
|
struct dummy_hcd *dum_hcd = gadget_to_dummy_hcd(g);
|
|
|
struct dummy *dum = dum_hcd->dum;
|
|
|
|
|
|
+ spin_lock_irq(&dum->lock);
|
|
|
dum->driver = NULL;
|
|
|
+ spin_unlock_irq(&dum->lock);
|
|
|
|
|
|
return 0;
|
|
|
}
|