diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-18 19:57:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-18 19:57:00 -0400 |
commit | 7e55f81ecf592d269b9430d9c06db509fc3f19f9 (patch) | |
tree | 127ec2f59dad0bed386bf7f84759eddcbad2dd7c | |
parent | ea2388f2813ec7871c40a8b18afb80b5674d6e1d (diff) | |
parent | 94d72f008909610710bb1841d665eeeb010a0be1 (diff) |
Merge tag 'usb-3.15-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB fixes from Greg KH:
"Here are a number of tiny USB fixes and new device ids for 3.15-rc2.
Nothing major, just issues some people have reported.
All of these have been in linux-next"
* tag 'usb-3.15-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
uas: fix deadlocky memory allocations
uas: fix error handling during scsi_scan()
uas: fix GFP_NOIO under spinlock
uwb: adds missing error handling
USB: cdc-acm: Remove Motorola/Telit H24 serial interfaces from ACM driver
USB: ohci-jz4740: FEAT_POWER is a port feature, not a hub feature
USB: ohci-jz4740: Fix uninitialized variable warning
USB: EHCI: tegra: set txfill_tuning
usb: ehci-platform: Return immediately from suspend if ehci_suspend fails
usb: ehci-exynos: Return immediately from suspend if ehci_suspend fails
USB: fix crash during hotplug of PCI USB controller card
USB: cdc-acm: fix double usb_autopm_put_interface() in acm_port_activate()
usb: usb-common: fix typo for usb_state_string
USB: usb_wwan: fix handling of missing bulk endpoints
USB: pl2303: add ids for Hewlett-Packard HP POS pole displays
USB: cp210x: Add 8281 (Nanotec Plug & Drive)
usb: option driver, add support for Telit UE910v2
Revert "USB: serial: add usbid for dell wwan card to sierra.c"
USB: serial: ftdi_sio: add id for Brainboxes serial cards
-rw-r--r-- | drivers/usb/class/cdc-acm.c | 34 | ||||
-rw-r--r-- | drivers/usb/core/hcd-pci.c | 2 | ||||
-rw-r--r-- | drivers/usb/host/ehci-exynos.c | 2 | ||||
-rw-r--r-- | drivers/usb/host/ehci-platform.c | 2 | ||||
-rw-r--r-- | drivers/usb/host/ehci-tegra.c | 23 | ||||
-rw-r--r-- | drivers/usb/host/ohci-jz4740.c | 6 | ||||
-rw-r--r-- | drivers/usb/serial/cp210x.c | 1 | ||||
-rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 33 | ||||
-rw-r--r-- | drivers/usb/serial/ftdi_sio_ids.h | 37 | ||||
-rw-r--r-- | drivers/usb/serial/option.c | 2 | ||||
-rw-r--r-- | drivers/usb/serial/pl2303.c | 3 | ||||
-rw-r--r-- | drivers/usb/serial/pl2303.h | 5 | ||||
-rw-r--r-- | drivers/usb/serial/sierra.c | 1 | ||||
-rw-r--r-- | drivers/usb/serial/usb_wwan.c | 9 | ||||
-rw-r--r-- | drivers/usb/storage/uas.c | 13 | ||||
-rw-r--r-- | drivers/usb/usb-common.c | 2 | ||||
-rw-r--r-- | drivers/uwb/drp.c | 5 |
17 files changed, 151 insertions, 29 deletions
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index 900f7ff805ee..904efb6035b0 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c | |||
@@ -518,13 +518,16 @@ static int acm_port_activate(struct tty_port *port, struct tty_struct *tty) | |||
518 | if (usb_submit_urb(acm->ctrlurb, GFP_KERNEL)) { | 518 | if (usb_submit_urb(acm->ctrlurb, GFP_KERNEL)) { |
519 | dev_err(&acm->control->dev, | 519 | dev_err(&acm->control->dev, |
520 | "%s - usb_submit_urb(ctrl irq) failed\n", __func__); | 520 | "%s - usb_submit_urb(ctrl irq) failed\n", __func__); |
521 | usb_autopm_put_interface(acm->control); | ||
521 | goto error_submit_urb; | 522 | goto error_submit_urb; |
522 | } | 523 | } |
523 | 524 | ||
524 | acm->ctrlout = ACM_CTRL_DTR | ACM_CTRL_RTS; | 525 | acm->ctrlout = ACM_CTRL_DTR | ACM_CTRL_RTS; |
525 | if (acm_set_control(acm, acm->ctrlout) < 0 && | 526 | if (acm_set_control(acm, acm->ctrlout) < 0 && |
526 | (acm->ctrl_caps & USB_CDC_CAP_LINE)) | 527 | (acm->ctrl_caps & USB_CDC_CAP_LINE)) { |
528 | usb_autopm_put_interface(acm->control); | ||
527 | goto error_set_control; | 529 | goto error_set_control; |
530 | } | ||
528 | 531 | ||
529 | usb_autopm_put_interface(acm->control); | 532 | usb_autopm_put_interface(acm->control); |
530 | 533 | ||
@@ -549,7 +552,6 @@ error_submit_read_urbs: | |||
549 | error_set_control: | 552 | error_set_control: |
550 | usb_kill_urb(acm->ctrlurb); | 553 | usb_kill_urb(acm->ctrlurb); |
551 | error_submit_urb: | 554 | error_submit_urb: |
552 | usb_autopm_put_interface(acm->control); | ||
553 | error_get_interface: | 555 | error_get_interface: |
554 | disconnected: | 556 | disconnected: |
555 | mutex_unlock(&acm->mutex); | 557 | mutex_unlock(&acm->mutex); |
@@ -1652,13 +1654,27 @@ static const struct usb_device_id acm_ids[] = { | |||
1652 | }, | 1654 | }, |
1653 | /* Motorola H24 HSPA module: */ | 1655 | /* Motorola H24 HSPA module: */ |
1654 | { USB_DEVICE(0x22b8, 0x2d91) }, /* modem */ | 1656 | { USB_DEVICE(0x22b8, 0x2d91) }, /* modem */ |
1655 | { USB_DEVICE(0x22b8, 0x2d92) }, /* modem + diagnostics */ | 1657 | { USB_DEVICE(0x22b8, 0x2d92), /* modem + diagnostics */ |
1656 | { USB_DEVICE(0x22b8, 0x2d93) }, /* modem + AT port */ | 1658 | .driver_info = NO_UNION_NORMAL, /* handle only modem interface */ |
1657 | { USB_DEVICE(0x22b8, 0x2d95) }, /* modem + AT port + diagnostics */ | 1659 | }, |
1658 | { USB_DEVICE(0x22b8, 0x2d96) }, /* modem + NMEA */ | 1660 | { USB_DEVICE(0x22b8, 0x2d93), /* modem + AT port */ |
1659 | { USB_DEVICE(0x22b8, 0x2d97) }, /* modem + diagnostics + NMEA */ | 1661 | .driver_info = NO_UNION_NORMAL, /* handle only modem interface */ |
1660 | { USB_DEVICE(0x22b8, 0x2d99) }, /* modem + AT port + NMEA */ | 1662 | }, |
1661 | { USB_DEVICE(0x22b8, 0x2d9a) }, /* modem + AT port + diagnostics + NMEA */ | 1663 | { USB_DEVICE(0x22b8, 0x2d95), /* modem + AT port + diagnostics */ |
1664 | .driver_info = NO_UNION_NORMAL, /* handle only modem interface */ | ||
1665 | }, | ||
1666 | { USB_DEVICE(0x22b8, 0x2d96), /* modem + NMEA */ | ||
1667 | .driver_info = NO_UNION_NORMAL, /* handle only modem interface */ | ||
1668 | }, | ||
1669 | { USB_DEVICE(0x22b8, 0x2d97), /* modem + diagnostics + NMEA */ | ||
1670 | .driver_info = NO_UNION_NORMAL, /* handle only modem interface */ | ||
1671 | }, | ||
1672 | { USB_DEVICE(0x22b8, 0x2d99), /* modem + AT port + NMEA */ | ||
1673 | .driver_info = NO_UNION_NORMAL, /* handle only modem interface */ | ||
1674 | }, | ||
1675 | { USB_DEVICE(0x22b8, 0x2d9a), /* modem + AT port + diagnostics + NMEA */ | ||
1676 | .driver_info = NO_UNION_NORMAL, /* handle only modem interface */ | ||
1677 | }, | ||
1662 | 1678 | ||
1663 | { USB_DEVICE(0x0572, 0x1329), /* Hummingbird huc56s (Conexant) */ | 1679 | { USB_DEVICE(0x0572, 0x1329), /* Hummingbird huc56s (Conexant) */ |
1664 | .driver_info = NO_UNION_NORMAL, /* union descriptor misplaced on | 1680 | .driver_info = NO_UNION_NORMAL, /* union descriptor misplaced on |
diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c index d59d99347d54..1f02e65fe305 100644 --- a/drivers/usb/core/hcd-pci.c +++ b/drivers/usb/core/hcd-pci.c | |||
@@ -75,7 +75,7 @@ static void for_each_companion(struct pci_dev *pdev, struct usb_hcd *hcd, | |||
75 | PCI_SLOT(companion->devfn) != slot) | 75 | PCI_SLOT(companion->devfn) != slot) |
76 | continue; | 76 | continue; |
77 | companion_hcd = pci_get_drvdata(companion); | 77 | companion_hcd = pci_get_drvdata(companion); |
78 | if (!companion_hcd) | 78 | if (!companion_hcd || !companion_hcd->self.root_hub) |
79 | continue; | 79 | continue; |
80 | fn(pdev, hcd, companion, companion_hcd); | 80 | fn(pdev, hcd, companion, companion_hcd); |
81 | } | 81 | } |
diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c index d1d8c47777c5..7f425acd9be5 100644 --- a/drivers/usb/host/ehci-exynos.c +++ b/drivers/usb/host/ehci-exynos.c | |||
@@ -212,6 +212,8 @@ static int exynos_ehci_suspend(struct device *dev) | |||
212 | int rc; | 212 | int rc; |
213 | 213 | ||
214 | rc = ehci_suspend(hcd, do_wakeup); | 214 | rc = ehci_suspend(hcd, do_wakeup); |
215 | if (rc) | ||
216 | return rc; | ||
215 | 217 | ||
216 | if (exynos_ehci->otg) | 218 | if (exynos_ehci->otg) |
217 | exynos_ehci->otg->set_host(exynos_ehci->otg, &hcd->self); | 219 | exynos_ehci->otg->set_host(exynos_ehci->otg, &hcd->self); |
diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c index b3a0e11073aa..c7dd93aad20c 100644 --- a/drivers/usb/host/ehci-platform.c +++ b/drivers/usb/host/ehci-platform.c | |||
@@ -303,6 +303,8 @@ static int ehci_platform_suspend(struct device *dev) | |||
303 | int ret; | 303 | int ret; |
304 | 304 | ||
305 | ret = ehci_suspend(hcd, do_wakeup); | 305 | ret = ehci_suspend(hcd, do_wakeup); |
306 | if (ret) | ||
307 | return ret; | ||
306 | 308 | ||
307 | if (pdata->power_suspend) | 309 | if (pdata->power_suspend) |
308 | pdata->power_suspend(pdev); | 310 | pdata->power_suspend(pdev); |
diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c index 27ac6ad53c3d..7ef00ecb0da1 100644 --- a/drivers/usb/host/ehci-tegra.c +++ b/drivers/usb/host/ehci-tegra.c | |||
@@ -509,8 +509,31 @@ static struct platform_driver tegra_ehci_driver = { | |||
509 | } | 509 | } |
510 | }; | 510 | }; |
511 | 511 | ||
512 | static int tegra_ehci_reset(struct usb_hcd *hcd) | ||
513 | { | ||
514 | struct ehci_hcd *ehci = hcd_to_ehci(hcd); | ||
515 | int retval; | ||
516 | int txfifothresh; | ||
517 | |||
518 | retval = ehci_setup(hcd); | ||
519 | if (retval) | ||
520 | return retval; | ||
521 | |||
522 | /* | ||
523 | * We should really pull this value out of tegra_ehci_soc_config, but | ||
524 | * to avoid needing access to it, make use of the fact that Tegra20 is | ||
525 | * the only one so far that needs a value of 10, and Tegra20 is the | ||
526 | * only one which doesn't set has_hostpc. | ||
527 | */ | ||
528 | txfifothresh = ehci->has_hostpc ? 0x10 : 10; | ||
529 | ehci_writel(ehci, txfifothresh << 16, &ehci->regs->txfill_tuning); | ||
530 | |||
531 | return 0; | ||
532 | } | ||
533 | |||
512 | static const struct ehci_driver_overrides tegra_overrides __initconst = { | 534 | static const struct ehci_driver_overrides tegra_overrides __initconst = { |
513 | .extra_priv_size = sizeof(struct tegra_ehci_hcd), | 535 | .extra_priv_size = sizeof(struct tegra_ehci_hcd), |
536 | .reset = tegra_ehci_reset, | ||
514 | }; | 537 | }; |
515 | 538 | ||
516 | static int __init ehci_tegra_init(void) | 539 | static int __init ehci_tegra_init(void) |
diff --git a/drivers/usb/host/ohci-jz4740.c b/drivers/usb/host/ohci-jz4740.c index af8dc1b92d75..c2c221a332eb 100644 --- a/drivers/usb/host/ohci-jz4740.c +++ b/drivers/usb/host/ohci-jz4740.c | |||
@@ -82,14 +82,14 @@ static int ohci_jz4740_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, | |||
82 | u16 wIndex, char *buf, u16 wLength) | 82 | u16 wIndex, char *buf, u16 wLength) |
83 | { | 83 | { |
84 | struct jz4740_ohci_hcd *jz4740_ohci = hcd_to_jz4740_hcd(hcd); | 84 | struct jz4740_ohci_hcd *jz4740_ohci = hcd_to_jz4740_hcd(hcd); |
85 | int ret; | 85 | int ret = 0; |
86 | 86 | ||
87 | switch (typeReq) { | 87 | switch (typeReq) { |
88 | case SetHubFeature: | 88 | case SetPortFeature: |
89 | if (wValue == USB_PORT_FEAT_POWER) | 89 | if (wValue == USB_PORT_FEAT_POWER) |
90 | ret = ohci_jz4740_set_vbus_power(jz4740_ohci, true); | 90 | ret = ohci_jz4740_set_vbus_power(jz4740_ohci, true); |
91 | break; | 91 | break; |
92 | case ClearHubFeature: | 92 | case ClearPortFeature: |
93 | if (wValue == USB_PORT_FEAT_POWER) | 93 | if (wValue == USB_PORT_FEAT_POWER) |
94 | ret = ohci_jz4740_set_vbus_power(jz4740_ohci, false); | 94 | ret = ohci_jz4740_set_vbus_power(jz4740_ohci, false); |
95 | break; | 95 | break; |
diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c index 95fa1217afdd..762e4a5f5ae9 100644 --- a/drivers/usb/serial/cp210x.c +++ b/drivers/usb/serial/cp210x.c | |||
@@ -104,6 +104,7 @@ static const struct usb_device_id id_table[] = { | |||
104 | { USB_DEVICE(0x10C4, 0x8218) }, /* Lipowsky Industrie Elektronik GmbH, HARP-1 */ | 104 | { USB_DEVICE(0x10C4, 0x8218) }, /* Lipowsky Industrie Elektronik GmbH, HARP-1 */ |
105 | { USB_DEVICE(0x10C4, 0x822B) }, /* Modem EDGE(GSM) Comander 2 */ | 105 | { USB_DEVICE(0x10C4, 0x822B) }, /* Modem EDGE(GSM) Comander 2 */ |
106 | { USB_DEVICE(0x10C4, 0x826B) }, /* Cygnal Integrated Products, Inc., Fasttrax GPS demonstration module */ | 106 | { USB_DEVICE(0x10C4, 0x826B) }, /* Cygnal Integrated Products, Inc., Fasttrax GPS demonstration module */ |
107 | { USB_DEVICE(0x10C4, 0x8281) }, /* Nanotec Plug & Drive */ | ||
107 | { USB_DEVICE(0x10C4, 0x8293) }, /* Telegesis ETRX2USB */ | 108 | { USB_DEVICE(0x10C4, 0x8293) }, /* Telegesis ETRX2USB */ |
108 | { USB_DEVICE(0x10C4, 0x82F9) }, /* Procyon AVS */ | 109 | { USB_DEVICE(0x10C4, 0x82F9) }, /* Procyon AVS */ |
109 | { USB_DEVICE(0x10C4, 0x8341) }, /* Siemens MC35PU GPRS Modem */ | 110 | { USB_DEVICE(0x10C4, 0x8341) }, /* Siemens MC35PU GPRS Modem */ |
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 44ab12986805..7c6e1dedeb06 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
@@ -909,6 +909,39 @@ static const struct usb_device_id id_table_combined[] = { | |||
909 | { USB_DEVICE(FTDI_VID, FTDI_Z3X_PID) }, | 909 | { USB_DEVICE(FTDI_VID, FTDI_Z3X_PID) }, |
910 | /* Cressi Devices */ | 910 | /* Cressi Devices */ |
911 | { USB_DEVICE(FTDI_VID, FTDI_CRESSI_PID) }, | 911 | { USB_DEVICE(FTDI_VID, FTDI_CRESSI_PID) }, |
912 | /* Brainboxes Devices */ | ||
913 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_VX_001_PID) }, | ||
914 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_VX_012_PID) }, | ||
915 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_VX_023_PID) }, | ||
916 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_VX_034_PID) }, | ||
917 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_101_PID) }, | ||
918 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_1_PID) }, | ||
919 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_2_PID) }, | ||
920 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_3_PID) }, | ||
921 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_4_PID) }, | ||
922 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_5_PID) }, | ||
923 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_6_PID) }, | ||
924 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_7_PID) }, | ||
925 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_160_8_PID) }, | ||
926 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_257_PID) }, | ||
927 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_279_1_PID) }, | ||
928 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_279_2_PID) }, | ||
929 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_279_3_PID) }, | ||
930 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_279_4_PID) }, | ||
931 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_313_PID) }, | ||
932 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_324_PID) }, | ||
933 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_346_1_PID) }, | ||
934 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_346_2_PID) }, | ||
935 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_357_PID) }, | ||
936 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_606_1_PID) }, | ||
937 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_606_2_PID) }, | ||
938 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_606_3_PID) }, | ||
939 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_701_1_PID) }, | ||
940 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_701_2_PID) }, | ||
941 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_1_PID) }, | ||
942 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_2_PID) }, | ||
943 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_3_PID) }, | ||
944 | { USB_DEVICE(BRAINBOXES_VID, BRAINBOXES_US_842_4_PID) }, | ||
912 | { } /* Terminating entry */ | 945 | { } /* Terminating entry */ |
913 | }; | 946 | }; |
914 | 947 | ||
diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h index e599fbfcde5f..993c93df6874 100644 --- a/drivers/usb/serial/ftdi_sio_ids.h +++ b/drivers/usb/serial/ftdi_sio_ids.h | |||
@@ -1326,3 +1326,40 @@ | |||
1326 | * Manufacturer: Cressi | 1326 | * Manufacturer: Cressi |
1327 | */ | 1327 | */ |
1328 | #define FTDI_CRESSI_PID 0x87d0 | 1328 | #define FTDI_CRESSI_PID 0x87d0 |
1329 | |||
1330 | /* | ||
1331 | * Brainboxes devices | ||
1332 | */ | ||
1333 | #define BRAINBOXES_VID 0x05d1 | ||
1334 | #define BRAINBOXES_VX_001_PID 0x1001 /* VX-001 ExpressCard 1 Port RS232 */ | ||
1335 | #define BRAINBOXES_VX_012_PID 0x1002 /* VX-012 ExpressCard 2 Port RS232 */ | ||
1336 | #define BRAINBOXES_VX_023_PID 0x1003 /* VX-023 ExpressCard 1 Port RS422/485 */ | ||
1337 | #define BRAINBOXES_VX_034_PID 0x1004 /* VX-034 ExpressCard 2 Port RS422/485 */ | ||
1338 | #define BRAINBOXES_US_101_PID 0x1011 /* US-101 1xRS232 */ | ||
1339 | #define BRAINBOXES_US_324_PID 0x1013 /* US-324 1xRS422/485 1Mbaud */ | ||
1340 | #define BRAINBOXES_US_606_1_PID 0x2001 /* US-606 6 Port RS232 Serial Port 1 and 2 */ | ||
1341 | #define BRAINBOXES_US_606_2_PID 0x2002 /* US-606 6 Port RS232 Serial Port 3 and 4 */ | ||
1342 | #define BRAINBOXES_US_606_3_PID 0x2003 /* US-606 6 Port RS232 Serial Port 4 and 6 */ | ||
1343 | #define BRAINBOXES_US_701_1_PID 0x2011 /* US-701 4xRS232 1Mbaud Port 1 and 2 */ | ||
1344 | #define BRAINBOXES_US_701_2_PID 0x2012 /* US-701 4xRS422 1Mbaud Port 3 and 4 */ | ||
1345 | #define BRAINBOXES_US_279_1_PID 0x2021 /* US-279 8xRS422 1Mbaud Port 1 and 2 */ | ||
1346 | #define BRAINBOXES_US_279_2_PID 0x2022 /* US-279 8xRS422 1Mbaud Port 3 and 4 */ | ||
1347 | #define BRAINBOXES_US_279_3_PID 0x2023 /* US-279 8xRS422 1Mbaud Port 5 and 6 */ | ||
1348 | #define BRAINBOXES_US_279_4_PID 0x2024 /* US-279 8xRS422 1Mbaud Port 7 and 8 */ | ||
1349 | #define BRAINBOXES_US_346_1_PID 0x3011 /* US-346 4xRS422/485 1Mbaud Port 1 and 2 */ | ||
1350 | #define BRAINBOXES_US_346_2_PID 0x3012 /* US-346 4xRS422/485 1Mbaud Port 3 and 4 */ | ||
1351 | #define BRAINBOXES_US_257_PID 0x5001 /* US-257 2xRS232 1Mbaud */ | ||
1352 | #define BRAINBOXES_US_313_PID 0x6001 /* US-313 2xRS422/485 1Mbaud */ | ||
1353 | #define BRAINBOXES_US_357_PID 0x7001 /* US_357 1xRS232/422/485 */ | ||
1354 | #define BRAINBOXES_US_842_1_PID 0x8001 /* US-842 8xRS422/485 1Mbaud Port 1 and 2 */ | ||
1355 | #define BRAINBOXES_US_842_2_PID 0x8002 /* US-842 8xRS422/485 1Mbaud Port 3 and 4 */ | ||
1356 | #define BRAINBOXES_US_842_3_PID 0x8003 /* US-842 8xRS422/485 1Mbaud Port 5 and 6 */ | ||
1357 | #define BRAINBOXES_US_842_4_PID 0x8004 /* US-842 8xRS422/485 1Mbaud Port 7 and 8 */ | ||
1358 | #define BRAINBOXES_US_160_1_PID 0x9001 /* US-160 16xRS232 1Mbaud Port 1 and 2 */ | ||
1359 | #define BRAINBOXES_US_160_2_PID 0x9002 /* US-160 16xRS232 1Mbaud Port 3 and 4 */ | ||
1360 | #define BRAINBOXES_US_160_3_PID 0x9003 /* US-160 16xRS232 1Mbaud Port 5 and 6 */ | ||
1361 | #define BRAINBOXES_US_160_4_PID 0x9004 /* US-160 16xRS232 1Mbaud Port 7 and 8 */ | ||
1362 | #define BRAINBOXES_US_160_5_PID 0x9005 /* US-160 16xRS232 1Mbaud Port 9 and 10 */ | ||
1363 | #define BRAINBOXES_US_160_6_PID 0x9006 /* US-160 16xRS232 1Mbaud Port 11 and 12 */ | ||
1364 | #define BRAINBOXES_US_160_7_PID 0x9007 /* US-160 16xRS232 1Mbaud Port 13 and 14 */ | ||
1365 | #define BRAINBOXES_US_160_8_PID 0x9008 /* US-160 16xRS232 1Mbaud Port 15 and 16 */ | ||
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 68fc9fe65936..367c7f08b27c 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
@@ -243,6 +243,7 @@ static void option_instat_callback(struct urb *urb); | |||
243 | #define TELIT_PRODUCT_CC864_DUAL 0x1005 | 243 | #define TELIT_PRODUCT_CC864_DUAL 0x1005 |
244 | #define TELIT_PRODUCT_CC864_SINGLE 0x1006 | 244 | #define TELIT_PRODUCT_CC864_SINGLE 0x1006 |
245 | #define TELIT_PRODUCT_DE910_DUAL 0x1010 | 245 | #define TELIT_PRODUCT_DE910_DUAL 0x1010 |
246 | #define TELIT_PRODUCT_UE910_V2 0x1012 | ||
246 | #define TELIT_PRODUCT_LE920 0x1200 | 247 | #define TELIT_PRODUCT_LE920 0x1200 |
247 | 248 | ||
248 | /* ZTE PRODUCTS */ | 249 | /* ZTE PRODUCTS */ |
@@ -1041,6 +1042,7 @@ static const struct usb_device_id option_ids[] = { | |||
1041 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_DUAL) }, | 1042 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_DUAL) }, |
1042 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_SINGLE) }, | 1043 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_SINGLE) }, |
1043 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_DE910_DUAL) }, | 1044 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_DE910_DUAL) }, |
1045 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UE910_V2) }, | ||
1044 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920), | 1046 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920), |
1045 | .driver_info = (kernel_ulong_t)&telit_le920_blacklist }, | 1047 | .driver_info = (kernel_ulong_t)&telit_le920_blacklist }, |
1046 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */ | 1048 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */ |
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c index 2e22fc22c382..b3d5a35c0d4b 100644 --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c | |||
@@ -83,6 +83,9 @@ static const struct usb_device_id id_table[] = { | |||
83 | { USB_DEVICE(YCCABLE_VENDOR_ID, YCCABLE_PRODUCT_ID) }, | 83 | { USB_DEVICE(YCCABLE_VENDOR_ID, YCCABLE_PRODUCT_ID) }, |
84 | { USB_DEVICE(SUPERIAL_VENDOR_ID, SUPERIAL_PRODUCT_ID) }, | 84 | { USB_DEVICE(SUPERIAL_VENDOR_ID, SUPERIAL_PRODUCT_ID) }, |
85 | { USB_DEVICE(HP_VENDOR_ID, HP_LD220_PRODUCT_ID) }, | 85 | { USB_DEVICE(HP_VENDOR_ID, HP_LD220_PRODUCT_ID) }, |
86 | { USB_DEVICE(HP_VENDOR_ID, HP_LD960_PRODUCT_ID) }, | ||
87 | { USB_DEVICE(HP_VENDOR_ID, HP_LCM220_PRODUCT_ID) }, | ||
88 | { USB_DEVICE(HP_VENDOR_ID, HP_LCM960_PRODUCT_ID) }, | ||
86 | { USB_DEVICE(CRESSI_VENDOR_ID, CRESSI_EDY_PRODUCT_ID) }, | 89 | { USB_DEVICE(CRESSI_VENDOR_ID, CRESSI_EDY_PRODUCT_ID) }, |
87 | { USB_DEVICE(ZEAGLE_VENDOR_ID, ZEAGLE_N2ITION3_PRODUCT_ID) }, | 90 | { USB_DEVICE(ZEAGLE_VENDOR_ID, ZEAGLE_N2ITION3_PRODUCT_ID) }, |
88 | { USB_DEVICE(SONY_VENDOR_ID, SONY_QN3USB_PRODUCT_ID) }, | 91 | { USB_DEVICE(SONY_VENDOR_ID, SONY_QN3USB_PRODUCT_ID) }, |
diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h index c38b8c00c06f..42bc082896ac 100644 --- a/drivers/usb/serial/pl2303.h +++ b/drivers/usb/serial/pl2303.h | |||
@@ -121,8 +121,11 @@ | |||
121 | #define SUPERIAL_VENDOR_ID 0x5372 | 121 | #define SUPERIAL_VENDOR_ID 0x5372 |
122 | #define SUPERIAL_PRODUCT_ID 0x2303 | 122 | #define SUPERIAL_PRODUCT_ID 0x2303 |
123 | 123 | ||
124 | /* Hewlett-Packard LD220-HP POS Pole Display */ | 124 | /* Hewlett-Packard POS Pole Displays */ |
125 | #define HP_VENDOR_ID 0x03f0 | 125 | #define HP_VENDOR_ID 0x03f0 |
126 | #define HP_LD960_PRODUCT_ID 0x0b39 | ||
127 | #define HP_LCM220_PRODUCT_ID 0x3139 | ||
128 | #define HP_LCM960_PRODUCT_ID 0x3239 | ||
126 | #define HP_LD220_PRODUCT_ID 0x3524 | 129 | #define HP_LD220_PRODUCT_ID 0x3524 |
127 | 130 | ||
128 | /* Cressi Edy (diving computer) PC interface */ | 131 | /* Cressi Edy (diving computer) PC interface */ |
diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c index a9eb6221a815..6b192e602ce0 100644 --- a/drivers/usb/serial/sierra.c +++ b/drivers/usb/serial/sierra.c | |||
@@ -291,7 +291,6 @@ static const struct usb_device_id id_table[] = { | |||
291 | { USB_DEVICE(0x0f3d, 0x68A3), /* Airprime/Sierra Wireless Direct IP modems */ | 291 | { USB_DEVICE(0x0f3d, 0x68A3), /* Airprime/Sierra Wireless Direct IP modems */ |
292 | .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist | 292 | .driver_info = (kernel_ulong_t)&direct_ip_interface_blacklist |
293 | }, | 293 | }, |
294 | { USB_DEVICE(0x413C, 0x08133) }, /* Dell Computer Corp. Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port */ | ||
295 | 294 | ||
296 | { } | 295 | { } |
297 | }; | 296 | }; |
diff --git a/drivers/usb/serial/usb_wwan.c b/drivers/usb/serial/usb_wwan.c index 640fe0173236..b078440e822f 100644 --- a/drivers/usb/serial/usb_wwan.c +++ b/drivers/usb/serial/usb_wwan.c | |||
@@ -466,6 +466,9 @@ int usb_wwan_port_probe(struct usb_serial_port *port) | |||
466 | int err; | 466 | int err; |
467 | int i; | 467 | int i; |
468 | 468 | ||
469 | if (!port->bulk_in_size || !port->bulk_out_size) | ||
470 | return -ENODEV; | ||
471 | |||
469 | portdata = kzalloc(sizeof(*portdata), GFP_KERNEL); | 472 | portdata = kzalloc(sizeof(*portdata), GFP_KERNEL); |
470 | if (!portdata) | 473 | if (!portdata) |
471 | return -ENOMEM; | 474 | return -ENOMEM; |
@@ -473,9 +476,6 @@ int usb_wwan_port_probe(struct usb_serial_port *port) | |||
473 | init_usb_anchor(&portdata->delayed); | 476 | init_usb_anchor(&portdata->delayed); |
474 | 477 | ||
475 | for (i = 0; i < N_IN_URB; i++) { | 478 | for (i = 0; i < N_IN_URB; i++) { |
476 | if (!port->bulk_in_size) | ||
477 | break; | ||
478 | |||
479 | buffer = (u8 *)__get_free_page(GFP_KERNEL); | 479 | buffer = (u8 *)__get_free_page(GFP_KERNEL); |
480 | if (!buffer) | 480 | if (!buffer) |
481 | goto bail_out_error; | 481 | goto bail_out_error; |
@@ -489,9 +489,6 @@ int usb_wwan_port_probe(struct usb_serial_port *port) | |||
489 | } | 489 | } |
490 | 490 | ||
491 | for (i = 0; i < N_OUT_URB; i++) { | 491 | for (i = 0; i < N_OUT_URB; i++) { |
492 | if (!port->bulk_out_size) | ||
493 | break; | ||
494 | |||
495 | buffer = kmalloc(OUT_BUFLEN, GFP_KERNEL); | 492 | buffer = kmalloc(OUT_BUFLEN, GFP_KERNEL); |
496 | if (!buffer) | 493 | if (!buffer) |
497 | goto bail_out_error2; | 494 | goto bail_out_error2; |
diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c index a7ac97cc5949..511b22953167 100644 --- a/drivers/usb/storage/uas.c +++ b/drivers/usb/storage/uas.c | |||
@@ -137,7 +137,7 @@ static void uas_do_work(struct work_struct *work) | |||
137 | if (!(cmdinfo->state & IS_IN_WORK_LIST)) | 137 | if (!(cmdinfo->state & IS_IN_WORK_LIST)) |
138 | continue; | 138 | continue; |
139 | 139 | ||
140 | err = uas_submit_urbs(cmnd, cmnd->device->hostdata, GFP_NOIO); | 140 | err = uas_submit_urbs(cmnd, cmnd->device->hostdata, GFP_ATOMIC); |
141 | if (!err) | 141 | if (!err) |
142 | cmdinfo->state &= ~IS_IN_WORK_LIST; | 142 | cmdinfo->state &= ~IS_IN_WORK_LIST; |
143 | else | 143 | else |
@@ -803,7 +803,7 @@ static int uas_eh_task_mgmt(struct scsi_cmnd *cmnd, | |||
803 | 803 | ||
804 | devinfo->running_task = 1; | 804 | devinfo->running_task = 1; |
805 | memset(&devinfo->response, 0, sizeof(devinfo->response)); | 805 | memset(&devinfo->response, 0, sizeof(devinfo->response)); |
806 | sense_urb = uas_submit_sense_urb(cmnd, GFP_NOIO, | 806 | sense_urb = uas_submit_sense_urb(cmnd, GFP_ATOMIC, |
807 | devinfo->use_streams ? tag : 0); | 807 | devinfo->use_streams ? tag : 0); |
808 | if (!sense_urb) { | 808 | if (!sense_urb) { |
809 | shost_printk(KERN_INFO, shost, | 809 | shost_printk(KERN_INFO, shost, |
@@ -813,7 +813,7 @@ static int uas_eh_task_mgmt(struct scsi_cmnd *cmnd, | |||
813 | spin_unlock_irqrestore(&devinfo->lock, flags); | 813 | spin_unlock_irqrestore(&devinfo->lock, flags); |
814 | return FAILED; | 814 | return FAILED; |
815 | } | 815 | } |
816 | if (uas_submit_task_urb(cmnd, GFP_NOIO, function, tag)) { | 816 | if (uas_submit_task_urb(cmnd, GFP_ATOMIC, function, tag)) { |
817 | shost_printk(KERN_INFO, shost, | 817 | shost_printk(KERN_INFO, shost, |
818 | "%s: %s: submit task mgmt urb failed\n", | 818 | "%s: %s: submit task mgmt urb failed\n", |
819 | __func__, fname); | 819 | __func__, fname); |
@@ -1030,7 +1030,7 @@ static int uas_configure_endpoints(struct uas_dev_info *devinfo) | |||
1030 | devinfo->use_streams = 0; | 1030 | devinfo->use_streams = 0; |
1031 | } else { | 1031 | } else { |
1032 | devinfo->qdepth = usb_alloc_streams(devinfo->intf, eps + 1, | 1032 | devinfo->qdepth = usb_alloc_streams(devinfo->intf, eps + 1, |
1033 | 3, 256, GFP_KERNEL); | 1033 | 3, 256, GFP_NOIO); |
1034 | if (devinfo->qdepth < 0) | 1034 | if (devinfo->qdepth < 0) |
1035 | return devinfo->qdepth; | 1035 | return devinfo->qdepth; |
1036 | devinfo->use_streams = 1; | 1036 | devinfo->use_streams = 1; |
@@ -1047,7 +1047,7 @@ static void uas_free_streams(struct uas_dev_info *devinfo) | |||
1047 | eps[0] = usb_pipe_endpoint(udev, devinfo->status_pipe); | 1047 | eps[0] = usb_pipe_endpoint(udev, devinfo->status_pipe); |
1048 | eps[1] = usb_pipe_endpoint(udev, devinfo->data_in_pipe); | 1048 | eps[1] = usb_pipe_endpoint(udev, devinfo->data_in_pipe); |
1049 | eps[2] = usb_pipe_endpoint(udev, devinfo->data_out_pipe); | 1049 | eps[2] = usb_pipe_endpoint(udev, devinfo->data_out_pipe); |
1050 | usb_free_streams(devinfo->intf, eps, 3, GFP_KERNEL); | 1050 | usb_free_streams(devinfo->intf, eps, 3, GFP_NOIO); |
1051 | } | 1051 | } |
1052 | 1052 | ||
1053 | static int uas_probe(struct usb_interface *intf, const struct usb_device_id *id) | 1053 | static int uas_probe(struct usb_interface *intf, const struct usb_device_id *id) |
@@ -1096,16 +1096,17 @@ static int uas_probe(struct usb_interface *intf, const struct usb_device_id *id) | |||
1096 | if (result) | 1096 | if (result) |
1097 | goto free_streams; | 1097 | goto free_streams; |
1098 | 1098 | ||
1099 | usb_set_intfdata(intf, shost); | ||
1099 | result = scsi_add_host(shost, &intf->dev); | 1100 | result = scsi_add_host(shost, &intf->dev); |
1100 | if (result) | 1101 | if (result) |
1101 | goto free_streams; | 1102 | goto free_streams; |
1102 | 1103 | ||
1103 | scsi_scan_host(shost); | 1104 | scsi_scan_host(shost); |
1104 | usb_set_intfdata(intf, shost); | ||
1105 | return result; | 1105 | return result; |
1106 | 1106 | ||
1107 | free_streams: | 1107 | free_streams: |
1108 | uas_free_streams(devinfo); | 1108 | uas_free_streams(devinfo); |
1109 | usb_set_intfdata(intf, NULL); | ||
1109 | set_alt0: | 1110 | set_alt0: |
1110 | usb_set_interface(udev, intf->altsetting[0].desc.bInterfaceNumber, 0); | 1111 | usb_set_interface(udev, intf->altsetting[0].desc.bInterfaceNumber, 0); |
1111 | if (shost) | 1112 | if (shost) |
diff --git a/drivers/usb/usb-common.c b/drivers/usb/usb-common.c index d771870a819e..6dfd30a863c7 100644 --- a/drivers/usb/usb-common.c +++ b/drivers/usb/usb-common.c | |||
@@ -69,7 +69,7 @@ const char *usb_state_string(enum usb_device_state state) | |||
69 | [USB_STATE_RECONNECTING] = "reconnecting", | 69 | [USB_STATE_RECONNECTING] = "reconnecting", |
70 | [USB_STATE_UNAUTHENTICATED] = "unauthenticated", | 70 | [USB_STATE_UNAUTHENTICATED] = "unauthenticated", |
71 | [USB_STATE_DEFAULT] = "default", | 71 | [USB_STATE_DEFAULT] = "default", |
72 | [USB_STATE_ADDRESS] = "addresssed", | 72 | [USB_STATE_ADDRESS] = "addressed", |
73 | [USB_STATE_CONFIGURED] = "configured", | 73 | [USB_STATE_CONFIGURED] = "configured", |
74 | [USB_STATE_SUSPENDED] = "suspended", | 74 | [USB_STATE_SUSPENDED] = "suspended", |
75 | }; | 75 | }; |
diff --git a/drivers/uwb/drp.c b/drivers/uwb/drp.c index 16ada8341c46..1a2fd9795367 100644 --- a/drivers/uwb/drp.c +++ b/drivers/uwb/drp.c | |||
@@ -599,8 +599,11 @@ static void uwb_drp_handle_alien_drp(struct uwb_rc *rc, struct uwb_ie_drp *drp_i | |||
599 | 599 | ||
600 | /* alloc and initialize new uwb_cnflt_alien */ | 600 | /* alloc and initialize new uwb_cnflt_alien */ |
601 | cnflt = kzalloc(sizeof(struct uwb_cnflt_alien), GFP_KERNEL); | 601 | cnflt = kzalloc(sizeof(struct uwb_cnflt_alien), GFP_KERNEL); |
602 | if (!cnflt) | 602 | if (!cnflt) { |
603 | dev_err(dev, "failed to alloc uwb_cnflt_alien struct\n"); | 603 | dev_err(dev, "failed to alloc uwb_cnflt_alien struct\n"); |
604 | return; | ||
605 | } | ||
606 | |||
604 | INIT_LIST_HEAD(&cnflt->rc_node); | 607 | INIT_LIST_HEAD(&cnflt->rc_node); |
605 | init_timer(&cnflt->timer); | 608 | init_timer(&cnflt->timer); |
606 | cnflt->timer.function = uwb_cnflt_timer; | 609 | cnflt->timer.function = uwb_cnflt_timer; |