diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-12-20 10:27:39 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-12-20 10:27:39 -0500 |
| commit | 177c459b08a34dcf004aa9a4c1f1d8be682ff3af (patch) | |
| tree | 46fe94f9a606a3ed352cce841c227f8c5529feba | |
| parent | d31aeb78c6827db17f447f0504fc35afcbb188c2 (diff) | |
| parent | 2419f30a4a4fcaa5f35111563b4c61f1b2b26841 (diff) | |
Merge tag 'usb-4.20-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
Pull USB fixes and ids from Greg KH:
"Here are some late xhci fixes for 4.20-rc8 as well as a few new device
ids for the option usb-serial driver.
The xhci fixes resolve some many-reported issues and all of these have
been in linux-next for a while with no reported problems"
* tag 'usb-4.20-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
USB: xhci: fix 'broken_suspend' placement in struct xchi_hcd
xhci: Don't prevent USB2 bus suspend in state check intended for USB3 only
USB: serial: option: add Telit LN940 series
USB: serial: option: add Fibocom NL668 series
USB: serial: option: add Simcom SIM7500/SIM7600 (MBIM mode)
USB: serial: option: add GosunCn ZTE WeLink ME3630
USB: serial: option: add HP lt4132
| -rw-r--r-- | drivers/usb/host/xhci-hub.c | 3 | ||||
| -rw-r--r-- | drivers/usb/host/xhci.h | 4 | ||||
| -rw-r--r-- | drivers/usb/serial/option.c | 16 |
3 files changed, 19 insertions, 4 deletions
diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c index 94aca1b5ac8a..01b5818a4be5 100644 --- a/drivers/usb/host/xhci-hub.c +++ b/drivers/usb/host/xhci-hub.c | |||
| @@ -1507,7 +1507,8 @@ int xhci_bus_suspend(struct usb_hcd *hcd) | |||
| 1507 | portsc_buf[port_index] = 0; | 1507 | portsc_buf[port_index] = 0; |
| 1508 | 1508 | ||
| 1509 | /* Bail out if a USB3 port has a new device in link training */ | 1509 | /* Bail out if a USB3 port has a new device in link training */ |
| 1510 | if ((t1 & PORT_PLS_MASK) == XDEV_POLLING) { | 1510 | if ((hcd->speed >= HCD_USB3) && |
| 1511 | (t1 & PORT_PLS_MASK) == XDEV_POLLING) { | ||
| 1511 | bus_state->bus_suspended = 0; | 1512 | bus_state->bus_suspended = 0; |
| 1512 | spin_unlock_irqrestore(&xhci->lock, flags); | 1513 | spin_unlock_irqrestore(&xhci->lock, flags); |
| 1513 | xhci_dbg(xhci, "Bus suspend bailout, port in polling\n"); | 1514 | xhci_dbg(xhci, "Bus suspend bailout, port in polling\n"); |
diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h index c3515bad5dbb..011dd45f8718 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h | |||
| @@ -1863,6 +1863,8 @@ struct xhci_hcd { | |||
| 1863 | unsigned sw_lpm_support:1; | 1863 | unsigned sw_lpm_support:1; |
| 1864 | /* support xHCI 1.0 spec USB2 hardware LPM */ | 1864 | /* support xHCI 1.0 spec USB2 hardware LPM */ |
| 1865 | unsigned hw_lpm_support:1; | 1865 | unsigned hw_lpm_support:1; |
| 1866 | /* Broken Suspend flag for SNPS Suspend resume issue */ | ||
| 1867 | unsigned broken_suspend:1; | ||
| 1866 | /* cached usb2 extened protocol capabilites */ | 1868 | /* cached usb2 extened protocol capabilites */ |
| 1867 | u32 *ext_caps; | 1869 | u32 *ext_caps; |
| 1868 | unsigned int num_ext_caps; | 1870 | unsigned int num_ext_caps; |
| @@ -1880,8 +1882,6 @@ struct xhci_hcd { | |||
| 1880 | void *dbc; | 1882 | void *dbc; |
| 1881 | /* platform-specific data -- must come last */ | 1883 | /* platform-specific data -- must come last */ |
| 1882 | unsigned long priv[0] __aligned(sizeof(s64)); | 1884 | unsigned long priv[0] __aligned(sizeof(s64)); |
| 1883 | /* Broken Suspend flag for SNPS Suspend resume issue */ | ||
| 1884 | u8 broken_suspend; | ||
| 1885 | }; | 1885 | }; |
| 1886 | 1886 | ||
| 1887 | /* Platform specific overrides to generic XHCI hc_driver ops */ | 1887 | /* Platform specific overrides to generic XHCI hc_driver ops */ |
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index e24ff16d4147..1ce27f3ff7a7 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
| @@ -1164,6 +1164,10 @@ static const struct usb_device_id option_ids[] = { | |||
| 1164 | { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1213, 0xff) }, | 1164 | { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1213, 0xff) }, |
| 1165 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1214), | 1165 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_LE920A4_1214), |
| 1166 | .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) }, | 1166 | .driver_info = NCTRL(0) | RSVD(1) | RSVD(2) | RSVD(3) }, |
| 1167 | { USB_DEVICE(TELIT_VENDOR_ID, 0x1900), /* Telit LN940 (QMI) */ | ||
| 1168 | .driver_info = NCTRL(0) | RSVD(1) }, | ||
| 1169 | { USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1901, 0xff), /* Telit LN940 (MBIM) */ | ||
| 1170 | .driver_info = NCTRL(0) }, | ||
| 1167 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */ | 1171 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */ |
| 1168 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff), | 1172 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff), |
| 1169 | .driver_info = RSVD(1) }, | 1173 | .driver_info = RSVD(1) }, |
| @@ -1328,6 +1332,7 @@ static const struct usb_device_id option_ids[] = { | |||
| 1328 | .driver_info = RSVD(4) }, | 1332 | .driver_info = RSVD(4) }, |
| 1329 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0414, 0xff, 0xff, 0xff) }, | 1333 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0414, 0xff, 0xff, 0xff) }, |
| 1330 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0417, 0xff, 0xff, 0xff) }, | 1334 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0417, 0xff, 0xff, 0xff) }, |
| 1335 | { USB_DEVICE_INTERFACE_CLASS(ZTE_VENDOR_ID, 0x0602, 0xff) }, /* GosunCn ZTE WeLink ME3630 (MBIM mode) */ | ||
| 1331 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1008, 0xff, 0xff, 0xff), | 1336 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1008, 0xff, 0xff, 0xff), |
| 1332 | .driver_info = RSVD(4) }, | 1337 | .driver_info = RSVD(4) }, |
| 1333 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1010, 0xff, 0xff, 0xff), | 1338 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1010, 0xff, 0xff, 0xff), |
| @@ -1531,6 +1536,7 @@ static const struct usb_device_id option_ids[] = { | |||
| 1531 | .driver_info = RSVD(2) }, | 1536 | .driver_info = RSVD(2) }, |
| 1532 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1428, 0xff, 0xff, 0xff), /* Telewell TW-LTE 4G v2 */ | 1537 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1428, 0xff, 0xff, 0xff), /* Telewell TW-LTE 4G v2 */ |
| 1533 | .driver_info = RSVD(2) }, | 1538 | .driver_info = RSVD(2) }, |
| 1539 | { USB_DEVICE_INTERFACE_CLASS(ZTE_VENDOR_ID, 0x1476, 0xff) }, /* GosunCn ZTE WeLink ME3630 (ECM/NCM mode) */ | ||
| 1534 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1533, 0xff, 0xff, 0xff) }, | 1540 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1533, 0xff, 0xff, 0xff) }, |
| 1535 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1534, 0xff, 0xff, 0xff) }, | 1541 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1534, 0xff, 0xff, 0xff) }, |
| 1536 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1535, 0xff, 0xff, 0xff) }, | 1542 | { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1535, 0xff, 0xff, 0xff) }, |
| @@ -1758,6 +1764,7 @@ static const struct usb_device_id option_ids[] = { | |||
| 1758 | { USB_DEVICE_AND_INTERFACE_INFO(ALINK_VENDOR_ID, ALINK_PRODUCT_3GU, 0xff, 0xff, 0xff) }, | 1764 | { USB_DEVICE_AND_INTERFACE_INFO(ALINK_VENDOR_ID, ALINK_PRODUCT_3GU, 0xff, 0xff, 0xff) }, |
| 1759 | { USB_DEVICE(ALINK_VENDOR_ID, SIMCOM_PRODUCT_SIM7100E), | 1765 | { USB_DEVICE(ALINK_VENDOR_ID, SIMCOM_PRODUCT_SIM7100E), |
| 1760 | .driver_info = RSVD(5) | RSVD(6) }, | 1766 | .driver_info = RSVD(5) | RSVD(6) }, |
| 1767 | { USB_DEVICE_INTERFACE_CLASS(0x1e0e, 0x9003, 0xff) }, /* Simcom SIM7500/SIM7600 MBIM mode */ | ||
| 1761 | { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S_X200), | 1768 | { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S_X200), |
| 1762 | .driver_info = NCTRL(0) | NCTRL(1) | RSVD(4) }, | 1769 | .driver_info = NCTRL(0) | NCTRL(1) | RSVD(4) }, |
| 1763 | { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X220_X500D), | 1770 | { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X220_X500D), |
| @@ -1940,7 +1947,14 @@ static const struct usb_device_id option_ids[] = { | |||
| 1940 | { USB_DEVICE_AND_INTERFACE_INFO(WETELECOM_VENDOR_ID, WETELECOM_PRODUCT_WMD200, 0xff, 0xff, 0xff) }, | 1947 | { USB_DEVICE_AND_INTERFACE_INFO(WETELECOM_VENDOR_ID, WETELECOM_PRODUCT_WMD200, 0xff, 0xff, 0xff) }, |
| 1941 | { USB_DEVICE_AND_INTERFACE_INFO(WETELECOM_VENDOR_ID, WETELECOM_PRODUCT_6802, 0xff, 0xff, 0xff) }, | 1948 | { USB_DEVICE_AND_INTERFACE_INFO(WETELECOM_VENDOR_ID, WETELECOM_PRODUCT_6802, 0xff, 0xff, 0xff) }, |
| 1942 | { USB_DEVICE_AND_INTERFACE_INFO(WETELECOM_VENDOR_ID, WETELECOM_PRODUCT_WMD300, 0xff, 0xff, 0xff) }, | 1949 | { USB_DEVICE_AND_INTERFACE_INFO(WETELECOM_VENDOR_ID, WETELECOM_PRODUCT_WMD300, 0xff, 0xff, 0xff) }, |
| 1943 | { USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0x421d, 0xff, 0xff, 0xff) }, /* HP lt2523 (Novatel E371) */ | 1950 | { USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0x421d, 0xff, 0xff, 0xff) }, /* HP lt2523 (Novatel E371) */ |
| 1951 | { USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0xa31d, 0xff, 0x06, 0x10) }, /* HP lt4132 (Huawei ME906s-158) */ | ||
| 1952 | { USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0xa31d, 0xff, 0x06, 0x12) }, | ||
| 1953 | { USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0xa31d, 0xff, 0x06, 0x13) }, | ||
| 1954 | { USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0xa31d, 0xff, 0x06, 0x14) }, | ||
| 1955 | { USB_DEVICE_AND_INTERFACE_INFO(0x03f0, 0xa31d, 0xff, 0x06, 0x1b) }, | ||
| 1956 | { USB_DEVICE(0x1508, 0x1001), /* Fibocom NL668 */ | ||
| 1957 | .driver_info = RSVD(4) | RSVD(5) | RSVD(6) }, | ||
| 1944 | { } /* Terminating entry */ | 1958 | { } /* Terminating entry */ |
| 1945 | }; | 1959 | }; |
| 1946 | MODULE_DEVICE_TABLE(usb, option_ids); | 1960 | MODULE_DEVICE_TABLE(usb, option_ids); |
