diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-12-02 16:30:58 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-12-02 16:30:58 -0500 |
| commit | af968e29acd91ebeb4224e899202c46c93171ecd (patch) | |
| tree | 2b3b34e142f5ed315557e582fc35c7792a4a41d0 | |
| parent | f9143eae1035195352da7577d89ec5982cbc9f72 (diff) | |
| parent | 8593b6f6b0f05483dc6417b2fb7eb9dfaec34cba (diff) | |
Merge branch 'usb-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
* 'usb-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (21 commits)
usb: ftdi_sio: add PID for Propox ISPcable III
Revert "xHCI: reset-on-resume quirk for NEC uPD720200"
xHCI: fix bug in xhci_clear_command_ring()
usb: gadget: fsl_udc: fix dequeuing a request in progress
usb: fsl_mxc_udc.c: Remove compile-time dependency of MX35 SoC type
usb: fsl_mxc_udc.c: Fix build issue by including missing header file
USB: fsl_udc_core: use usb_endpoint_xfer_isoc to judge ISO XFER
usb: udc: Fix gadget driver's speed check in various UDC drivers
usb: gadget: fix g_serial regression
usb: renesas_usbhs: fixup driver speed
usb: renesas_usbhs: fixup gadget.dev.driver when udc_stop.
usb: renesas_usbhs: fixup signal the driver that cable was disconnected
usb: renesas_usbhs: fixup device_register timing
usb: musb: PM: fix context save/restore in suspend/resume path
USB: linux-cdc-acm.inf: add support for the acm_ms gadget
EHCI : Fix a regression in the ISO scheduler
xHCI: reset-on-resume quirk for NEC uPD720200
USB: whci-hcd: fix endian conversion in qset_clear()
USB: usb-storage: unusual_devs entry for Kingston DT 101 G2
usb: option: add SIMCom SIM5218
...
| -rw-r--r-- | Documentation/usb/linux-cdc-acm.inf | 4 | ||||
| -rw-r--r-- | drivers/usb/gadget/amd5536udc.c | 2 | ||||
| -rw-r--r-- | drivers/usb/gadget/f_serial.c | 4 | ||||
| -rw-r--r-- | drivers/usb/gadget/fsl_mxc_udc.c | 3 | ||||
| -rw-r--r-- | drivers/usb/gadget/fsl_qe_udc.c | 3 | ||||
| -rw-r--r-- | drivers/usb/gadget/fsl_udc_core.c | 75 | ||||
| -rw-r--r-- | drivers/usb/gadget/fsl_usb2_udc.h | 10 | ||||
| -rw-r--r-- | drivers/usb/gadget/m66592-udc.c | 2 | ||||
| -rw-r--r-- | drivers/usb/gadget/net2280.c | 2 | ||||
| -rw-r--r-- | drivers/usb/gadget/r8a66597-udc.c | 2 | ||||
| -rw-r--r-- | drivers/usb/gadget/s3c-hsotg.c | 4 | ||||
| -rw-r--r-- | drivers/usb/gadget/s3c-hsudc.c | 3 | ||||
| -rw-r--r-- | drivers/usb/host/ehci-sched.c | 9 | ||||
| -rw-r--r-- | drivers/usb/host/whci/qset.c | 2 | ||||
| -rw-r--r-- | drivers/usb/host/xhci.c | 5 | ||||
| -rw-r--r-- | drivers/usb/musb/musb_core.c | 6 | ||||
| -rw-r--r-- | drivers/usb/musb/musb_gadget.c | 2 | ||||
| -rw-r--r-- | drivers/usb/renesas_usbhs/mod_gadget.c | 47 | ||||
| -rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 1 | ||||
| -rw-r--r-- | drivers/usb/serial/ftdi_sio_ids.h | 1 | ||||
| -rw-r--r-- | drivers/usb/serial/option.c | 4 | ||||
| -rw-r--r-- | drivers/usb/storage/unusual_devs.h | 7 |
22 files changed, 101 insertions, 97 deletions
diff --git a/Documentation/usb/linux-cdc-acm.inf b/Documentation/usb/linux-cdc-acm.inf index 37a02ce54841..f0ffc27d4c0a 100644 --- a/Documentation/usb/linux-cdc-acm.inf +++ b/Documentation/usb/linux-cdc-acm.inf | |||
| @@ -90,10 +90,10 @@ ServiceBinary=%12%\USBSER.sys | |||
| 90 | [SourceDisksFiles] | 90 | [SourceDisksFiles] |
| 91 | [SourceDisksNames] | 91 | [SourceDisksNames] |
| 92 | [DeviceList] | 92 | [DeviceList] |
| 93 | %DESCRIPTION%=DriverInstall, USB\VID_0525&PID_A4A7, USB\VID_1D6B&PID_0104&MI_02 | 93 | %DESCRIPTION%=DriverInstall, USB\VID_0525&PID_A4A7, USB\VID_1D6B&PID_0104&MI_02, USB\VID_1D6B&PID_0106&MI_00 |
| 94 | 94 | ||
| 95 | [DeviceList.NTamd64] | 95 | [DeviceList.NTamd64] |
| 96 | %DESCRIPTION%=DriverInstall, USB\VID_0525&PID_A4A7, USB\VID_1D6B&PID_0104&MI_02 | 96 | %DESCRIPTION%=DriverInstall, USB\VID_0525&PID_A4A7, USB\VID_1D6B&PID_0104&MI_02, USB\VID_1D6B&PID_0106&MI_00 |
| 97 | 97 | ||
| 98 | 98 | ||
| 99 | ;------------------------------------------------------------------------------ | 99 | ;------------------------------------------------------------------------------ |
diff --git a/drivers/usb/gadget/amd5536udc.c b/drivers/usb/gadget/amd5536udc.c index 4730016d7cd4..45f422ac103f 100644 --- a/drivers/usb/gadget/amd5536udc.c +++ b/drivers/usb/gadget/amd5536udc.c | |||
| @@ -1959,7 +1959,7 @@ static int amd5536_start(struct usb_gadget_driver *driver, | |||
| 1959 | u32 tmp; | 1959 | u32 tmp; |
| 1960 | 1960 | ||
| 1961 | if (!driver || !bind || !driver->setup | 1961 | if (!driver || !bind || !driver->setup |
| 1962 | || driver->speed != USB_SPEED_HIGH) | 1962 | || driver->speed < USB_SPEED_HIGH) |
| 1963 | return -EINVAL; | 1963 | return -EINVAL; |
| 1964 | if (!dev) | 1964 | if (!dev) |
| 1965 | return -ENODEV; | 1965 | return -ENODEV; |
diff --git a/drivers/usb/gadget/f_serial.c b/drivers/usb/gadget/f_serial.c index 91fdf790ed20..cf33a8d0fd5d 100644 --- a/drivers/usb/gadget/f_serial.c +++ b/drivers/usb/gadget/f_serial.c | |||
| @@ -131,8 +131,8 @@ static int gser_set_alt(struct usb_function *f, unsigned intf, unsigned alt) | |||
| 131 | } | 131 | } |
| 132 | if (!gser->port.in->desc || !gser->port.out->desc) { | 132 | if (!gser->port.in->desc || !gser->port.out->desc) { |
| 133 | DBG(cdev, "activate generic ttyGS%d\n", gser->port_num); | 133 | DBG(cdev, "activate generic ttyGS%d\n", gser->port_num); |
| 134 | if (!config_ep_by_speed(cdev->gadget, f, gser->port.in) || | 134 | if (config_ep_by_speed(cdev->gadget, f, gser->port.in) || |
| 135 | !config_ep_by_speed(cdev->gadget, f, gser->port.out)) { | 135 | config_ep_by_speed(cdev->gadget, f, gser->port.out)) { |
| 136 | gser->port.in->desc = NULL; | 136 | gser->port.in->desc = NULL; |
| 137 | gser->port.out->desc = NULL; | 137 | gser->port.out->desc = NULL; |
| 138 | return -EINVAL; | 138 | return -EINVAL; |
diff --git a/drivers/usb/gadget/fsl_mxc_udc.c b/drivers/usb/gadget/fsl_mxc_udc.c index 43a49ecc1f36..dcbc0a2e48dd 100644 --- a/drivers/usb/gadget/fsl_mxc_udc.c +++ b/drivers/usb/gadget/fsl_mxc_udc.c | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include <linux/err.h> | 16 | #include <linux/err.h> |
| 17 | #include <linux/fsl_devices.h> | 17 | #include <linux/fsl_devices.h> |
| 18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
| 19 | #include <linux/io.h> | ||
| 19 | 20 | ||
| 20 | #include <mach/hardware.h> | 21 | #include <mach/hardware.h> |
| 21 | 22 | ||
| @@ -88,7 +89,6 @@ eenahb: | |||
| 88 | void fsl_udc_clk_finalize(struct platform_device *pdev) | 89 | void fsl_udc_clk_finalize(struct platform_device *pdev) |
| 89 | { | 90 | { |
| 90 | struct fsl_usb2_platform_data *pdata = pdev->dev.platform_data; | 91 | struct fsl_usb2_platform_data *pdata = pdev->dev.platform_data; |
| 91 | #if defined(CONFIG_SOC_IMX35) | ||
| 92 | if (cpu_is_mx35()) { | 92 | if (cpu_is_mx35()) { |
| 93 | unsigned int v; | 93 | unsigned int v; |
| 94 | 94 | ||
| @@ -101,7 +101,6 @@ void fsl_udc_clk_finalize(struct platform_device *pdev) | |||
| 101 | USBPHYCTRL_OTGBASE_OFFSET)); | 101 | USBPHYCTRL_OTGBASE_OFFSET)); |
| 102 | } | 102 | } |
| 103 | } | 103 | } |
| 104 | #endif | ||
| 105 | 104 | ||
| 106 | /* ULPI transceivers don't need usbpll */ | 105 | /* ULPI transceivers don't need usbpll */ |
| 107 | if (pdata->phy_mode == FSL_USB2_PHY_ULPI) { | 106 | if (pdata->phy_mode == FSL_USB2_PHY_ULPI) { |
diff --git a/drivers/usb/gadget/fsl_qe_udc.c b/drivers/usb/gadget/fsl_qe_udc.c index 2a03e4de11c1..e00cf92409ce 100644 --- a/drivers/usb/gadget/fsl_qe_udc.c +++ b/drivers/usb/gadget/fsl_qe_udc.c | |||
| @@ -2336,8 +2336,7 @@ static int fsl_qe_start(struct usb_gadget_driver *driver, | |||
| 2336 | if (!udc_controller) | 2336 | if (!udc_controller) |
| 2337 | return -ENODEV; | 2337 | return -ENODEV; |
| 2338 | 2338 | ||
| 2339 | if (!driver || (driver->speed != USB_SPEED_FULL | 2339 | if (!driver || driver->speed < USB_SPEED_FULL |
| 2340 | && driver->speed != USB_SPEED_HIGH) | ||
| 2341 | || !bind || !driver->disconnect || !driver->setup) | 2340 | || !bind || !driver->disconnect || !driver->setup) |
| 2342 | return -EINVAL; | 2341 | return -EINVAL; |
| 2343 | 2342 | ||
diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c index b3b3d83b7c33..dd28ef3def71 100644 --- a/drivers/usb/gadget/fsl_udc_core.c +++ b/drivers/usb/gadget/fsl_udc_core.c | |||
| @@ -696,12 +696,31 @@ static void fsl_free_request(struct usb_ep *_ep, struct usb_request *_req) | |||
| 696 | kfree(req); | 696 | kfree(req); |
| 697 | } | 697 | } |
| 698 | 698 | ||
| 699 | /*-------------------------------------------------------------------------*/ | 699 | /* Actually add a dTD chain to an empty dQH and let go */ |
| 700 | static void fsl_prime_ep(struct fsl_ep *ep, struct ep_td_struct *td) | ||
| 701 | { | ||
| 702 | struct ep_queue_head *qh = get_qh_by_ep(ep); | ||
| 703 | |||
| 704 | /* Write dQH next pointer and terminate bit to 0 */ | ||
| 705 | qh->next_dtd_ptr = cpu_to_hc32(td->td_dma | ||
| 706 | & EP_QUEUE_HEAD_NEXT_POINTER_MASK); | ||
| 707 | |||
| 708 | /* Clear active and halt bit */ | ||
| 709 | qh->size_ioc_int_sts &= cpu_to_hc32(~(EP_QUEUE_HEAD_STATUS_ACTIVE | ||
| 710 | | EP_QUEUE_HEAD_STATUS_HALT)); | ||
| 711 | |||
| 712 | /* Ensure that updates to the QH will occur before priming. */ | ||
| 713 | wmb(); | ||
| 714 | |||
| 715 | /* Prime endpoint by writing correct bit to ENDPTPRIME */ | ||
| 716 | fsl_writel(ep_is_in(ep) ? (1 << (ep_index(ep) + 16)) | ||
| 717 | : (1 << (ep_index(ep))), &dr_regs->endpointprime); | ||
| 718 | } | ||
| 719 | |||
| 720 | /* Add dTD chain to the dQH of an EP */ | ||
| 700 | static void fsl_queue_td(struct fsl_ep *ep, struct fsl_req *req) | 721 | static void fsl_queue_td(struct fsl_ep *ep, struct fsl_req *req) |
| 701 | { | 722 | { |
| 702 | int i = ep_index(ep) * 2 + ep_is_in(ep); | ||
| 703 | u32 temp, bitmask, tmp_stat; | 723 | u32 temp, bitmask, tmp_stat; |
| 704 | struct ep_queue_head *dQH = &ep->udc->ep_qh[i]; | ||
| 705 | 724 | ||
| 706 | /* VDBG("QH addr Register 0x%8x", dr_regs->endpointlistaddr); | 725 | /* VDBG("QH addr Register 0x%8x", dr_regs->endpointlistaddr); |
| 707 | VDBG("ep_qh[%d] addr is 0x%8x", i, (u32)&(ep->udc->ep_qh[i])); */ | 726 | VDBG("ep_qh[%d] addr is 0x%8x", i, (u32)&(ep->udc->ep_qh[i])); */ |
| @@ -719,7 +738,7 @@ static void fsl_queue_td(struct fsl_ep *ep, struct fsl_req *req) | |||
| 719 | cpu_to_hc32(req->head->td_dma & DTD_ADDR_MASK); | 738 | cpu_to_hc32(req->head->td_dma & DTD_ADDR_MASK); |
| 720 | /* Read prime bit, if 1 goto done */ | 739 | /* Read prime bit, if 1 goto done */ |
| 721 | if (fsl_readl(&dr_regs->endpointprime) & bitmask) | 740 | if (fsl_readl(&dr_regs->endpointprime) & bitmask) |
| 722 | goto out; | 741 | return; |
| 723 | 742 | ||
| 724 | do { | 743 | do { |
| 725 | /* Set ATDTW bit in USBCMD */ | 744 | /* Set ATDTW bit in USBCMD */ |
| @@ -736,28 +755,10 @@ static void fsl_queue_td(struct fsl_ep *ep, struct fsl_req *req) | |||
