aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-04-18 19:57:00 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-04-18 19:57:00 -0400
commit7e55f81ecf592d269b9430d9c06db509fc3f19f9 (patch)
tree127ec2f59dad0bed386bf7f84759eddcbad2dd7c
parentea2388f2813ec7871c40a8b18afb80b5674d6e1d (diff)
parent94d72f008909610710bb1841d665eeeb010a0be1 (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.c34
-rw-r--r--drivers/usb/core/hcd-pci.c2
-rw-r--r--drivers/usb/host/ehci-exynos.c2
-rw-r--r--drivers/usb/host/ehci-platform.c2
-rw-r--r--drivers/usb/host/ehci-tegra.c23
-rw-r--r--drivers/usb/host/ohci-jz4740.c6
-rw-r--r--drivers/usb/serial/cp210x.c1
-rw-r--r--drivers/usb/serial/ftdi_sio.c33
-rw-r--r--drivers/usb/serial/ftdi_sio_ids.h37
-rw-r--r--drivers/usb/serial/option.c2
-rw-r--r--drivers/usb/serial/pl2303.c3
-rw-r--r--drivers/usb/serial/pl2303.h5
-rw-r--r--drivers/usb/serial/sierra.c1
-rw-r--r--drivers/usb/serial/usb_wwan.c9
-rw-r--r--drivers/usb/storage/uas.c13
-rw-r--r--drivers/usb/usb-common.c2
-rw-r--r--drivers/uwb/drp.c5
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:
549error_set_control: 552error_set_control:
550 usb_kill_urb(acm->ctrlurb); 553 usb_kill_urb(acm->ctrlurb);
551error_submit_urb: 554error_submit_urb:
552 usb_autopm_put_interface(acm->control);
553error_get_interface: 555error_get_interface:
554disconnected: 556disconnected:
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
512static 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
512static const struct ehci_driver_overrides tegra_overrides __initconst = { 534static 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
516static int __init ehci_tegra_init(void) 539static 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
1053static int uas_probe(struct usb_interface *intf, const struct usb_device_id *id) 1053static 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
1107free_streams: 1107free_streams:
1108 uas_free_streams(devinfo); 1108 uas_free_streams(devinfo);
1109 usb_set_intfdata(intf, NULL);
1109set_alt0: 1110set_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;