diff options
-rw-r--r-- | MAINTAINERS | 8 | ||||
-rw-r--r-- | drivers/staging/Kconfig | 2 | ||||
-rw-r--r-- | drivers/staging/Makefile | 1 | ||||
-rw-r--r-- | drivers/usb/Kconfig | 2 | ||||
-rw-r--r-- | drivers/usb/Makefile | 2 | ||||
-rw-r--r-- | drivers/usb/core/hub.c | 16 | ||||
-rw-r--r-- | drivers/usb/dwc2/gadget.c | 2 | ||||
-rw-r--r-- | drivers/usb/dwc3/dwc3-omap.c | 2 | ||||
-rw-r--r-- | drivers/usb/gadget/Makefile | 2 | ||||
-rw-r--r-- | drivers/usb/gadget/function/Makefile | 4 | ||||
-rw-r--r-- | drivers/usb/gadget/function/u_ether.c | 3 | ||||
-rw-r--r-- | drivers/usb/gadget/function/uvc_video.c | 3 | ||||
-rw-r--r-- | drivers/usb/gadget/legacy/Makefile | 6 | ||||
-rw-r--r-- | drivers/usb/gadget/legacy/dbgp.c | 2 | ||||
-rw-r--r-- | drivers/usb/gadget/legacy/inode.c | 2 | ||||
-rw-r--r-- | drivers/usb/gadget/udc/Kconfig | 3 | ||||
-rw-r--r-- | drivers/usb/gadget/udc/atmel_usba_udc.c | 2 | ||||
-rw-r--r-- | drivers/usb/gadget/udc/fusb300_udc.c | 8 | ||||
-rw-r--r-- | drivers/usb/gadget/udc/pch_udc.c | 22 | ||||
-rw-r--r-- | drivers/usb/gadget/udc/r8a66597-udc.c | 4 | ||||
-rw-r--r-- | drivers/usb/host/ehci-hub.c | 2 | ||||
-rw-r--r-- | drivers/usb/host/xhci-pci.c | 9 | ||||
-rw-r--r-- | drivers/usb/host/xhci-ring.c | 104 | ||||
-rw-r--r-- | drivers/usb/host/xhci.c | 3 | ||||
-rw-r--r-- | drivers/usb/misc/sisusbvga/sisusb.c | 1 | ||||
-rw-r--r-- | drivers/usb/musb/ux500_dma.c | 2 | ||||
-rw-r--r-- | drivers/usb/phy/phy-gpio-vbus-usb.c | 4 | ||||
-rw-r--r-- | drivers/usb/phy/phy-msm-usb.c | 4 | ||||
-rw-r--r-- | drivers/usb/phy/phy-samsung-usb.h | 2 | ||||
-rw-r--r-- | drivers/usb/phy/phy.c | 3 | ||||
-rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 3 | ||||
-rw-r--r-- | drivers/usb/serial/ftdi_sio_ids.h | 7 | ||||
-rw-r--r-- | drivers/usb/serial/option.c | 31 | ||||
-rw-r--r-- | drivers/usb/serial/pl2303.c | 1 | ||||
-rw-r--r-- | drivers/usb/serial/pl2303.h | 1 | ||||
-rw-r--r-- | drivers/usb/serial/usb-serial.c | 37 | ||||
-rw-r--r-- | drivers/usb/serial/whiteheat.c | 7 | ||||
-rw-r--r-- | drivers/usb/serial/zte_ev.c | 20 | ||||
-rw-r--r-- | drivers/usb/storage/unusual_devs.h | 6 | ||||
-rw-r--r-- | drivers/usb/usbip/Kconfig (renamed from drivers/staging/usbip/Kconfig) | 0 | ||||
-rw-r--r-- | drivers/usb/usbip/Makefile (renamed from drivers/staging/usbip/Makefile) | 0 | ||||
-rw-r--r-- | drivers/usb/usbip/README (renamed from drivers/staging/usbip/README) | 0 | ||||
-rw-r--r-- | drivers/usb/usbip/stub.h (renamed from drivers/staging/usbip/stub.h) | 0 | ||||
-rw-r--r-- | drivers/usb/usbip/stub_dev.c (renamed from drivers/staging/usbip/stub_dev.c) | 27 | ||||
-rw-r--r-- | drivers/usb/usbip/stub_main.c (renamed from drivers/staging/usbip/stub_main.c) | 0 | ||||
-rw-r--r-- | drivers/usb/usbip/stub_rx.c (renamed from drivers/staging/usbip/stub_rx.c) | 0 | ||||
-rw-r--r-- | drivers/usb/usbip/stub_tx.c (renamed from drivers/staging/usbip/stub_tx.c) | 0 | ||||
-rw-r--r-- | drivers/usb/usbip/usbip_common.c (renamed from drivers/staging/usbip/usbip_common.c) | 0 | ||||
-rw-r--r-- | drivers/usb/usbip/usbip_common.h (renamed from drivers/staging/usbip/usbip_common.h) | 2 | ||||
-rw-r--r-- | drivers/usb/usbip/usbip_event.c (renamed from drivers/staging/usbip/usbip_event.c) | 0 | ||||
-rw-r--r-- | drivers/usb/usbip/usbip_protocol.txt (renamed from drivers/staging/usbip/usbip_protocol.txt) | 0 | ||||
-rw-r--r-- | drivers/usb/usbip/vhci.h (renamed from drivers/staging/usbip/vhci.h) | 0 | ||||
-rw-r--r-- | drivers/usb/usbip/vhci_hcd.c (renamed from drivers/staging/usbip/vhci_hcd.c) | 0 | ||||
-rw-r--r-- | drivers/usb/usbip/vhci_rx.c (renamed from drivers/staging/usbip/vhci_rx.c) | 0 | ||||
-rw-r--r-- | drivers/usb/usbip/vhci_sysfs.c (renamed from drivers/staging/usbip/vhci_sysfs.c) | 0 | ||||
-rw-r--r-- | drivers/usb/usbip/vhci_tx.c (renamed from drivers/staging/usbip/vhci_tx.c) | 0 | ||||
-rw-r--r-- | drivers/usb/wusbcore/wa-xfer.c | 3 | ||||
-rw-r--r-- | include/uapi/linux/usbip.h (renamed from drivers/staging/usbip/uapi/usbip.h) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/.gitignore (renamed from drivers/staging/usbip/userspace/.gitignore) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/AUTHORS (renamed from drivers/staging/usbip/userspace/AUTHORS) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/COPYING (renamed from drivers/staging/usbip/userspace/COPYING) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/INSTALL (renamed from drivers/staging/usbip/userspace/INSTALL) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/Makefile.am (renamed from drivers/staging/usbip/userspace/Makefile.am) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/README (renamed from drivers/staging/usbip/userspace/README) | 0 | ||||
-rwxr-xr-x | tools/usb/usbip/autogen.sh (renamed from drivers/staging/usbip/userspace/autogen.sh) | 0 | ||||
-rwxr-xr-x | tools/usb/usbip/cleanup.sh (renamed from drivers/staging/usbip/userspace/cleanup.sh) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/configure.ac (renamed from drivers/staging/usbip/userspace/configure.ac) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/doc/usbip.8 (renamed from drivers/staging/usbip/userspace/doc/usbip.8) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/doc/usbipd.8 (renamed from drivers/staging/usbip/userspace/doc/usbipd.8) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/libsrc/Makefile.am (renamed from drivers/staging/usbip/userspace/libsrc/Makefile.am) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/libsrc/list.h (renamed from drivers/staging/usbip/userspace/libsrc/list.h) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/libsrc/names.c (renamed from drivers/staging/usbip/userspace/libsrc/names.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/libsrc/names.h (renamed from drivers/staging/usbip/userspace/libsrc/names.h) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/libsrc/sysfs_utils.c (renamed from drivers/staging/usbip/userspace/libsrc/sysfs_utils.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/libsrc/sysfs_utils.h (renamed from drivers/staging/usbip/userspace/libsrc/sysfs_utils.h) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/libsrc/usbip_common.c (renamed from drivers/staging/usbip/userspace/libsrc/usbip_common.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/libsrc/usbip_common.h (renamed from drivers/staging/usbip/userspace/libsrc/usbip_common.h) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/libsrc/usbip_host_driver.c (renamed from drivers/staging/usbip/userspace/libsrc/usbip_host_driver.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/libsrc/usbip_host_driver.h (renamed from drivers/staging/usbip/userspace/libsrc/usbip_host_driver.h) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/libsrc/vhci_driver.c (renamed from drivers/staging/usbip/userspace/libsrc/vhci_driver.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/libsrc/vhci_driver.h (renamed from drivers/staging/usbip/userspace/libsrc/vhci_driver.h) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/src/Makefile.am (renamed from drivers/staging/usbip/userspace/src/Makefile.am) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/src/usbip.c (renamed from drivers/staging/usbip/userspace/src/usbip.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/src/usbip.h (renamed from drivers/staging/usbip/userspace/src/usbip.h) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/src/usbip_attach.c (renamed from drivers/staging/usbip/userspace/src/usbip_attach.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/src/usbip_bind.c (renamed from drivers/staging/usbip/userspace/src/usbip_bind.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/src/usbip_detach.c (renamed from drivers/staging/usbip/userspace/src/usbip_detach.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/src/usbip_list.c (renamed from drivers/staging/usbip/userspace/src/usbip_list.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/src/usbip_network.c (renamed from drivers/staging/usbip/userspace/src/usbip_network.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/src/usbip_network.h (renamed from drivers/staging/usbip/userspace/src/usbip_network.h) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/src/usbip_port.c (renamed from drivers/staging/usbip/userspace/src/usbip_port.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/src/usbip_unbind.c (renamed from drivers/staging/usbip/userspace/src/usbip_unbind.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/src/usbipd.c (renamed from drivers/staging/usbip/userspace/src/usbipd.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/src/utils.c (renamed from drivers/staging/usbip/userspace/src/utils.c) | 0 | ||||
-rw-r--r-- | tools/usb/usbip/src/utils.h (renamed from drivers/staging/usbip/userspace/src/utils.h) | 0 |
95 files changed, 210 insertions, 165 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 1ff06dee651d..217dc542e808 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -9557,6 +9557,14 @@ S: Maintained | |||
9557 | F: Documentation/usb/ohci.txt | 9557 | F: Documentation/usb/ohci.txt |
9558 | F: drivers/usb/host/ohci* | 9558 | F: drivers/usb/host/ohci* |
9559 | 9559 | ||
9560 | USB OVER IP DRIVER | ||
9561 | M: Valentina Manea <valentina.manea.m@gmail.com> | ||
9562 | M: Shuah Khan <shuah.kh@samsung.com> | ||
9563 | L: linux-usb@vger.kernel.org | ||
9564 | S: Maintained | ||
9565 | F: drivers/usb/usbip/ | ||
9566 | F: tools/usb/usbip/ | ||
9567 | |||
9560 | USB PEGASUS DRIVER | 9568 | USB PEGASUS DRIVER |
9561 | M: Petko Manolov <petkan@nucleusys.com> | 9569 | M: Petko Manolov <petkan@nucleusys.com> |
9562 | L: linux-usb@vger.kernel.org | 9570 | L: linux-usb@vger.kernel.org |
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig index 2c486ea6236b..35b494f5667f 100644 --- a/drivers/staging/Kconfig +++ b/drivers/staging/Kconfig | |||
@@ -28,8 +28,6 @@ source "drivers/staging/et131x/Kconfig" | |||
28 | 28 | ||
29 | source "drivers/staging/slicoss/Kconfig" | 29 | source "drivers/staging/slicoss/Kconfig" |
30 | 30 | ||
31 | source "drivers/staging/usbip/Kconfig" | ||
32 | |||
33 | source "drivers/staging/wlan-ng/Kconfig" | 31 | source "drivers/staging/wlan-ng/Kconfig" |
34 | 32 | ||
35 | source "drivers/staging/comedi/Kconfig" | 33 | source "drivers/staging/comedi/Kconfig" |
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile index 1e1a3a10faf7..e66a5dbd9b02 100644 --- a/drivers/staging/Makefile +++ b/drivers/staging/Makefile | |||
@@ -6,7 +6,6 @@ obj-$(CONFIG_STAGING) += staging.o | |||
6 | obj-y += media/ | 6 | obj-y += media/ |
7 | obj-$(CONFIG_ET131X) += et131x/ | 7 | obj-$(CONFIG_ET131X) += et131x/ |
8 | obj-$(CONFIG_SLICOSS) += slicoss/ | 8 | obj-$(CONFIG_SLICOSS) += slicoss/ |
9 | obj-$(CONFIG_USBIP_CORE) += usbip/ | ||
10 | obj-$(CONFIG_PRISM2_USB) += wlan-ng/ | 9 | obj-$(CONFIG_PRISM2_USB) += wlan-ng/ |
11 | obj-$(CONFIG_COMEDI) += comedi/ | 10 | obj-$(CONFIG_COMEDI) += comedi/ |
12 | obj-$(CONFIG_FB_OLPC_DCON) += olpc_dcon/ | 11 | obj-$(CONFIG_FB_OLPC_DCON) += olpc_dcon/ |
diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig index e0cad4418085..cf1b19bca306 100644 --- a/drivers/usb/Kconfig +++ b/drivers/usb/Kconfig | |||
@@ -92,6 +92,8 @@ source "drivers/usb/storage/Kconfig" | |||
92 | 92 | ||
93 | source "drivers/usb/image/Kconfig" | 93 | source "drivers/usb/image/Kconfig" |
94 | 94 | ||
95 | source "drivers/usb/usbip/Kconfig" | ||
96 | |||
95 | endif | 97 | endif |
96 | 98 | ||
97 | source "drivers/usb/musb/Kconfig" | 99 | source "drivers/usb/musb/Kconfig" |
diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile index 3cba892b83a2..d7be71778059 100644 --- a/drivers/usb/Makefile +++ b/drivers/usb/Makefile | |||
@@ -60,3 +60,5 @@ obj-$(CONFIG_USB_RENESAS_USBHS) += renesas_usbhs/ | |||
60 | obj-$(CONFIG_USB_GADGET) += gadget/ | 60 | obj-$(CONFIG_USB_GADGET) += gadget/ |
61 | 61 | ||
62 | obj-$(CONFIG_USB_COMMON) += common/ | 62 | obj-$(CONFIG_USB_COMMON) += common/ |
63 | |||
64 | obj-$(CONFIG_USBIP_CORE) += usbip/ | ||
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 8a4dcbc7a75f..46f5161c7891 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
@@ -1728,8 +1728,14 @@ static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id) | |||
1728 | * - Change autosuspend delay of hub can avoid unnecessary auto | 1728 | * - Change autosuspend delay of hub can avoid unnecessary auto |
1729 | * suspend timer for hub, also may decrease power consumption | 1729 | * suspend timer for hub, also may decrease power consumption |
1730 | * of USB bus. | 1730 | * of USB bus. |
1731 | * | ||
1732 | * - If user has indicated to prevent autosuspend by passing | ||
1733 | * usbcore.autosuspend = -1 then keep autosuspend disabled. | ||
1731 | */ | 1734 | */ |
1732 | pm_runtime_set_autosuspend_delay(&hdev->dev, 0); | 1735 | #ifdef CONFIG_PM_RUNTIME |
1736 | if (hdev->dev.power.autosuspend_delay >= 0) | ||
1737 | pm_runtime_set_autosuspend_delay(&hdev->dev, 0); | ||
1738 | #endif | ||
1733 | 1739 | ||
1734 | /* | 1740 | /* |
1735 | * Hubs have proper suspend/resume support, except for root hubs | 1741 | * Hubs have proper suspend/resume support, except for root hubs |
@@ -2107,8 +2113,8 @@ void usb_disconnect(struct usb_device **pdev) | |||
2107 | { | 2113 | { |
2108 | struct usb_port *port_dev = NULL; | 2114 | struct usb_port *port_dev = NULL; |
2109 | struct usb_device *udev = *pdev; | 2115 | struct usb_device *udev = *pdev; |
2110 | struct usb_hub *hub; | 2116 | struct usb_hub *hub = NULL; |
2111 | int port1; | 2117 | int port1 = 1; |
2112 | 2118 | ||
2113 | /* mark the device as inactive, so any further urb submissions for | 2119 | /* mark the device as inactive, so any further urb submissions for |
2114 | * this device (and any of its children) will fail immediately. | 2120 | * this device (and any of its children) will fail immediately. |
@@ -4631,9 +4637,7 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, | |||
4631 | if (status != -ENODEV && | 4637 | if (status != -ENODEV && |
4632 | port1 != unreliable_port && | 4638 | port1 != unreliable_port && |
4633 | printk_ratelimit()) | 4639 | printk_ratelimit()) |
4634 | dev_err(&udev->dev, "connect-debounce failed, port %d disabled\n", | 4640 | dev_err(&port_dev->dev, "connect-debounce failed\n"); |
4635 | port1); | ||
4636 | |||
4637 | portstatus &= ~USB_PORT_STAT_CONNECTION; | 4641 | portstatus &= ~USB_PORT_STAT_CONNECTION; |
4638 | unreliable_port = port1; | 4642 | unreliable_port = port1; |
4639 | } else { | 4643 | } else { |
diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c index 0ba9c335b584..7c9618e916e2 100644 --- a/drivers/usb/dwc2/gadget.c +++ b/drivers/usb/dwc2/gadget.c | |||
@@ -1901,7 +1901,7 @@ static void s3c_hsotg_epint(struct s3c_hsotg *hsotg, unsigned int idx, | |||
1901 | static void s3c_hsotg_irq_enumdone(struct s3c_hsotg *hsotg) | 1901 | static void s3c_hsotg_irq_enumdone(struct s3c_hsotg *hsotg) |
1902 | { | 1902 | { |
1903 | u32 dsts = readl(hsotg->regs + DSTS); | 1903 | u32 dsts = readl(hsotg->regs + DSTS); |
1904 | int ep0_mps = 0, ep_mps; | 1904 | int ep0_mps = 0, ep_mps = 8; |
1905 | 1905 | ||
1906 | /* | 1906 | /* |
1907 | * This should signal the finish of the enumeration phase | 1907 | * This should signal the finish of the enumeration phase |
diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c index ef4936ff626c..9dcfbe7cd5f5 100644 --- a/drivers/usb/dwc3/dwc3-omap.c +++ b/drivers/usb/dwc3/dwc3-omap.c | |||
@@ -425,7 +425,7 @@ static void dwc3_omap_set_utmi_mode(struct dwc3_omap *omap) | |||
425 | 425 | ||
426 | static int dwc3_omap_extcon_register(struct dwc3_omap *omap) | 426 | static int dwc3_omap_extcon_register(struct dwc3_omap *omap) |
427 | { | 427 | { |
428 | u32 ret; | 428 | int ret; |
429 | struct device_node *node = omap->dev->of_node; | 429 | struct device_node *node = omap->dev->of_node; |
430 | struct extcon_dev *edev; | 430 | struct extcon_dev *edev; |
431 | 431 | ||
diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile index a186afeaa700..9add915d41f7 100644 --- a/drivers/usb/gadget/Makefile +++ b/drivers/usb/gadget/Makefile | |||
@@ -3,7 +3,7 @@ | |||
3 | # | 3 | # |
4 | subdir-ccflags-$(CONFIG_USB_GADGET_DEBUG) := -DDEBUG | 4 | subdir-ccflags-$(CONFIG_USB_GADGET_DEBUG) := -DDEBUG |
5 | subdir-ccflags-$(CONFIG_USB_GADGET_VERBOSE) += -DVERBOSE_DEBUG | 5 | subdir-ccflags-$(CONFIG_USB_GADGET_VERBOSE) += -DVERBOSE_DEBUG |
6 | ccflags-y += -I$(PWD)/drivers/usb/gadget/udc | 6 | ccflags-y += -Idrivers/usb/gadget/udc |
7 | 7 | ||
8 | obj-$(CONFIG_USB_LIBCOMPOSITE) += libcomposite.o | 8 | obj-$(CONFIG_USB_LIBCOMPOSITE) += libcomposite.o |
9 | libcomposite-y := usbstring.o config.o epautoconf.o | 9 | libcomposite-y := usbstring.o config.o epautoconf.o |
diff --git a/drivers/usb/gadget/function/Makefile b/drivers/usb/gadget/function/Makefile index 6d91f21b52a6..83ae1065149d 100644 --- a/drivers/usb/gadget/function/Makefile +++ b/drivers/usb/gadget/function/Makefile | |||
@@ -2,8 +2,8 @@ | |||
2 | # USB peripheral controller drivers | 2 | # USB peripheral controller drivers |
3 | # | 3 | # |
4 | 4 | ||
5 | ccflags-y := -I$(PWD)/drivers/usb/gadget/ | 5 | ccflags-y := -Idrivers/usb/gadget/ |
6 | ccflags-y += -I$(PWD)/drivers/usb/gadget/udc/ | 6 | ccflags-y += -Idrivers/usb/gadget/udc/ |
7 | 7 | ||
8 | # USB Functions | 8 | # USB Functions |
9 | usb_f_acm-y := f_acm.o | 9 | usb_f_acm-y := f_acm.o |
diff --git a/drivers/usb/gadget/function/u_ether.c b/drivers/usb/gadget/function/u_ether.c index d50adda913cf..6e6f87656e7b 100644 --- a/drivers/usb/gadget/function/u_ether.c +++ b/drivers/usb/gadget/function/u_ether.c | |||
@@ -1127,10 +1127,7 @@ void gether_disconnect(struct gether *link) | |||
1127 | 1127 | ||
1128 | DBG(dev, "%s\n", __func__); | 1128 | DBG(dev, "%s\n", __func__); |
1129 | 1129 | ||
1130 | netif_tx_lock(dev->net); | ||
1131 | netif_stop_queue(dev->net); | 1130 | netif_stop_queue(dev->net); |
1132 | netif_tx_unlock(dev->net); | ||
1133 | |||
1134 | netif_carrier_off(dev->net); | 1131 | netif_carrier_off(dev->net); |
1135 | 1132 | ||
1136 | /* disable endpoints, forcing (synchronous) completion | 1133 | /* disable endpoints, forcing (synchronous) completion |
diff --git a/drivers/usb/gadget/function/uvc_video.c b/drivers/usb/gadget/function/uvc_video.c index 71e896d4c5ae..a5eb9a3fbb7a 100644 --- a/drivers/usb/gadget/function/uvc_video.c +++ b/drivers/usb/gadget/function/uvc_video.c | |||
@@ -195,6 +195,7 @@ uvc_video_complete(struct usb_ep *ep, struct usb_request *req) | |||
195 | printk(KERN_INFO "Failed to queue request (%d).\n", ret); | 195 | printk(KERN_INFO "Failed to queue request (%d).\n", ret); |
196 | usb_ep_set_halt(ep); | 196 | usb_ep_set_halt(ep); |
197 | spin_unlock_irqrestore(&video->queue.irqlock, flags); | 197 | spin_unlock_irqrestore(&video->queue.irqlock, flags); |
198 | uvc_queue_cancel(queue, 0); | ||
198 | goto requeue; | 199 | goto requeue; |
199 | } | 200 | } |
200 | spin_unlock_irqrestore(&video->queue.irqlock, flags); | 201 | spin_unlock_irqrestore(&video->queue.irqlock, flags); |
@@ -281,6 +282,7 @@ error: | |||
281 | static int | 282 | static int |
282 | uvc_video_pump(struct uvc_video *video) | 283 | uvc_video_pump(struct uvc_video *video) |
283 | { | 284 | { |
285 | struct uvc_video_queue *queue = &video->queue; | ||
284 | struct usb_request *req; | 286 | struct usb_request *req; |
285 | struct uvc_buffer *buf; | 287 | struct uvc_buffer *buf; |
286 | unsigned long flags; | 288 | unsigned long flags; |
@@ -322,6 +324,7 @@ uvc_video_pump(struct uvc_video *video) | |||
322 | printk(KERN_INFO "Failed to queue request (%d)\n", ret); | 324 | printk(KERN_INFO "Failed to queue request (%d)\n", ret); |
323 | usb_ep_set_halt(video->ep); | 325 | usb_ep_set_halt(video->ep); |
324 | spin_unlock_irqrestore(&video->queue.irqlock, flags); | 326 | spin_unlock_irqrestore(&video->queue.irqlock, flags); |
327 | uvc_queue_cancel(queue, 0); | ||
325 | break; | 328 | break; |
326 | } | 329 | } |
327 | spin_unlock_irqrestore(&video->queue.irqlock, flags); | 330 | spin_unlock_irqrestore(&video->queue.irqlock, flags); |
diff --git a/drivers/usb/gadget/legacy/Makefile b/drivers/usb/gadget/legacy/Makefile index a11aad5635df..edba2d1ee0f3 100644 --- a/drivers/usb/gadget/legacy/Makefile +++ b/drivers/usb/gadget/legacy/Makefile | |||
@@ -2,9 +2,9 @@ | |||
2 | # USB gadget drivers | 2 | # USB gadget drivers |
3 | # | 3 | # |
4 | 4 | ||
5 | ccflags-y := -I$(PWD)/drivers/usb/gadget/ | 5 | ccflags-y := -Idrivers/usb/gadget/ |
6 | ccflags-y += -I$(PWD)/drivers/usb/gadget/udc/ | 6 | ccflags-y += -Idrivers/usb/gadget/udc/ |
7 | ccflags-y += -I$(PWD)/drivers/usb/gadget/function/ | 7 | ccflags-y += -Idrivers/usb/gadget/function/ |
8 | 8 | ||
9 | g_zero-y := zero.o | 9 | g_zero-y := zero.o |
10 | g_audio-y := audio.o | 10 | g_audio-y := audio.o |
diff --git a/drivers/usb/gadget/legacy/dbgp.c b/drivers/usb/gadget/legacy/dbgp.c index 986fc511a2ed..225e385a6160 100644 --- a/drivers/usb/gadget/legacy/dbgp.c +++ b/drivers/usb/gadget/legacy/dbgp.c | |||
@@ -222,10 +222,12 @@ static void dbgp_unbind(struct usb_gadget *gadget) | |||
222 | { | 222 | { |
223 | #ifdef CONFIG_USB_G_DBGP_SERIAL | 223 | #ifdef CONFIG_USB_G_DBGP_SERIAL |
224 | kfree(dbgp.serial); | 224 | kfree(dbgp.serial); |
225 | dbgp.serial = NULL; | ||
225 | #endif | 226 | #endif |
226 | if (dbgp.req) { | 227 | if (dbgp.req) { |
227 | kfree(dbgp.req->buf); | 228 | kfree(dbgp.req->buf); |
228 | usb_ep_free_request(gadget->ep0, dbgp.req); | 229 | usb_ep_free_request(gadget->ep0, dbgp.req); |
230 | dbgp.req = NULL; | ||
229 | } | 231 | } |
230 | 232 | ||
231 | gadget->ep0->driver_data = NULL; | 233 | gadget->ep0->driver_data = NULL; |
diff --git a/drivers/usb/gadget/legacy/inode.c b/drivers/usb/gadget/legacy/inode.c index 2e4ce7704908..e96077b8bf79 100644 --- a/drivers/usb/gadget/legacy/inode.c +++ b/drivers/usb/gadget/legacy/inode.c | |||
@@ -440,7 +440,7 @@ ep_write (struct file *fd, const char __user *buf, size_t len, loff_t *ptr) | |||
440 | 440 | ||
441 | value = -ENOMEM; | 441 | value = -ENOMEM; |
442 | kbuf = memdup_user(buf, len); | 442 | kbuf = memdup_user(buf, len); |
443 | if (!kbuf) { | 443 | if (IS_ERR(kbuf)) { |
444 | value = PTR_ERR(kbuf); | 444 | value = PTR_ERR(kbuf); |
445 | goto free1; | 445 | goto free1; |
446 | } | 446 | } |
diff --git a/drivers/usb/gadget/udc/Kconfig b/drivers/usb/gadget/udc/Kconfig index 5151f947a4f5..34ebaa68504c 100644 --- a/drivers/usb/gadget/udc/Kconfig +++ b/drivers/usb/gadget/udc/Kconfig | |||
@@ -332,7 +332,7 @@ config USB_GOKU | |||
332 | gadget drivers to also be dynamically linked. | 332 | gadget drivers to also be dynamically linked. |
333 | 333 | ||
334 | config USB_EG20T | 334 | config USB_EG20T |
335 | tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC" | 335 | tristate "Intel QUARK X1000/EG20T PCH/LAPIS Semiconductor IOH(ML7213/ML7831) UDC" |
336 | depends on PCI | 336 | depends on PCI |
337 | help | 337 | help |
338 | This is a USB device driver for EG20T PCH. | 338 | This is a USB device driver for EG20T PCH. |
@@ -353,6 +353,7 @@ config USB_EG20T | |||
353 | ML7213/ML7831 is companion chip for Intel Atom E6xx series. | 353 | ML7213/ML7831 is companion chip for Intel Atom E6xx series. |
354 | ML7213/ML7831 is completely compatible for Intel EG20T PCH. | 354 | ML7213/ML7831 is completely compatible for Intel EG20T PCH. |
355 | 355 | ||
356 | This driver can be used with Intel's Quark X1000 SOC platform | ||
356 | # | 357 | # |
357 | # LAST -- dummy/emulated controller | 358 | # LAST -- dummy/emulated controller |
358 | # | 359 | # |
diff --git a/drivers/usb/gadget/udc/atmel_usba_udc.c b/drivers/usb/gadget/udc/atmel_usba_udc.c index 906e65f0e4fa..c9fe67e29d35 100644 --- a/drivers/usb/gadget/udc/atmel_usba_udc.c +++ b/drivers/usb/gadget/udc/atmel_usba_udc.c | |||
@@ -1661,7 +1661,7 @@ static irqreturn_t usba_udc_irq(int irq, void *devid) | |||
1661 | if (dma_status) { | 1661 | if (dma_status) { |
1662 | int i; | 1662 | int i; |
1663 | 1663 | ||
1664 | for (i = 1; i < USBA_NR_DMAS; i++) | 1664 | for (i = 1; i <= USBA_NR_DMAS; i++) |
1665 | if (dma_status & (1 << i)) | 1665 | if (dma_status & (1 << i)) |
1666 | usba_dma_irq(udc, &udc->usba_ep[i]); | 1666 | usba_dma_irq(udc, &udc->usba_ep[i]); |
1667 | } | 1667 | } |
diff --git a/drivers/usb/gadget/udc/fusb300_udc.c b/drivers/usb/gadget/udc/fusb300_udc.c index d40255f784df..5c5d1adda7eb 100644 --- a/drivers/usb/gadget/udc/fusb300_udc.c +++ b/drivers/usb/gadget/udc/fusb300_udc.c | |||
@@ -1398,13 +1398,17 @@ static int fusb300_probe(struct platform_device *pdev) | |||
1398 | 1398 | ||
1399 | /* initialize udc */ | 1399 | /* initialize udc */ |
1400 | fusb300 = kzalloc(sizeof(struct fusb300), GFP_KERNEL); | 1400 | fusb300 = kzalloc(sizeof(struct fusb300), GFP_KERNEL); |
1401 | if (fusb300 == NULL) | 1401 | if (fusb300 == NULL) { |
1402 | ret = -ENOMEM; | ||
1402 | goto clean_up; | 1403 | goto clean_up; |
1404 | } | ||
1403 | 1405 | ||
1404 | for (i = 0; i < FUSB300_MAX_NUM_EP; i++) { | 1406 | for (i = 0; i < FUSB300_MAX_NUM_EP; i++) { |
1405 | _ep[i] = kzalloc(sizeof(struct fusb300_ep), GFP_KERNEL); | 1407 | _ep[i] = kzalloc(sizeof(struct fusb300_ep), GFP_KERNEL); |
1406 | if (_ep[i] == NULL) | 1408 | if (_ep[i] == NULL) { |
1409 | ret = -ENOMEM; | ||
1407 | goto clean_up; | 1410 | goto clean_up; |
1411 | } | ||
1408 | fusb300->ep[i] = _ep[i]; | 1412 | fusb300->ep[i] = _ep[i]; |
1409 | } | 1413 | } |
1410 | 1414 | ||
diff --git a/drivers/usb/gadget/udc/pch_udc.c b/drivers/usb/gadget/udc/pch_udc.c index eb8c3bedb57a..460d953c91b6 100644 --- a/drivers/usb/gadget/udc/pch_udc.c +++ b/drivers/usb/gadget/udc/pch_udc.c | |||
@@ -343,6 +343,7 @@ struct pch_vbus_gpio_data { | |||
343 | * @setup_data: Received setup data | 343 | * @setup_data: Received setup data |
344 | * @phys_addr: of device memory | 344 | * @phys_addr: of device memory |
345 | * @base_addr: for mapped device memory | 345 | * @base_addr: for mapped device memory |
346 | * @bar: Indicates which PCI BAR for USB regs | ||
346 | * @irq: IRQ line for the device | 347 | * @irq: IRQ line for the device |
347 | * @cfg_data: current cfg, intf, and alt in use | 348 | * @cfg_data: current cfg, intf, and alt in use |
348 | * @vbus_gpio: GPIO informaton for detecting VBUS | 349 | * @vbus_gpio: GPIO informaton for detecting VBUS |
@@ -370,14 +371,17 @@ struct pch_udc_dev { | |||
370 | struct usb_ctrlrequest setup_data; | 371 | struct usb_ctrlrequest setup_data; |
371 | unsigned long phys_addr; | 372 | unsigned long phys_addr; |
372 | void __iomem *base_addr; | 373 | void __iomem *base_addr; |
374 | unsigned bar; | ||
373 | unsigned irq; | 375 | unsigned irq; |
374 | struct pch_udc_cfg_data cfg_data; | 376 | struct pch_udc_cfg_data cfg_data; |
375 | struct pch_vbus_gpio_data vbus_gpio; | 377 | struct pch_vbus_gpio_data vbus_gpio; |
376 | }; | 378 | }; |
377 | #define to_pch_udc(g) (container_of((g), struct pch_udc_dev, gadget)) | 379 | #define to_pch_udc(g) (container_of((g), struct pch_udc_dev, gadget)) |
378 | 380 | ||
381 | #define PCH_UDC_PCI_BAR_QUARK_X1000 0 | ||
379 | #define PCH_UDC_PCI_BAR 1 | 382 | #define PCH_UDC_PCI_BAR 1 |
380 | #define PCI_DEVICE_ID_INTEL_EG20T_UDC 0x8808 | 383 | #define PCI_DEVICE_ID_INTEL_EG20T_UDC 0x8808 |
384 | #define PCI_DEVICE_ID_INTEL_QUARK_X1000_UDC 0x0939 | ||
381 | #define PCI_VENDOR_ID_ROHM 0x10DB | 385 | #define PCI_VENDOR_ID_ROHM 0x10DB |
382 | #define PCI_DEVICE_ID_ML7213_IOH_UDC 0x801D | 386 | #define PCI_DEVICE_ID_ML7213_IOH_UDC 0x801D |
383 | #define PCI_DEVICE_ID_ML7831_IOH_UDC 0x8808 | 387 | #define PCI_DEVICE_ID_ML7831_IOH_UDC 0x8808 |
@@ -3076,7 +3080,7 @@ static void pch_udc_remove(struct pci_dev *pdev) | |||
3076 | iounmap(dev->base_addr); | 3080 | iounmap(dev->base_addr); |
3077 | if (dev->mem_region) | 3081 | if (dev->mem_region) |
3078 | release_mem_region(dev->phys_addr, | 3082 | release_mem_region(dev->phys_addr, |
3079 | pci_resource_len(pdev, PCH_UDC_PCI_BAR)); | 3083 | pci_resource_len(pdev, dev->bar)); |
3080 | if (dev->active) | 3084 | if (dev->active) |
3081 | pci_disable_device(pdev); | 3085 | pci_disable_device(pdev); |
3082 | kfree(dev); | 3086 | kfree(dev); |
@@ -3144,9 +3148,15 @@ static int pch_udc_probe(struct pci_dev *pdev, | |||
3144 | dev->active = 1; | 3148 | dev->active = 1; |
3145 | pci_set_drvdata(pdev, dev); | 3149 | pci_set_drvdata(pdev, dev); |
3146 | 3150 | ||
3151 | /* Determine BAR based on PCI ID */ | ||
3152 | if (id->device == PCI_DEVICE_ID_INTEL_QUARK_X1000_UDC) | ||
3153 | dev->bar = PCH_UDC_PCI_BAR_QUARK_X1000; | ||
3154 | else | ||
3155 | dev->bar = PCH_UDC_PCI_BAR; | ||
3156 | |||
3147 | /* PCI resource allocation */ | 3157 | /* PCI resource allocation */ |
3148 | resource = pci_resource_start(pdev, 1); | 3158 | resource = pci_resource_start(pdev, dev->bar); |
3149 | len = pci_resource_len(pdev, 1); | 3159 | len = pci_resource_len(pdev, dev->bar); |
3150 | 3160 | ||
3151 | if (!request_mem_region(resource, len, KBUILD_MODNAME)) { | 3161 | if (!request_mem_region(resource, len, KBUILD_MODNAME)) { |
3152 | dev_err(&pdev->dev, "%s: pci device used already\n", __func__); | 3162 | dev_err(&pdev->dev, "%s: pci device used already\n", __func__); |
@@ -3212,6 +3222,12 @@ finished: | |||
3212 | 3222 | ||
3213 | static const struct pci_device_id pch_udc_pcidev_id[] = { | 3223 | static const struct pci_device_id pch_udc_pcidev_id[] = { |
3214 | { | 3224 | { |
3225 | PCI_DEVICE(PCI_VENDOR_ID_INTEL, | ||
3226 | PCI_DEVICE_ID_INTEL_QUARK_X1000_UDC), | ||
3227 | .class = (PCI_CLASS_SERIAL_USB << 8) | 0xfe, | ||
3228 | .class_mask = 0xffffffff, | ||
3229 | }, | ||
3230 | { | ||
3215 | PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EG20T_UDC), | 3231 | PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EG20T_UDC), |
3216 | .class = (PCI_CLASS_SERIAL_USB << 8) | 0xfe, | 3232 | .class = (PCI_CLASS_SERIAL_USB << 8) | 0xfe, |
3217 | .class_mask = 0xffffffff, | 3233 | .class_mask = 0xffffffff, |
diff --git a/drivers/usb/gadget/udc/r8a66597-udc.c b/drivers/usb/gadget/udc/r8a66597-udc.c index 46008421c1ec..de2a8713b428 100644 --- a/drivers/usb/gadget/udc/r8a66597-udc.c +++ b/drivers/usb/gadget/udc/r8a66597-udc.c | |||
@@ -1868,8 +1868,8 @@ static int r8a66597_probe(struct platform_device *pdev) | |||
1868 | 1868 | ||
1869 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 1869 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
1870 | reg = devm_ioremap_resource(&pdev->dev, res); | 1870 | reg = devm_ioremap_resource(&pdev->dev, res); |
1871 | if (!reg) | 1871 | if (IS_ERR(reg)) |
1872 | return -ENODEV; | 1872 | return PTR_ERR(reg); |
1873 | 1873 | ||
1874 | ires = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 1874 | ires = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
1875 | irq = ires->start; | 1875 | irq = ires->start; |
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index cc305c71ac3d..6130b7574908 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c | |||
@@ -1230,7 +1230,7 @@ int ehci_hub_control( | |||
1230 | if (selector == EHSET_TEST_SINGLE_STEP_SET_FEATURE) { | 1230 | if (selector == EHSET_TEST_SINGLE_STEP_SET_FEATURE) { |
1231 | spin_unlock_irqrestore(&ehci->lock, flags); | 1231 | spin_unlock_irqrestore(&ehci->lock, flags); |
1232 | retval = ehset_single_step_set_feature(hcd, | 1232 | retval = ehset_single_step_set_feature(hcd, |
1233 | wIndex); | 1233 | wIndex + 1); |
1234 | spin_lock_irqsave(&ehci->lock, flags); | 1234 | spin_lock_irqsave(&ehci->lock, flags); |
1235 | break; | 1235 | break; |
1236 | } | 1236 | } |
diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c index 687d36608155..c22a3e15a16e 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c | |||
@@ -101,6 +101,10 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) | |||
101 | /* AMD PLL quirk */ | 101 | /* AMD PLL quirk */ |
102 | if (pdev->vendor == PCI_VENDOR_ID_AMD && usb_amd_find_chipset_info()) | 102 | if (pdev->vendor == PCI_VENDOR_ID_AMD && usb_amd_find_chipset_info()) |
103 | xhci->quirks |= XHCI_AMD_PLL_FIX; | 103 | xhci->quirks |= XHCI_AMD_PLL_FIX; |
104 | |||
105 | if (pdev->vendor == PCI_VENDOR_ID_AMD) | ||
106 | xhci->quirks |= XHCI_TRUST_TX_LENGTH; | ||
107 | |||
104 | if (pdev->vendor == PCI_VENDOR_ID_INTEL) { | 108 | if (pdev->vendor == PCI_VENDOR_ID_INTEL) { |
105 | xhci->quirks |= XHCI_LPM_SUPPORT; | 109 | xhci->quirks |= XHCI_LPM_SUPPORT; |
106 | xhci->quirks |= XHCI_INTEL_HOST; | 110 | xhci->quirks |= XHCI_INTEL_HOST; |
@@ -151,6 +155,11 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) | |||
151 | if (pdev->vendor == PCI_VENDOR_ID_VIA) | 155 | if (pdev->vendor == PCI_VENDOR_ID_VIA) |
152 | xhci->quirks |= XHCI_RESET_ON_RESUME; | 156 | xhci->quirks |= XHCI_RESET_ON_RESUME; |
153 | 157 | ||
158 | /* See https://bugzilla.kernel.org/show_bug.cgi?id=79511 */ | ||
159 | if (pdev->vendor == PCI_VENDOR_ID_VIA && | ||
160 | pdev->device == 0x3432) | ||
161 | xhci->quirks |= XHCI_BROKEN_STREAMS; | ||
162 | |||
154 | if (xhci->quirks & XHCI_RESET_ON_RESUME) | 163 | if (xhci->quirks & XHCI_RESET_ON_RESUME) |
155 | xhci_dbg_trace(xhci, trace_xhci_dbg_quirks, | 164 | xhci_dbg_trace(xhci, trace_xhci_dbg_quirks, |
156 | "QUIRK: Resetting on resume"); | 165 | "QUIRK: Resetting on resume"); |
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 60fb52ae864b..abed30b82905 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c | |||
@@ -364,32 +364,6 @@ static void ring_doorbell_for_active_rings(struct xhci_hcd *xhci, | |||
364 | } | 364 | } |
365 | } | 365 | } |
366 | 366 | ||
367 | /* | ||
368 | * Find the segment that trb is in. Start searching in start_seg. | ||
369 | * If we must move past a segment that has a link TRB with a toggle cycle state | ||
370 | * bit set, then we will toggle the value pointed at by cycle_state. | ||
371 | */ | ||
372 | static struct xhci_segment *find_trb_seg( | ||
373 | struct xhci_segment *start_seg, | ||
374 | union xhci_trb *trb, int *cycle_state) | ||
375 | { | ||
376 | struct xhci_segment *cur_seg = start_seg; | ||
377 | struct xhci_generic_trb *generic_trb; | ||
378 | |||
379 | while (cur_seg->trbs > trb || | ||
380 | &cur_seg->trbs[TRBS_PER_SEGMENT - 1] < trb) { | ||
381 | generic_trb = &cur_seg->trbs[TRBS_PER_SEGMENT - 1].generic; | ||
382 | if (generic_trb->field[3] & cpu_to_le32(LINK_TOGGLE)) | ||
383 | *cycle_state ^= 0x1; | ||
384 | cur_seg = cur_seg->next; | ||
385 | if (cur_seg == start_seg) | ||
386 | /* Looped over the entire list. Oops! */ | ||
387 | return NULL; | ||
388 | } | ||
389 | return cur_seg; | ||
390 | } | ||
391 | |||
392 | |||
393 | static struct xhci_ring *xhci_triad_to_transfer_ring(struct xhci_hcd *xhci, | 367 | static struct xhci_ring *xhci_triad_to_transfer_ring(struct xhci_hcd *xhci, |
394 | unsigned int slot_id, unsigned int ep_index, | 368 | unsigned int slot_id, unsigned int ep_index, |
395 | unsigned int stream_id) | 369 | unsigned int stream_id) |
@@ -459,9 +433,12 @@ void xhci_find_new_dequeue_state(struct xhci_hcd *xhci, | |||
459 | struct xhci_virt_device *dev = xhci->devs[slot_id]; | 433 | struct xhci_virt_device *dev = xhci->devs[slot_id]; |
460 | struct xhci_virt_ep *ep = &dev->eps[ep_index]; | 434 | struct xhci_virt_ep *ep = &dev->eps[ep_index]; |
461 | struct xhci_ring *ep_ring; | 435 | struct xhci_ring *ep_ring; |
462 | struct xhci_generic_trb *trb; | 436 | struct xhci_segment *new_seg; |
437 | union xhci_trb *new_deq; | ||
463 | dma_addr_t addr; | 438 | dma_addr_t addr; |
464 | u64 hw_dequeue; | 439 | u64 hw_dequeue; |
440 | bool cycle_found = false; | ||
441 | bool td_last_trb_found = false; | ||
465 | 442 | ||
466 | ep_ring = xhci_triad_to_transfer_ring(xhci, slot_id, | 443 | ep_ring = xhci_triad_to_transfer_ring(xhci, slot_id, |
467 | ep_index, stream_id); | 444 | ep_index, stream_id); |
@@ -486,45 +463,45 @@ void xhci_find_new_dequeue_state(struct xhci_hcd *xhci, | |||
486 | hw_dequeue = le64_to_cpu(ep_ctx->deq); | 463 | hw_dequeue = le64_to_cpu(ep_ctx->deq); |
487 | } | 464 | } |
488 | 465 | ||
489 | /* Find virtual address and segment of hardware dequeue pointer */ | 466 | new_seg = ep_ring->deq_seg; |
490 | state->new_deq_seg = ep_ring->deq_seg; | 467 | new_deq = ep_ring->dequeue; |
491 | state->new_deq_ptr = ep_ring->dequeue; | 468 | state->new_cycle_state = hw_dequeue & 0x1; |
492 | while (xhci_trb_virt_to_dma(state->new_deq_seg, state->new_deq_ptr) | 469 | |
493 | != (dma_addr_t)(hw_dequeue & ~0xf)) { | ||
494 | next_trb(xhci, ep_ring, &state->new_deq_seg, | ||
495 | &state->new_deq_ptr); | ||
496 | if (state->new_deq_ptr == ep_ring->dequeue) { | ||
497 | WARN_ON(1); | ||
498 | return; | ||
499 | } | ||
500 | } | ||
501 | /* | 470 | /* |
502 | * Find cycle state for last_trb, starting at old cycle state of | 471 | * We want to find the pointer, segment and cycle state of the new trb |
503 | * hw_dequeue. If there is only one segment ring, find_trb_seg() will | 472 | * (the one after current TD's last_trb). We know the cycle state at |
504 | * return immediately and cannot toggle the cycle state if this search | 473 | * hw_dequeue, so walk the ring until both hw_dequeue and last_trb are |
505 | * wraps around, so add one more toggle manually in that case. | 474 | * found. |
506 | */ | 475 | */ |
507 | state->new_cycle_state = hw_dequeue & 0x1; | 476 | do { |
508 | if (ep_ring->first_seg == ep_ring->first_seg->next && | 477 | if (!cycle_found && xhci_trb_virt_to_dma(new_seg, new_deq) |
509 | cur_td->last_trb < state->new_deq_ptr) | 478 | == (dma_addr_t)(hw_dequeue & ~0xf)) { |
510 | state->new_cycle_state ^= 0x1; | 479 | cycle_found = true; |
480 | if (td_last_trb_found) | ||
481 | break; | ||
482 | } | ||
483 | if (new_deq == cur_td->last_trb) | ||
484 | td_last_trb_found = true; | ||
511 | 485 | ||
512 | state->new_deq_ptr = cur_td->last_trb; | 486 | if (cycle_found && |
513 | xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, | 487 | TRB_TYPE_LINK_LE32(new_deq->generic.field[3]) && |
514 | "Finding segment containing last TRB in TD."); | 488 | new_deq->generic.field[3] & cpu_to_le32(LINK_TOGGLE)) |
515 | state->new_deq_seg = find_trb_seg(state->new_deq_seg, | 489 | state->new_cycle_state ^= 0x1; |
516 | state->new_deq_ptr, &state->new_cycle_state); | 490 | |
517 | if (!state->new_deq_seg) { | 491 | next_trb(xhci, ep_ring, &new_seg, &new_deq); |
518 | WARN_ON(1); | 492 | |
519 | return; | 493 | /* Search wrapped around, bail out */ |
520 | } | 494 | if (new_deq == ep->ring->dequeue) { |
495 | xhci_err(xhci, "Error: Failed finding new dequeue state\n"); | ||
496 | state->new_deq_seg = NULL; | ||
497 | state->new_deq_ptr = NULL; | ||
498 | return; | ||
499 | } | ||
500 | |||
501 | } while (!cycle_found || !td_last_trb_found); | ||
521 | 502 | ||
522 | /* Increment to find next TRB after last_trb. Cycle if appropriate. */ | 503 | state->new_deq_seg = new_seg; |
523 | trb = &state->new_deq_ptr->generic; | 504 | state->new_deq_ptr = new_deq; |
524 | if (TRB_TYPE_LINK_LE32(trb->field[3]) && | ||
525 | (trb->field[3] & cpu_to_le32(LINK_TOGGLE))) | ||
526 | state->new_cycle_state ^= 0x1; | ||
527 | next_trb(xhci, ep_ring, &state->new_deq_seg, &state->new_deq_ptr); | ||
528 | 505 | ||
529 | /* Don't update the ring cycle state for the producer (us). */ | 506 | /* Don't update the ring cycle state for the producer (us). */ |
530 | xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, | 507 | xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, |
@@ -2487,7 +2464,8 @@ static int handle_tx_event(struct xhci_hcd *xhci, | |||
2487 | * last TRB of the previous TD. The command completion handle | 2464 | * last TRB of the previous TD. The command completion handle |
2488 | * will take care the rest. | 2465 | * will take care the rest. |
2489 | */ | 2466 | */ |
2490 | if (!event_seg && trb_comp_code == COMP_STOP_INVAL) { | 2467 | if (!event_seg && (trb_comp_code == COMP_STOP || |
2468 | trb_comp_code == COMP_STOP_INVAL)) { | ||
2491 | ret = 0; | 2469 | ret = 0; |
2492 | goto cleanup; | 2470 | goto cleanup; |
2493 | } | 2471 | } |
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index b6f21175b872..c020b094fe7d 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c | |||
@@ -2880,6 +2880,9 @@ void xhci_cleanup_stalled_ring(struct xhci_hcd *xhci, | |||
2880 | ep_index, ep->stopped_stream, ep->stopped_td, | 2880 | ep_index, ep->stopped_stream, ep->stopped_td, |
2881 | &deq_state); | 2881 | &deq_state); |
2882 | 2882 | ||
2883 | if (!deq_state.new_deq_ptr || !deq_state.new_deq_seg) | ||
2884 | return; | ||
2885 | |||
2883 | /* HW with the reset endpoint quirk will use the saved dequeue state to | 2886 | /* HW with the reset endpoint quirk will use the saved dequeue state to |
2884 | * issue a configure endpoint command later. | 2887 | * issue a configure endpoint command later. |
2885 | */ | 2888 | */ |
diff --git a/drivers/usb/misc/sisusbvga/sisusb.c b/drivers/usb/misc/sisusbvga/sisusb.c index 06b5d77cd9ad..633caf643122 100644 --- a/drivers/usb/misc/sisusbvga/sisusb.c +++ b/drivers/usb/misc/sisusbvga/sisusb.c | |||
@@ -3250,6 +3250,7 @@ static const struct usb_device_id sisusb_table[] = { | |||
3250 | { USB_DEVICE(0x0711, 0x0918) }, | 3250 | { USB_DEVICE(0x0711, 0x0918) }, |
3251 | { USB_DEVICE(0x0711, 0x0920) }, | 3251 | { USB_DEVICE(0x0711, 0x0920) }, |
3252 | { USB_DEVICE(0x0711, 0x0950) }, | 3252 | { USB_DEVICE(0x0711, 0x0950) }, |
3253 | { USB_DEVICE(0x0711, 0x5200) }, | ||
3253 | { USB_DEVICE(0x182d, 0x021c) }, | 3254 | { USB_DEVICE(0x182d, 0x021c) }, |
3254 | { USB_DEVICE(0x182d, 0x0269) }, | 3255 | { USB_DEVICE(0x182d, 0x0269) }, |
3255 | { } | 3256 | { } |
diff --git a/drivers/usb/musb/ux500_dma.c b/drivers/usb/musb/ux500_dma.c index 9aad00f11bd5..221faed9f074 100644 --- a/drivers/usb/musb/ux500_dma.c +++ b/drivers/usb/musb/ux500_dma.c | |||
@@ -96,7 +96,7 @@ static bool ux500_configure_channel(struct dma_channel *channel, | |||
96 | struct musb *musb = ux500_channel->controller->private_data; | 96 | struct musb *musb = ux500_channel->controller->private_data; |
97 | 97 | ||
98 | dev_dbg(musb->controller, | 98 | dev_dbg(musb->controller, |
99 | "packet_sz=%d, mode=%d, dma_addr=0x%llu, len=%d is_tx=%d\n", | 99 | "packet_sz=%d, mode=%d, dma_addr=0x%llx, len=%d is_tx=%d\n", |
100 | packet_sz, mode, (unsigned long long) dma_addr, | 100 | packet_sz, mode, (unsigned long long) dma_addr, |
101 | len, ux500_channel->is_tx); | 101 | len, ux500_channel->is_tx); |
102 | 102 | ||
diff --git a/drivers/usb/phy/phy-gpio-vbus-usb.c b/drivers/usb/phy/phy-gpio-vbus-usb.c index ea9e705555df..f4b14bd97e14 100644 --- a/drivers/usb/phy/phy-gpio-vbus-usb.c +++ b/drivers/usb/phy/phy-gpio-vbus-usb.c | |||
@@ -260,10 +260,8 @@ static int gpio_vbus_probe(struct platform_device *pdev) | |||
260 | 260 | ||
261 | gpio_vbus->phy.otg = devm_kzalloc(&pdev->dev, sizeof(struct usb_otg), | 261 | gpio_vbus->phy.otg = devm_kzalloc(&pdev->dev, sizeof(struct usb_otg), |
262 | GFP_KERNEL); | 262 | GFP_KERNEL); |
263 | if (!gpio_vbus->phy.otg) { | 263 | if (!gpio_vbus->phy.otg) |
264 | kfree(gpio_vbus); | ||
265 | return -ENOMEM; | 264 | return -ENOMEM; |
266 | } | ||
267 | 265 | ||
268 | platform_set_drvdata(pdev, gpio_vbus); | 266 | platform_set_drvdata(pdev, gpio_vbus); |
269 | gpio_vbus->dev = &pdev->dev; | 267 | gpio_vbus->dev = &pdev->dev; |
diff --git a/drivers/usb/phy/phy-msm-usb.c b/drivers/usb/phy/phy-msm-usb.c index e4108eec5ef4..afc09087ec36 100644 --- a/drivers/usb/phy/phy-msm-usb.c +++ b/drivers/usb/phy/phy-msm-usb.c | |||
@@ -1601,8 +1601,8 @@ static int msm_otg_probe(struct platform_device *pdev) | |||
1601 | */ | 1601 | */ |
1602 | if (motg->phy_number) { | 1602 | if (motg->phy_number) { |
1603 | phy_select = devm_ioremap_nocache(&pdev->dev, USB2_PHY_SEL, 4); | 1603 | phy_select = devm_ioremap_nocache(&pdev->dev, USB2_PHY_SEL, 4); |
1604 | if (IS_ERR(phy_select)) | 1604 | if (!phy_select) |
1605 | return PTR_ERR(phy_select); | 1605 | return -ENOMEM; |
1606 | /* Enable second PHY with the OTG port */ | 1606 | /* Enable second PHY with the OTG port */ |
1607 | writel(0x1, phy_select); | 1607 | writel(0x1, phy_select); |
1608 | } | 1608 | } |
diff --git a/drivers/usb/phy/phy-samsung-usb.h b/drivers/usb/phy/phy-samsung-usb.h index 68771bfd1825..80eedd45a20a 100644 --- a/drivers/usb/phy/phy-samsung-usb.h +++ b/drivers/usb/phy/phy-samsung-usb.h | |||
@@ -216,7 +216,7 @@ | |||
216 | 216 | ||
217 | #define EXYNOS5_DRD_PHYPARAM1 (0x20) | 217 | #define EXYNOS5_DRD_PHYPARAM1 (0x20) |
218 | 218 | ||
219 | #define PHYPARAM1_PCS_TXDEEMPH_MASK (0x1f << 0) | 219 | #define PHYPARAM1_PCS_TXDEEMPH_MASK (0x3f << 0) |
220 | #define PHYPARAM1_PCS_TXDEEMPH (0x1c) | 220 | #define PHYPARAM1_PCS_TXDEEMPH (0x1c) |
221 | 221 | ||
222 | #define EXYNOS5_DRD_PHYTERM (0x24) | 222 | #define EXYNOS5_DRD_PHYTERM (0x24) |
diff --git a/drivers/usb/phy/phy.c b/drivers/usb/phy/phy.c index 6d0f6080eceb..045cd309367a 100644 --- a/drivers/usb/phy/phy.c +++ b/drivers/usb/phy/phy.c | |||
@@ -232,6 +232,9 @@ struct usb_phy *usb_get_phy_dev(struct device *dev, u8 index) | |||
232 | phy = __usb_find_phy_dev(dev, &phy_bind_list, index); | 232 | phy = __usb_find_phy_dev(dev, &phy_bind_list, index); |
233 | if (IS_ERR(phy) || !try_module_get(phy->dev->driver->owner)) { | 233 | if (IS_ERR(phy) || !try_module_get(phy->dev->driver->owner)) { |
234 | dev_dbg(dev, "unable to find transceiver\n"); | 234 | dev_dbg(dev, "unable to find transceiver\n"); |
235 | if (!IS_ERR(phy)) | ||
236 | phy = ERR_PTR(-ENODEV); | ||
237 | |||
235 | goto err0; | 238 | goto err0; |
236 | } | 239 | } |
237 | 240 | ||
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 216ce3078270..824ea5e7ec8b 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
@@ -146,6 +146,7 @@ static const struct usb_device_id id_table_combined[] = { | |||
146 | { USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) }, | 146 | { USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) }, |
147 | { USB_DEVICE(FTDI_VID, FTDI_CANUSB_PID) }, | 147 | { USB_DEVICE(FTDI_VID, FTDI_CANUSB_PID) }, |
148 | { USB_DEVICE(FTDI_VID, FTDI_CANDAPTER_PID) }, | 148 | { USB_DEVICE(FTDI_VID, FTDI_CANDAPTER_PID) }, |
149 | { USB_DEVICE(FTDI_VID, FTDI_BM_ATOM_NANO_PID) }, | ||
149 | { USB_DEVICE(FTDI_VID, FTDI_NXTCAM_PID) }, | 150 | { USB_DEVICE(FTDI_VID, FTDI_NXTCAM_PID) }, |
150 | { USB_DEVICE(FTDI_VID, FTDI_EV3CON_PID) }, | 151 | { USB_DEVICE(FTDI_VID, FTDI_EV3CON_PID) }, |
151 | { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_0_PID) }, | 152 | { USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_0_PID) }, |
@@ -934,6 +935,8 @@ static const struct usb_device_id id_table_combined[] = { | |||
934 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_2_PID) }, | 935 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_2_PID) }, |
935 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_3_PID) }, | 936 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_3_PID) }, |
936 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_4_PID) }, | 937 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_4_PID) }, |
938 | /* ekey Devices */ | ||
939 | { USB_DEVICE(FTDI_VID, FTDI_EKEY_CONV_USB_PID) }, | ||
937 | /* Infineon Devices */ | 940 | /* Infineon Devices */ |
938 | { USB_DEVICE_INTERFACE_NUMBER(INFINEON_VID, INFINEON_TRIBOARD_PID, 1) }, | 941 | { USB_DEVICE_INTERFACE_NUMBER(INFINEON_VID, INFINEON_TRIBOARD_PID, 1) }, |
939 | { } /* Terminating entry */ | 942 | { } /* Terminating entry */ |
diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h index 1e58d90a0b6c..70b0b1d88ae9 100644 --- a/drivers/usb/serial/ftdi_sio_ids.h +++ b/drivers/usb/serial/ftdi_sio_ids.h | |||
@@ -42,6 +42,8 @@ | |||
42 | /* www.candapter.com Ewert Energy Systems CANdapter device */ | 42 | /* www.candapter.com Ewert Energy Systems CANdapter device */ |
43 | #define FTDI_CANDAPTER_PID 0x9F80 /* Product Id */ | 43 | #define FTDI_CANDAPTER_PID 0x9F80 /* Product Id */ |
44 | 44 | ||
45 | #define FTDI_BM_ATOM_NANO_PID 0xa559 /* Basic Micro ATOM Nano USB2Serial */ | ||
46 | |||
45 | /* | 47 | /* |
46 | * Texas Instruments XDS100v2 JTAG / BeagleBone A3 | 48 | * Texas Instruments XDS100v2 JTAG / BeagleBone A3 |
47 | * http://processors.wiki.ti.com/index.php/XDS100 | 49 | * http://processors.wiki.ti.com/index.php/XDS100 |
@@ -1378,3 +1380,8 @@ | |||
1378 | #define BRAINBOXES_US_160_6_PID 0x9006 /* US-160 16xRS232 1Mbaud Port 11 and 12 */ | 1380 | #define BRAINBOXES_US_160_6_PID 0x9006 /* US-160 16xRS232 1Mbaud Port 11 and 12 */ |
1379 | #define BRAINBOXES_US_160_7_PID 0x9007 /* US-160 16xRS232 1Mbaud Port 13 and 14 */ | 1381 | #define BRAINBOXES_US_160_7_PID 0x9007 /* US-160 16xRS232 1Mbaud Port 13 and 14 */ |
1380 | #define BRAINBOXES_US_160_8_PID 0x9008 /* US-160 16xRS232 1Mbaud Port 15 and 16 */ | 1382 | #define BRAINBOXES_US_160_8_PID 0x9008 /* US-160 16xRS232 1Mbaud Port 15 and 16 */ |
1383 | |||
1384 | /* | ||
1385 | * ekey biometric systems GmbH (http://ekey.net/) | ||
1386 | */ | ||
1387 | #define FTDI_EKEY_CONV_USB_PID 0xCB08 /* Converter USB */ | ||
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index a9688940543d..54a8120897a6 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
@@ -275,8 +275,12 @@ static void option_instat_callback(struct urb *urb); | |||
275 | #define ZTE_PRODUCT_MF622 0x0001 | 275 | #define ZTE_PRODUCT_MF622 0x0001 |
276 | #define ZTE_PRODUCT_MF628 0x0015 | 276 | #define ZTE_PRODUCT_MF628 0x0015 |
277 | #define ZTE_PRODUCT_MF626 0x0031 | 277 | #define ZTE_PRODUCT_MF626 0x0031 |
278 | #define ZTE_PRODUCT_MC2718 0xffe8 | ||
279 | #define ZTE_PRODUCT_AC2726 0xfff1 | 278 | #define ZTE_PRODUCT_AC2726 0xfff1 |
279 | #define ZTE_PRODUCT_CDMA_TECH 0xfffe | ||
280 | #define ZTE_PRODUCT_AC8710T 0xffff | ||
281 | #define ZTE_PRODUCT_MC2718 0xffe8 | ||
282 | #define ZTE_PRODUCT_AD3812 0xffeb | ||
283 | #define ZTE_PRODUCT_MC2716 0xffed | ||
280 | 284 | ||
281 | #define BENQ_VENDOR_ID 0x04a5 | 285 | #define BENQ_VENDOR_ID 0x04a5 |
282 | #define BENQ_PRODUCT_H10 0x4068 | 286 | #define BENQ_PRODUCT_H10 0x4068 |
@@ -494,6 +498,10 @@ static void option_instat_callback(struct urb *urb); | |||
494 | #define INOVIA_VENDOR_ID 0x20a6 | 498 | #define INOVIA_VENDOR_ID 0x20a6 |
495 | #define INOVIA_SEW858 0x1105 | 499 | #define INOVIA_SEW858 0x1105 |
496 | 500 | ||
501 | /* VIA Telecom */ | ||
502 | #define VIATELECOM_VENDOR_ID 0x15eb | ||
503 | #define VIATELECOM_PRODUCT_CDS7 0x0001 | ||
504 | |||
497 | /* some devices interfaces need special handling due to a number of reasons */ | 505 | /* some devices interfaces need special handling due to a number of reasons */ |
498 | enum option_blacklist_reason { | 506 | enum option_blacklist_reason { |
499 | OPTION_BLACKLIST_NONE = 0, | 507 | OPTION_BLACKLIST_NONE = 0, |
@@ -527,10 +535,18 @@ static const struct option_blacklist_info zte_k3765_z_blacklist = { | |||
527 | .reserved = BIT(4), | 535 | .reserved = BIT(4), |
528 | }; | 536 | }; |
529 | 537 | ||
538 | static const struct option_blacklist_info zte_ad3812_z_blacklist = { | ||
539 | .sendsetup = BIT(0) | BIT(1) | BIT(2), | ||
540 | }; | ||
541 | |||
530 | static const struct option_blacklist_info zte_mc2718_z_blacklist = { | 542 | static const struct option_blacklist_info zte_mc2718_z_blacklist = { |
531 | .sendsetup = BIT(1) | BIT(2) | BIT(3) | BIT(4), | 543 | .sendsetup = BIT(1) | BIT(2) | BIT(3) | BIT(4), |
532 | }; | 544 | }; |
533 | 545 | ||
546 | static const struct option_blacklist_info zte_mc2716_z_blacklist = { | ||
547 | .sendsetup = BIT(1) | BIT(2) | BIT(3), | ||
548 | }; | ||
549 | |||
534 | static const struct option_blacklist_info huawei_cdc12_blacklist = { | 550 | static const struct option_blacklist_info huawei_cdc12_blacklist = { |
535 | .reserved = BIT(1) | BIT(2), | 551 | .reserved = BIT(1) | BIT(2), |
536 | }; | 552 | }; |
@@ -1070,6 +1086,7 @@ static const struct usb_device_id option_ids[] = { | |||
1070 | { USB_DEVICE_INTERFACE_CLASS(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_1012, 0xff) }, | 1086 | { USB_DEVICE_INTERFACE_CLASS(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_1012, 0xff) }, |
1071 | { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC650) }, | 1087 | { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC650) }, |
1072 | { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, | 1088 | { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, |
1089 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6000)}, /* ZTE AC8700 */ | ||
1073 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ | 1090 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ |
1074 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */ | 1091 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */ |
1075 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */ | 1092 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */ |
@@ -1544,13 +1561,18 @@ static const struct usb_device_id option_ids[] = { | |||
1544 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff93, 0xff, 0xff, 0xff) }, | 1561 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff93, 0xff, 0xff, 0xff) }, |
1545 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff94, 0xff, 0xff, 0xff) }, | 1562 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff94, 0xff, 0xff, 0xff) }, |
1546 | 1563 | ||
1547 | /* NOTE: most ZTE CDMA devices should be driven by zte_ev, not option */ | 1564 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH, 0xff, 0xff, 0xff) }, |
1565 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) }, | ||
1566 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710T, 0xff, 0xff, 0xff) }, | ||
1548 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2718, 0xff, 0xff, 0xff), | 1567 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2718, 0xff, 0xff, 0xff), |
1549 | .driver_info = (kernel_ulong_t)&zte_mc2718_z_blacklist }, | 1568 | .driver_info = (kernel_ulong_t)&zte_mc2718_z_blacklist }, |
1569 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AD3812, 0xff, 0xff, 0xff), | ||
1570 | .driver_info = (kernel_ulong_t)&zte_ad3812_z_blacklist }, | ||
1571 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2716, 0xff, 0xff, 0xff), | ||
1572 | .driver_info = (kernel_ulong_t)&zte_mc2716_z_blacklist }, | ||
1550 | { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x01) }, | 1573 | { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x01) }, |
1551 | { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x05) }, | 1574 | { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x05) }, |
1552 | { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x86, 0x10) }, | 1575 | { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x86, 0x10) }, |
1553 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) }, | ||
1554 | 1576 | ||
1555 | { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) }, | 1577 | { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) }, |
1556 | { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) }, | 1578 | { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) }, |
@@ -1724,6 +1746,7 @@ static const struct usb_device_id option_ids[] = { | |||
1724 | { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* D-Link DWM-152/C1 */ | 1746 | { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* D-Link DWM-152/C1 */ |
1725 | { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e02, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/C1 */ | 1747 | { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e02, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/C1 */ |
1726 | { USB_DEVICE(INOVIA_VENDOR_ID, INOVIA_SEW858) }, | 1748 | { USB_DEVICE(INOVIA_VENDOR_ID, INOVIA_SEW858) }, |
1749 | { USB_DEVICE(VIATELECOM_VENDOR_ID, VIATELECOM_PRODUCT_CDS7) }, | ||
1727 | { } /* Terminating entry */ | 1750 | { } /* Terminating entry */ |
1728 | }; | 1751 | }; |
1729 | MODULE_DEVICE_TABLE(usb, option_ids); | 1752 | MODULE_DEVICE_TABLE(usb, option_ids); |
@@ -1916,6 +1939,8 @@ static void option_instat_callback(struct urb *urb) | |||
1916 | dev_dbg(dev, "%s: type %x req %x\n", __func__, | 1939 | dev_dbg(dev, "%s: type %x req %x\n", __func__, |
1917 | req_pkt->bRequestType, req_pkt->bRequest); | 1940 | req_pkt->bRequestType, req_pkt->bRequest); |
1918 | } | 1941 | } |
1942 | } else if (status == -ENOENT || status == -ESHUTDOWN) { | ||
1943 | dev_dbg(dev, "%s: urb stopped: %d\n", __func__, status); | ||
1919 | } else | 1944 | } else |
1920 | dev_err(dev, "%s: error %d\n", __func__, status); | 1945 | dev_err(dev, "%s: error %d\n", __func__, status); |
1921 | 1946 | ||
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c index b3d5a35c0d4b..e9bad928039f 100644 --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c | |||
@@ -45,6 +45,7 @@ static const struct usb_device_id id_table[] = { | |||
45 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_GPRS) }, | 45 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_GPRS) }, |
46 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_HCR331) }, | 46 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_HCR331) }, |
47 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_MOTOROLA) }, | 47 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_MOTOROLA) }, |
48 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_ZTEK) }, | ||
48 | { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID) }, | 49 | { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID) }, |
49 | { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) }, | 50 | { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) }, |
50 | { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID) }, | 51 | { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID) }, |
diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h index 42bc082896ac..71fd9da1d6e7 100644 --- a/drivers/usb/serial/pl2303.h +++ b/drivers/usb/serial/pl2303.h | |||
@@ -22,6 +22,7 @@ | |||
22 | #define PL2303_PRODUCT_ID_GPRS 0x0609 | 22 | #define PL2303_PRODUCT_ID_GPRS 0x0609 |
23 | #define PL2303_PRODUCT_ID_HCR331 0x331a | 23 | #define PL2303_PRODUCT_ID_HCR331 0x331a |
24 | #define PL2303_PRODUCT_ID_MOTOROLA 0x0307 | 24 | #define PL2303_PRODUCT_ID_MOTOROLA 0x0307 |
25 | #define PL2303_PRODUCT_ID_ZTEK 0xe1f1 | ||
25 | 26 | ||
26 | #define ATEN_VENDOR_ID 0x0557 | 27 | #define ATEN_VENDOR_ID 0x0557 |
27 | #define ATEN_VENDOR_ID2 0x0547 | 28 | #define ATEN_VENDOR_ID2 0x0547 |
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c index 02de3110fe94..475723c006f9 100644 --- a/drivers/usb/serial/usb-serial.c +++ b/drivers/usb/serial/usb-serial.c | |||
@@ -764,29 +764,39 @@ static int usb_serial_probe(struct usb_interface *interface, | |||
764 | if (usb_endpoint_is_bulk_in(endpoint)) { | 764 | if (usb_endpoint_is_bulk_in(endpoint)) { |
765 | /* we found a bulk in endpoint */ | 765 | /* we found a bulk in endpoint */ |
766 | dev_dbg(ddev, "found bulk in on endpoint %d\n", i); | 766 | dev_dbg(ddev, "found bulk in on endpoint %d\n", i); |
767 | bulk_in_endpoint[num_bulk_in] = endpoint; | 767 | if (num_bulk_in < MAX_NUM_PORTS) { |
768 | ++num_bulk_in; | 768 | bulk_in_endpoint[num_bulk_in] = endpoint; |
769 | ++num_bulk_in; | ||
770 | } | ||
769 | } | 771 | } |
770 | 772 | ||
771 | if (usb_endpoint_is_bulk_out(endpoint)) { | 773 | if (usb_endpoint_is_bulk_out(endpoint)) { |
772 | /* we found a bulk out endpoint */ | 774 | /* we found a bulk out endpoint */ |
773 | dev_dbg(ddev, "found bulk out on endpoint %d\n", i); | 775 | dev_dbg(ddev, "found bulk out on endpoint %d\n", i); |
774 | bulk_out_endpoint[num_bulk_out] = endpoint; | 776 | if (num_bulk_out < MAX_NUM_PORTS) { |
775 | ++num_bulk_out; | 777 | bulk_out_endpoint[num_bulk_out] = endpoint; |
778 | ++num_bulk_out; | ||
779 | } | ||
776 | } | 780 | } |
777 | 781 | ||
778 | if (usb_endpoint_is_int_in(endpoint)) { | 782 | if (usb_endpoint_is_int_in(endpoint)) { |
779 | /* we found a interrupt in endpoint */ | 783 | /* we found a interrupt in endpoint */ |
780 | dev_dbg(ddev, "found interrupt in on endpoint %d\n", i); | 784 | dev_dbg(ddev, "found interrupt in on endpoint %d\n", i); |
781 | interrupt_in_endpoint[num_interrupt_in] = endpoint; | 785 | if (num_interrupt_in < MAX_NUM_PORTS) { |
782 | ++num_interrupt_in; | 786 | interrupt_in_endpoint[num_interrupt_in] = |
787 | endpoint; | ||
788 | ++num_interrupt_in; | ||
789 | } | ||
783 | } | 790 | } |
784 | 791 | ||
785 | if (usb_endpoint_is_int_out(endpoint)) { | 792 | if (usb_endpoint_is_int_out(endpoint)) { |
786 | /* we found an interrupt out endpoint */ | 793 | /* we found an interrupt out endpoint */ |
787 | dev_dbg(ddev, "found interrupt out on endpoint %d\n", i); | 794 | dev_dbg(ddev, "found interrupt out on endpoint %d\n", i); |
788 | interrupt_out_endpoint[num_interrupt_out] = endpoint; | 795 | if (num_interrupt_out < MAX_NUM_PORTS) { |
789 | ++num_interrupt_out; | 796 | interrupt_out_endpoint[num_interrupt_out] = |
797 | endpoint; | ||
798 | ++num_interrupt_out; | ||
799 | } | ||
790 | } | 800 | } |
791 | } | 801 | } |
792 | 802 | ||
@@ -809,8 +819,10 @@ static int usb_serial_probe(struct usb_interface *interface, | |||
809 | if (usb_endpoint_is_int_in(endpoint)) { | 819 | if (usb_endpoint_is_int_in(endpoint)) { |
810 | /* we found a interrupt in endpoint */ | 820 | /* we found a interrupt in endpoint */ |
811 | dev_dbg(ddev, "found interrupt in for Prolific device on separate interface\n"); | 821 | dev_dbg(ddev, "found interrupt in for Prolific device on separate interface\n"); |
812 | interrupt_in_endpoint[num_interrupt_in] = endpoint; | 822 | if (num_interrupt_in < MAX_NUM_PORTS) { |
813 | ++num_interrupt_in; | 823 | interrupt_in_endpoint[num_interrupt_in] = endpoint; |
824 | ++num_interrupt_in; | ||
825 | } | ||
814 | } | 826 | } |
815 | } | 827 | } |
816 | } | 828 | } |
@@ -850,6 +862,11 @@ static int usb_serial_probe(struct usb_interface *interface, | |||
850 | num_ports = type->num_ports; | 862 | num_ports = type->num_ports; |
851 | } | 863 | } |
852 | 864 | ||
865 | if (num_ports > MAX_NUM_PORTS) { | ||
866 | dev_warn(ddev, "too many ports requested: %d\n", num_ports); | ||
867 | num_ports = MAX_NUM_PORTS; | ||
868 | } | ||
869 | |||
853 | serial->num_ports = num_ports; | 870 | serial->num_ports = num_ports; |
854 | serial->num_bulk_in = num_bulk_in; | 871 | serial->num_bulk_in = num_bulk_in; |
855 | serial->num_bulk_out = num_bulk_out; | 872 | serial->num_bulk_out = num_bulk_out; |
diff --git a/drivers/usb/serial/whiteheat.c b/drivers/usb/serial/whiteheat.c index e62f2dff8b7d..6c3734d2b45a 100644 --- a/drivers/usb/serial/whiteheat.c +++ b/drivers/usb/serial/whiteheat.c | |||
@@ -514,6 +514,10 @@ static void command_port_read_callback(struct urb *urb) | |||
514 | dev_dbg(&urb->dev->dev, "%s - command_info is NULL, exiting.\n", __func__); | 514 | dev_dbg(&urb->dev->dev, "%s - command_info is NULL, exiting.\n", __func__); |
515 | return; | 515 | return; |
516 | } | 516 | } |
517 | if (!urb->actual_length) { | ||
518 | dev_dbg(&urb->dev->dev, "%s - empty response, exiting.\n", __func__); | ||
519 | return; | ||
520 | } | ||
517 | if (status) { | 521 | if (status) { |
518 | dev_dbg(&urb->dev->dev, "%s - nonzero urb status: %d\n", __func__, status); | 522 | dev_dbg(&urb->dev->dev, "%s - nonzero urb status: %d\n", __func__, status); |
519 | if (status != -ENOENT) | 523 | if (status != -ENOENT) |
@@ -534,7 +538,8 @@ static void command_port_read_callback(struct urb *urb) | |||
534 | /* These are unsolicited reports from the firmware, hence no | 538 | /* These are unsolicited reports from the firmware, hence no |
535 | waiting command to wakeup */ | 539 | waiting command to wakeup */ |
536 | dev_dbg(&urb->dev->dev, "%s - event received\n", __func__); | 540 | dev_dbg(&urb->dev->dev, "%s - event received\n", __func__); |
537 | } else if (data[0] == WHITEHEAT_GET_DTR_RTS) { | 541 | } else if ((data[0] == WHITEHEAT_GET_DTR_RTS) && |
542 | (urb->actual_length - 1 <= sizeof(command_info->result_buffer))) { | ||
538 | memcpy(command_info->result_buffer, &data[1], | 543 | memcpy(command_info->result_buffer, &data[1], |
539 | urb->actual_length - 1); | 544 | urb->actual_length - 1); |
540 | command_info->command_finished = WHITEHEAT_CMD_COMPLETE; | 545 | command_info->command_finished = WHITEHEAT_CMD_COMPLETE; |
diff --git a/drivers/usb/serial/zte_ev.c b/drivers/usb/serial/zte_ev.c index e40ab739c4a6..1a132e9e947a 100644 --- a/drivers/usb/serial/zte_ev.c +++ b/drivers/usb/serial/zte_ev.c | |||
@@ -272,28 +272,8 @@ static void zte_ev_usb_serial_close(struct usb_serial_port *port) | |||
272 | } | 272 | } |
273 | 273 | ||
274 | static const struct usb_device_id id_table[] = { | 274 | static const struct usb_device_id id_table[] = { |
275 | /* AC8710, AC8710T */ | ||
276 | { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffff, 0xff, 0xff, 0xff) }, | ||
277 | /* AC8700 */ | ||
278 | { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xfffe, 0xff, 0xff, 0xff) }, | ||
279 | /* MG880 */ | 275 | /* MG880 */ |
280 | { USB_DEVICE(0x19d2, 0xfffd) }, | 276 | { USB_DEVICE(0x19d2, 0xfffd) }, |
281 | { USB_DEVICE(0x19d2, 0xfffc) }, | ||
282 | { USB_DEVICE(0x19d2, 0xfffb) }, | ||
283 | /* AC8710_V3 */ | ||
284 | { USB_DEVICE(0x19d2, 0xfff6) }, | ||
285 | { USB_DEVICE(0x19d2, 0xfff7) }, | ||
286 | { USB_DEVICE(0x19d2, 0xfff8) }, | ||
287 | { USB_DEVICE(0x19d2, 0xfff9) }, | ||
288 | { USB_DEVICE(0x19d2, 0xffee) }, | ||
289 | /* AC2716, MC2716 */ | ||
290 | { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffed, 0xff, 0xff, 0xff) }, | ||
291 | /* AD3812 */ | ||
292 | { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffeb, 0xff, 0xff, 0xff) }, | ||
293 | { USB_DEVICE(0x19d2, 0xffec) }, | ||
294 | { USB_DEVICE(0x05C6, 0x3197) }, | ||
295 | { USB_DEVICE(0x05C6, 0x6000) }, | ||
296 | { USB_DEVICE(0x05C6, 0x9008) }, | ||
297 | { }, | 277 | { }, |
298 | }; | 278 | }; |
299 | MODULE_DEVICE_TABLE(usb, id_table); | 279 | MODULE_DEVICE_TABLE(usb, id_table); |
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index 80a5b366255f..7ef99b2f3aaf 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h | |||
@@ -922,6 +922,12 @@ UNUSUAL_DEV( 0x069b, 0x3004, 0x0001, 0x0001, | |||
922 | USB_SC_DEVICE, USB_PR_DEVICE, NULL, | 922 | USB_SC_DEVICE, USB_PR_DEVICE, NULL, |
923 | US_FL_FIX_CAPACITY ), | 923 | US_FL_FIX_CAPACITY ), |
924 | 924 | ||
925 | UNUSUAL_DEV( 0x06ca, 0x2003, 0x0100, 0x0100, | ||
926 | "Newer Technology", | ||
927 | "uSCSI", | ||
928 | USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_euscsi_init, | ||
929 | US_FL_SCM_MULT_TARG ), | ||
930 | |||
925 | /* Reported by Adrian Pilchowiec <adi1981@epf.pl> */ | 931 | /* Reported by Adrian Pilchowiec <adi1981@epf.pl> */ |
926 | UNUSUAL_DEV( 0x071b, 0x3203, 0x0000, 0x0000, | 932 | UNUSUAL_DEV( 0x071b, 0x3203, 0x0000, 0x0000, |
927 | "RockChip", | 933 | "RockChip", |
diff --git a/drivers/staging/usbip/Kconfig b/drivers/usb/usbip/Kconfig index bd99e9e47e50..bd99e9e47e50 100644 --- a/drivers/staging/usbip/Kconfig +++ b/drivers/usb/usbip/Kconfig | |||
diff --git a/drivers/staging/usbip/Makefile b/drivers/usb/usbip/Makefile index 9ecd61545be1..9ecd61545be1 100644 --- a/drivers/staging/usbip/Makefile +++ b/drivers/usb/usbip/Makefile | |||
diff --git a/drivers/staging/usbip/README b/drivers/usb/usbip/README index 41a2cf2e77a6..41a2cf2e77a6 100644 --- a/drivers/staging/usbip/README +++ b/drivers/usb/usbip/README | |||
diff --git a/drivers/staging/usbip/stub.h b/drivers/usb/usbip/stub.h index 266e2b0ce9a8..266e2b0ce9a8 100644 --- a/drivers/staging/usbip/stub.h +++ b/drivers/usb/usbip/stub.h | |||
diff --git a/drivers/staging/usbip/stub_dev.c b/drivers/usb/usbip/stub_dev.c index 51d0c7188738..fac20e0434c0 100644 --- a/drivers/staging/usbip/stub_dev.c +++ b/drivers/usb/usbip/stub_dev.c | |||
@@ -26,33 +26,6 @@ | |||
26 | #include "stub.h" | 26 | #include "stub.h" |
27 | 27 | ||
28 | /* | 28 | /* |
29 | * Define device IDs here if you want to explicitly limit exportable devices. | ||
30 | * In most cases, wildcard matching will be okay because driver binding can be | ||
31 | * changed dynamically by a userland program. | ||
32 | */ | ||
33 | static struct usb_device_id stub_table[] = { | ||
34 | #if 0 | ||
35 | /* just an example */ | ||
36 | { USB_DEVICE(0x05ac, 0x0301) }, /* Mac 1 button mouse */ | ||
37 | { USB_DEVICE(0x0430, 0x0009) }, /* Plat Home Keyboard */ | ||
38 | { USB_DEVICE(0x059b, 0x0001) }, /* Iomega USB Zip 100 */ | ||
39 | { USB_DEVICE(0x04b3, 0x4427) }, /* IBM USB CD-ROM */ | ||
40 | { USB_DEVICE(0x05a9, 0xa511) }, /* LifeView USB cam */ | ||
41 | { USB_DEVICE(0x55aa, 0x0201) }, /* Imation card reader */ | ||
42 | { USB_DEVICE(0x046d, 0x0870) }, /* Qcam Express(QV-30) */ | ||
43 | { USB_DEVICE(0x04bb, 0x0101) }, /* IO-DATA HD 120GB */ | ||
44 | { USB_DEVICE(0x04bb, 0x0904) }, /* IO-DATA USB-ET/TX */ | ||
45 | { USB_DEVICE(0x04bb, 0x0201) }, /* IO-DATA USB-ET/TX */ | ||
46 | { USB_DEVICE(0x08bb, 0x2702) }, /* ONKYO USB Speaker */ | ||
47 | { USB_DEVICE(0x046d, 0x08b2) }, /* Logicool Qcam 4000 Pro */ | ||
48 | #endif | ||
49 | /* magic for wild card */ | ||
50 | { .driver_info = 1 }, | ||
51 | { 0, } /* Terminating entry */ | ||
52 | }; | ||
53 | MODULE_DEVICE_TABLE(usb, stub_table); | ||
54 | |||
55 | /* | ||
56 | * usbip_status shows the status of usbip-host as long as this driver is bound | 29 | * usbip_status shows the status of usbip-host as long as this driver is bound |
57 | * to the target device. | 30 | * to the target device. |
58 | */ | 31 | */ |
diff --git a/drivers/staging/usbip/stub_main.c b/drivers/usb/usbip/stub_main.c index 44ab43fc4fcc..44ab43fc4fcc 100644 --- a/drivers/staging/usbip/stub_main.c +++ b/drivers/usb/usbip/stub_main.c | |||
diff --git a/drivers/staging/usbip/stub_rx.c b/drivers/usb/usbip/stub_rx.c index 00e475c51a12..00e475c51a12 100644 --- a/drivers/staging/usbip/stub_rx.c +++ b/drivers/usb/usbip/stub_rx.c | |||
diff --git a/drivers/staging/usbip/stub_tx.c b/drivers/usb/usbip/stub_tx.c index dbcabc9dbe0d..dbcabc9dbe0d 100644 --- a/drivers/staging/usbip/stub_tx.c +++ b/drivers/usb/usbip/stub_tx.c | |||
diff --git a/drivers/staging/usbip/usbip_common.c b/drivers/usb/usbip/usbip_common.c index facaaf003f19..facaaf003f19 100644 --- a/drivers/staging/usbip/usbip_common.c +++ b/drivers/usb/usbip/usbip_common.c | |||
diff --git a/drivers/staging/usbip/usbip_common.h b/drivers/usb/usbip/usbip_common.h index 4da3866a037d..86b08475c254 100644 --- a/drivers/staging/usbip/usbip_common.h +++ b/drivers/usb/usbip/usbip_common.h | |||
@@ -29,7 +29,7 @@ | |||
29 | #include <linux/types.h> | 29 | #include <linux/types.h> |
30 | #include <linux/usb.h> | 30 | #include <linux/usb.h> |
31 | #include <linux/wait.h> | 31 | #include <linux/wait.h> |
32 | #include "uapi/usbip.h" | 32 | #include <uapi/linux/usbip.h> |
33 | 33 | ||
34 | #define USBIP_VERSION "1.0.0" | 34 | #define USBIP_VERSION "1.0.0" |
35 | 35 | ||
diff --git a/drivers/staging/usbip/usbip_event.c b/drivers/usb/usbip/usbip_event.c index 64933b993d7a..64933b993d7a 100644 --- a/drivers/staging/usbip/usbip_event.c +++ b/drivers/usb/usbip/usbip_event.c | |||
diff --git a/drivers/staging/usbip/usbip_protocol.txt b/drivers/usb/usbip/usbip_protocol.txt index 16b6fe27284c..16b6fe27284c 100644 --- a/drivers/staging/usbip/usbip_protocol.txt +++ b/drivers/usb/usbip/usbip_protocol.txt | |||
diff --git a/drivers/staging/usbip/vhci.h b/drivers/usb/usbip/vhci.h index a863a98a91ce..a863a98a91ce 100644 --- a/drivers/staging/usbip/vhci.h +++ b/drivers/usb/usbip/vhci.h | |||
diff --git a/drivers/staging/usbip/vhci_hcd.c b/drivers/usb/usbip/vhci_hcd.c index c02374b6049c..c02374b6049c 100644 --- a/drivers/staging/usbip/vhci_hcd.c +++ b/drivers/usb/usbip/vhci_hcd.c | |||
diff --git a/drivers/staging/usbip/vhci_rx.c b/drivers/usb/usbip/vhci_rx.c index 00e4a54308e4..00e4a54308e4 100644 --- a/drivers/staging/usbip/vhci_rx.c +++ b/drivers/usb/usbip/vhci_rx.c | |||
diff --git a/drivers/staging/usbip/vhci_sysfs.c b/drivers/usb/usbip/vhci_sysfs.c index 211f43f67ea2..211f43f67ea2 100644 --- a/drivers/staging/usbip/vhci_sysfs.c +++ b/drivers/usb/usbip/vhci_sysfs.c | |||
diff --git a/drivers/staging/usbip/vhci_tx.c b/drivers/usb/usbip/vhci_tx.c index 409fd99f3257..409fd99f3257 100644 --- a/drivers/staging/usbip/vhci_tx.c +++ b/drivers/usb/usbip/vhci_tx.c | |||
diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c index 3e2e4ed20157..e279015be466 100644 --- a/drivers/usb/wusbcore/wa-xfer.c +++ b/drivers/usb/wusbcore/wa-xfer.c | |||
@@ -2602,6 +2602,7 @@ static void wa_buf_in_cb(struct urb *urb) | |||
2602 | dev = &wa->usb_iface->dev; | 2602 | dev = &wa->usb_iface->dev; |
2603 | --(wa->active_buf_in_urbs); | 2603 | --(wa->active_buf_in_urbs); |
2604 | active_buf_in_urbs = wa->active_buf_in_urbs; | 2604 | active_buf_in_urbs = wa->active_buf_in_urbs; |
2605 | rpipe = xfer->ep->hcpriv; | ||
2605 | 2606 | ||
2606 | if (usb_pipeisoc(xfer->urb->pipe)) { | 2607 | if (usb_pipeisoc(xfer->urb->pipe)) { |
2607 | struct usb_iso_packet_descriptor *iso_frame_desc = | 2608 | struct usb_iso_packet_descriptor *iso_frame_desc = |
@@ -2659,7 +2660,6 @@ static void wa_buf_in_cb(struct urb *urb) | |||
2659 | resubmit_dti = (isoc_data_frame_count == | 2660 | resubmit_dti = (isoc_data_frame_count == |
2660 | urb_frame_count); | 2661 | urb_frame_count); |
2661 | } else if (active_buf_in_urbs == 0) { | 2662 | } else if (active_buf_in_urbs == 0) { |
2662 | rpipe = xfer->ep->hcpriv; | ||
2663 | dev_dbg(dev, | 2663 | dev_dbg(dev, |
2664 | "xfer %p 0x%08X#%u: data in done (%zu bytes)\n", | 2664 | "xfer %p 0x%08X#%u: data in done (%zu bytes)\n", |
2665 | xfer, wa_xfer_id(xfer), seg->index, | 2665 | xfer, wa_xfer_id(xfer), seg->index, |
@@ -2685,7 +2685,6 @@ static void wa_buf_in_cb(struct urb *urb) | |||
2685 | */ | 2685 | */ |
2686 | resubmit_dti = wa->dti_state != WA_DTI_TRANSFER_RESULT_PENDING; | 2686 | resubmit_dti = wa->dti_state != WA_DTI_TRANSFER_RESULT_PENDING; |
2687 | spin_lock_irqsave(&xfer->lock, flags); | 2687 | spin_lock_irqsave(&xfer->lock, flags); |
2688 | rpipe = xfer->ep->hcpriv; | ||
2689 | if (printk_ratelimit()) | 2688 | if (printk_ratelimit()) |
2690 | dev_err(dev, "xfer %p 0x%08X#%u: data in error %d\n", | 2689 | dev_err(dev, "xfer %p 0x%08X#%u: data in error %d\n", |
2691 | xfer, wa_xfer_id(xfer), seg->index, | 2690 | xfer, wa_xfer_id(xfer), seg->index, |
diff --git a/drivers/staging/usbip/uapi/usbip.h b/include/uapi/linux/usbip.h index fa5db30ede36..fa5db30ede36 100644 --- a/drivers/staging/usbip/uapi/usbip.h +++ b/include/uapi/linux/usbip.h | |||
diff --git a/drivers/staging/usbip/userspace/.gitignore b/tools/usb/usbip/.gitignore index 9aad9e30a8ba..9aad9e30a8ba 100644 --- a/drivers/staging/usbip/userspace/.gitignore +++ b/tools/usb/usbip/.gitignore | |||
diff --git a/drivers/staging/usbip/userspace/AUTHORS b/tools/usb/usbip/AUTHORS index a27ea8d03aec..a27ea8d03aec 100644 --- a/drivers/staging/usbip/userspace/AUTHORS +++ b/tools/usb/usbip/AUTHORS | |||
diff --git a/drivers/staging/usbip/userspace/COPYING b/tools/usb/usbip/COPYING index c5611e48a8e1..c5611e48a8e1 100644 --- a/drivers/staging/usbip/userspace/COPYING +++ b/tools/usb/usbip/COPYING | |||
diff --git a/drivers/staging/usbip/userspace/INSTALL b/tools/usb/usbip/INSTALL index d3c5b40a9409..d3c5b40a9409 100644 --- a/drivers/staging/usbip/userspace/INSTALL +++ b/tools/usb/usbip/INSTALL | |||
diff --git a/drivers/staging/usbip/userspace/Makefile.am b/tools/usb/usbip/Makefile.am index 66f8bf038c9f..66f8bf038c9f 100644 --- a/drivers/staging/usbip/userspace/Makefile.am +++ b/tools/usb/usbip/Makefile.am | |||
diff --git a/drivers/staging/usbip/userspace/README b/tools/usb/usbip/README index 831f49fea3ce..831f49fea3ce 100644 --- a/drivers/staging/usbip/userspace/README +++ b/tools/usb/usbip/README | |||
diff --git a/drivers/staging/usbip/userspace/autogen.sh b/tools/usb/usbip/autogen.sh index e1112d3fcbf6..e1112d3fcbf6 100755 --- a/drivers/staging/usbip/userspace/autogen.sh +++ b/tools/usb/usbip/autogen.sh | |||
diff --git a/drivers/staging/usbip/userspace/cleanup.sh b/tools/usb/usbip/cleanup.sh index 955c3ccb729a..955c3ccb729a 100755 --- a/drivers/staging/usbip/userspace/cleanup.sh +++ b/tools/usb/usbip/cleanup.sh | |||
diff --git a/drivers/staging/usbip/userspace/configure.ac b/tools/usb/usbip/configure.ac index 607d05c5ccfd..607d05c5ccfd 100644 --- a/drivers/staging/usbip/userspace/configure.ac +++ b/tools/usb/usbip/configure.ac | |||
diff --git a/drivers/staging/usbip/userspace/doc/usbip.8 b/tools/usb/usbip/doc/usbip.8 index a6097be25d28..a6097be25d28 100644 --- a/drivers/staging/usbip/userspace/doc/usbip.8 +++ b/tools/usb/usbip/doc/usbip.8 | |||
diff --git a/drivers/staging/usbip/userspace/doc/usbipd.8 b/tools/usb/usbip/doc/usbipd.8 index ac4635db3f03..ac4635db3f03 100644 --- a/drivers/staging/usbip/userspace/doc/usbipd.8 +++ b/tools/usb/usbip/doc/usbipd.8 | |||
diff --git a/drivers/staging/usbip/userspace/libsrc/Makefile.am b/tools/usb/usbip/libsrc/Makefile.am index 7c8f8a4d54e4..7c8f8a4d54e4 100644 --- a/drivers/staging/usbip/userspace/libsrc/Makefile.am +++ b/tools/usb/usbip/libsrc/Makefile.am | |||
diff --git a/drivers/staging/usbip/userspace/libsrc/list.h b/tools/usb/usbip/libsrc/list.h index 8d0c936e184f..8d0c936e184f 100644 --- a/drivers/staging/usbip/userspace/libsrc/list.h +++ b/tools/usb/usbip/libsrc/list.h | |||
diff --git a/drivers/staging/usbip/userspace/libsrc/names.c b/tools/usb/usbip/libsrc/names.c index 81ff8522405c..81ff8522405c 100644 --- a/drivers/staging/usbip/userspace/libsrc/names.c +++ b/tools/usb/usbip/libsrc/names.c | |||
diff --git a/drivers/staging/usbip/userspace/libsrc/names.h b/tools/usb/usbip/libsrc/names.h index 680926512de2..680926512de2 100644 --- a/drivers/staging/usbip/userspace/libsrc/names.h +++ b/tools/usb/usbip/libsrc/names.h | |||
diff --git a/drivers/staging/usbip/userspace/libsrc/sysfs_utils.c b/tools/usb/usbip/libsrc/sysfs_utils.c index 36ac88ece0b8..36ac88ece0b8 100644 --- a/drivers/staging/usbip/userspace/libsrc/sysfs_utils.c +++ b/tools/usb/usbip/libsrc/sysfs_utils.c | |||
diff --git a/drivers/staging/usbip/userspace/libsrc/sysfs_utils.h b/tools/usb/usbip/libsrc/sysfs_utils.h index 32ac1d105d18..32ac1d105d18 100644 --- a/drivers/staging/usbip/userspace/libsrc/sysfs_utils.h +++ b/tools/usb/usbip/libsrc/sysfs_utils.h | |||
diff --git a/drivers/staging/usbip/userspace/libsrc/usbip_common.c b/tools/usb/usbip/libsrc/usbip_common.c index ac73710473de..ac73710473de 100644 --- a/drivers/staging/usbip/userspace/libsrc/usbip_common.c +++ b/tools/usb/usbip/libsrc/usbip_common.c | |||
diff --git a/drivers/staging/usbip/userspace/libsrc/usbip_common.h b/tools/usb/usbip/libsrc/usbip_common.h index 5a0e95edf4df..5a0e95edf4df 100644 --- a/drivers/staging/usbip/userspace/libsrc/usbip_common.h +++ b/tools/usb/usbip/libsrc/usbip_common.h | |||
diff --git a/drivers/staging/usbip/userspace/libsrc/usbip_host_driver.c b/tools/usb/usbip/libsrc/usbip_host_driver.c index bef08d5c44e8..bef08d5c44e8 100644 --- a/drivers/staging/usbip/userspace/libsrc/usbip_host_driver.c +++ b/tools/usb/usbip/libsrc/usbip_host_driver.c | |||
diff --git a/drivers/staging/usbip/userspace/libsrc/usbip_host_driver.h b/tools/usb/usbip/libsrc/usbip_host_driver.h index 2a31f855c616..2a31f855c616 100644 --- a/drivers/staging/usbip/userspace/libsrc/usbip_host_driver.h +++ b/tools/usb/usbip/libsrc/usbip_host_driver.h | |||
diff --git a/drivers/staging/usbip/userspace/libsrc/vhci_driver.c b/tools/usb/usbip/libsrc/vhci_driver.c index ad9204773533..ad9204773533 100644 --- a/drivers/staging/usbip/userspace/libsrc/vhci_driver.c +++ b/tools/usb/usbip/libsrc/vhci_driver.c | |||
diff --git a/drivers/staging/usbip/userspace/libsrc/vhci_driver.h b/tools/usb/usbip/libsrc/vhci_driver.h index fa2316cf2cac..fa2316cf2cac 100644 --- a/drivers/staging/usbip/userspace/libsrc/vhci_driver.h +++ b/tools/usb/usbip/libsrc/vhci_driver.h | |||
diff --git a/drivers/staging/usbip/userspace/src/Makefile.am b/tools/usb/usbip/src/Makefile.am index e81a4ebadeff..e81a4ebadeff 100644 --- a/drivers/staging/usbip/userspace/src/Makefile.am +++ b/tools/usb/usbip/src/Makefile.am | |||
diff --git a/drivers/staging/usbip/userspace/src/usbip.c b/tools/usb/usbip/src/usbip.c index d7599d943529..d7599d943529 100644 --- a/drivers/staging/usbip/userspace/src/usbip.c +++ b/tools/usb/usbip/src/usbip.c | |||
diff --git a/drivers/staging/usbip/userspace/src/usbip.h b/tools/usb/usbip/src/usbip.h index 84fe66a9d8ad..84fe66a9d8ad 100644 --- a/drivers/staging/usbip/userspace/src/usbip.h +++ b/tools/usb/usbip/src/usbip.h | |||
diff --git a/drivers/staging/usbip/userspace/src/usbip_attach.c b/tools/usb/usbip/src/usbip_attach.c index d58a14dfc094..d58a14dfc094 100644 --- a/drivers/staging/usbip/userspace/src/usbip_attach.c +++ b/tools/usb/usbip/src/usbip_attach.c | |||
diff --git a/drivers/staging/usbip/userspace/src/usbip_bind.c b/tools/usb/usbip/src/usbip_bind.c index fa46141ae68b..fa46141ae68b 100644 --- a/drivers/staging/usbip/userspace/src/usbip_bind.c +++ b/tools/usb/usbip/src/usbip_bind.c | |||
diff --git a/drivers/staging/usbip/userspace/src/usbip_detach.c b/tools/usb/usbip/src/usbip_detach.c index 05c6d15856eb..05c6d15856eb 100644 --- a/drivers/staging/usbip/userspace/src/usbip_detach.c +++ b/tools/usb/usbip/src/usbip_detach.c | |||
diff --git a/drivers/staging/usbip/userspace/src/usbip_list.c b/tools/usb/usbip/src/usbip_list.c index d5ce34a410e7..d5ce34a410e7 100644 --- a/drivers/staging/usbip/userspace/src/usbip_list.c +++ b/tools/usb/usbip/src/usbip_list.c | |||
diff --git a/drivers/staging/usbip/userspace/src/usbip_network.c b/tools/usb/usbip/src/usbip_network.c index b4c37e76a6e0..b4c37e76a6e0 100644 --- a/drivers/staging/usbip/userspace/src/usbip_network.c +++ b/tools/usb/usbip/src/usbip_network.c | |||
diff --git a/drivers/staging/usbip/userspace/src/usbip_network.h b/tools/usb/usbip/src/usbip_network.h index c1e875cf1078..c1e875cf1078 100644 --- a/drivers/staging/usbip/userspace/src/usbip_network.h +++ b/tools/usb/usbip/src/usbip_network.h | |||
diff --git a/drivers/staging/usbip/userspace/src/usbip_port.c b/tools/usb/usbip/src/usbip_port.c index a2e884fd9226..a2e884fd9226 100644 --- a/drivers/staging/usbip/userspace/src/usbip_port.c +++ b/tools/usb/usbip/src/usbip_port.c | |||
diff --git a/drivers/staging/usbip/userspace/src/usbip_unbind.c b/tools/usb/usbip/src/usbip_unbind.c index a4a496c9cbaf..a4a496c9cbaf 100644 --- a/drivers/staging/usbip/userspace/src/usbip_unbind.c +++ b/tools/usb/usbip/src/usbip_unbind.c | |||
diff --git a/drivers/staging/usbip/userspace/src/usbipd.c b/tools/usb/usbip/src/usbipd.c index 2f87f2d348ba..2f87f2d348ba 100644 --- a/drivers/staging/usbip/userspace/src/usbipd.c +++ b/tools/usb/usbip/src/usbipd.c | |||
diff --git a/drivers/staging/usbip/userspace/src/utils.c b/tools/usb/usbip/src/utils.c index 2b3d6d235015..2b3d6d235015 100644 --- a/drivers/staging/usbip/userspace/src/utils.c +++ b/tools/usb/usbip/src/utils.c | |||
diff --git a/drivers/staging/usbip/userspace/src/utils.h b/tools/usb/usbip/src/utils.h index 5916fd3e02a6..5916fd3e02a6 100644 --- a/drivers/staging/usbip/userspace/src/utils.h +++ b/tools/usb/usbip/src/utils.h | |||