Пример #1
0
void usb_composite_force_reset(struct usb_composite_dev *cdev)
{
	unsigned long			flags;

	spin_lock_irqsave(&cdev->lock, flags);
	/* force reenumeration */
	if (cdev && cdev->gadget && cdev->gadget->speed != USB_SPEED_UNKNOWN) {
		spin_unlock_irqrestore(&cdev->lock, flags);
		CSY_DBG_ESS("disconnect usb\n");
		usb_gadget_disconnect(cdev->gadget);
		msleep(10);
		CSY_DBG_ESS("connect usb again\n");
		usb_gadget_connect(cdev->gadget);
	} else {
		CSY_DBG_ESS("skip reset\n");
		spin_unlock_irqrestore(&cdev->lock, flags);
	}
}
Пример #2
0
void usb_composite_force_reset(struct usb_composite_dev *cdev)
{
	unsigned long			flags;

	spin_lock_irqsave(&cdev->lock, flags);
	/* force reenumeration */
	if (cdev && cdev->gadget &&
			cdev->gadget->speed != USB_SPEED_UNKNOWN) {
		/* avoid sending a disconnect switch event until after we disconnect */
		cdev->mute_switch = 1;
		spin_unlock_irqrestore(&cdev->lock, flags);
		CSY_DBG_ESS("disconnect usb\n");
		usb_gadget_disconnect(cdev->gadget);
		msleep(20);
		CSY_DBG_ESS("connect usb again\n");
		usb_gadget_connect(cdev->gadget);
	} else {
		CSY_DBG_ESS("skip reset\n");
		spin_unlock_irqrestore(&cdev->lock, flags);
	}
}