Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8480484d authored by Alan Stern's avatar Alan Stern Committed by Felipe Balbi
Browse files

usb: gadget: dummy-hcd: use udc-core's reset notifier



Replace usb_gadget_driver's disconnect with udc-core's reset notifier at
bus reset handler.

Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
Signed-off-by: default avatarPeter chen <peter.chen@freescale.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 1189f7f6
Loading
Loading
Loading
Loading
+12 −9
Original line number Diff line number Diff line
@@ -367,18 +367,21 @@ static void set_link_state(struct dummy_hcd *dum_hcd)
	     dum_hcd->active)
		dum_hcd->resuming = 0;

	/* if !connected or reset */
	/* Currently !connected or in reset */
	if ((dum_hcd->port_status & USB_PORT_STAT_CONNECTION) == 0 ||
			(dum_hcd->port_status & USB_PORT_STAT_RESET) != 0) {
		/*
		 * We're connected and not reset (reset occurred now),
		 * and driver attached - disconnect!
		 */
		if ((dum_hcd->old_status & USB_PORT_STAT_CONNECTION) != 0 &&
		    (dum_hcd->old_status & USB_PORT_STAT_RESET) == 0 &&
		    dum->driver) {
		unsigned disconnect = USB_PORT_STAT_CONNECTION &
				dum_hcd->old_status & (~dum_hcd->port_status);
		unsigned reset = USB_PORT_STAT_RESET &
				(~dum_hcd->old_status) & dum_hcd->port_status;

		/* 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);
		}