diff options
author | Peter Chen <peter.chen@freescale.com> | 2014-11-06 01:28:01 -0500 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2014-11-10 18:19:36 -0500 |
commit | 363ea206efb25dfcb09d57878fdbdb4cd6b01775 (patch) | |
tree | a69955e86ec372478601251a45feca861d9aead4 /drivers/usb/gadget | |
parent | 373ef692e00624b426271a22b8dadb92a46897ef (diff) |
usb: gadget: fsl_udc_core: 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: Peter Chen <peter.chen@freescale.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/gadget')
-rw-r--r-- | drivers/usb/gadget/udc/fsl_udc_core.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/usb/gadget/udc/fsl_udc_core.c b/drivers/usb/gadget/udc/fsl_udc_core.c index b184ed3ef37a..f340181da23c 100644 --- a/drivers/usb/gadget/udc/fsl_udc_core.c +++ b/drivers/usb/gadget/udc/fsl_udc_core.c | |||
@@ -1771,7 +1771,7 @@ static void bus_resume(struct fsl_udc *udc) | |||
1771 | } | 1771 | } |
1772 | 1772 | ||
1773 | /* Clear up all ep queues */ | 1773 | /* Clear up all ep queues */ |
1774 | static int reset_queues(struct fsl_udc *udc) | 1774 | static int reset_queues(struct fsl_udc *udc, bool bus_reset) |
1775 | { | 1775 | { |
1776 | u8 pipe; | 1776 | u8 pipe; |
1777 | 1777 | ||
@@ -1780,7 +1780,10 @@ static int reset_queues(struct fsl_udc *udc) | |||
1780 | 1780 | ||
1781 | /* report disconnect; the driver is already quiesced */ | 1781 | /* report disconnect; the driver is already quiesced */ |
1782 | spin_unlock(&udc->lock); | 1782 | spin_unlock(&udc->lock); |
1783 | udc->driver->disconnect(&udc->gadget); | 1783 | if (bus_reset) |
1784 | usb_gadget_udc_reset(&udc->gadget, udc->driver); | ||
1785 | else | ||
1786 | udc->driver->disconnect(&udc->gadget); | ||
1784 | spin_lock(&udc->lock); | 1787 | spin_lock(&udc->lock); |
1785 | 1788 | ||
1786 | return 0; | 1789 | return 0; |
@@ -1834,7 +1837,7 @@ static void reset_irq(struct fsl_udc *udc) | |||
1834 | udc->bus_reset = 1; | 1837 | udc->bus_reset = 1; |
1835 | /* Reset all the queues, include XD, dTD, EP queue | 1838 | /* Reset all the queues, include XD, dTD, EP queue |
1836 | * head and TR Queue */ | 1839 | * head and TR Queue */ |
1837 | reset_queues(udc); | 1840 | reset_queues(udc, true); |
1838 | udc->usb_state = USB_STATE_DEFAULT; | 1841 | udc->usb_state = USB_STATE_DEFAULT; |
1839 | } else { | 1842 | } else { |
1840 | VDBG("Controller reset"); | 1843 | VDBG("Controller reset"); |
@@ -1843,7 +1846,7 @@ static void reset_irq(struct fsl_udc *udc) | |||
1843 | dr_controller_setup(udc); | 1846 | dr_controller_setup(udc); |
1844 | 1847 | ||
1845 | /* Reset all internal used Queues */ | 1848 | /* Reset all internal used Queues */ |
1846 | reset_queues(udc); | 1849 | reset_queues(udc, false); |
1847 | 1850 | ||
1848 | ep0_setup(udc); | 1851 | ep0_setup(udc); |
1849 | 1852 | ||