Merge tag 'usb-4.0-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb

Pull USB fixes from Greg KH:
"Here are some small USB fixes and new device ids for 4.0-rc6. Nothing
major, some xhci fixes for reported problems, and some usb-serial
device ids.

All have been in linux-next for a while"

* tag 'usb-4.0-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
USB: ftdi_sio: Use jtag quirk for SNAP Connect E10
usb: isp1760: fix spin unlock in the error path of isp1760_udc_start
usb: xhci: apply XHCI_AVOID_BEI quirk to all Intel xHCI controllers
usb: xhci: handle Config Error Change (CEC) in xhci driver
USB: keyspan_pda: add new device id
USB: ftdi_sio: Added custom PID for Synapse Wireless product

Changed files
+26 -5
drivers
+8 -1
drivers/usb/host/xhci-hub.c
··· 387 387 status = PORT_PLC; 388 388 port_change_bit = "link state"; 389 389 break; 390 + case USB_PORT_FEAT_C_PORT_CONFIG_ERROR: 391 + status = PORT_CEC; 392 + port_change_bit = "config error"; 393 + break; 390 394 default: 391 395 /* Should never happen */ 392 396 return; ··· 592 588 status |= USB_PORT_STAT_C_LINK_STATE << 16; 593 589 if ((raw_port_status & PORT_WRC)) 594 590 status |= USB_PORT_STAT_C_BH_RESET << 16; 591 + if ((raw_port_status & PORT_CEC)) 592 + status |= USB_PORT_STAT_C_CONFIG_ERROR << 16; 595 593 } 596 594 597 595 if (hcd->speed != HCD_USB3) { ··· 1011 1005 case USB_PORT_FEAT_C_OVER_CURRENT: 1012 1006 case USB_PORT_FEAT_C_ENABLE: 1013 1007 case USB_PORT_FEAT_C_PORT_LINK_STATE: 1008 + case USB_PORT_FEAT_C_PORT_CONFIG_ERROR: 1014 1009 xhci_clear_port_change_bit(xhci, wValue, wIndex, 1015 1010 port_array[wIndex], temp); 1016 1011 break; ··· 1076 1069 */ 1077 1070 status = bus_state->resuming_ports; 1078 1071 1079 - mask = PORT_CSC | PORT_PEC | PORT_OCC | PORT_PLC | PORT_WRC; 1072 + mask = PORT_CSC | PORT_PEC | PORT_OCC | PORT_PLC | PORT_WRC | PORT_CEC; 1080 1073 1081 1074 spin_lock_irqsave(&xhci->lock, flags); 1082 1075 /* For each port, did anything change? If so, set that bit in buf. */
+1 -1
drivers/usb/host/xhci-pci.c
··· 115 115 if (pdev->vendor == PCI_VENDOR_ID_INTEL) { 116 116 xhci->quirks |= XHCI_LPM_SUPPORT; 117 117 xhci->quirks |= XHCI_INTEL_HOST; 118 + xhci->quirks |= XHCI_AVOID_BEI; 118 119 } 119 120 if (pdev->vendor == PCI_VENDOR_ID_INTEL && 120 121 pdev->device == PCI_DEVICE_ID_INTEL_PANTHERPOINT_XHCI) { ··· 131 130 * PPT chipsets. 132 131 */ 133 132 xhci->quirks |= XHCI_SPURIOUS_REBOOT; 134 - xhci->quirks |= XHCI_AVOID_BEI; 135 133 } 136 134 if (pdev->vendor == PCI_VENDOR_ID_INTEL && 137 135 pdev->device == PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_XHCI) {
+1 -1
drivers/usb/isp1760/isp1760-udc.c
··· 1203 1203 1204 1204 if (udc->driver) { 1205 1205 dev_err(udc->isp->dev, "UDC already has a gadget driver\n"); 1206 - spin_unlock(&udc->lock); 1206 + spin_unlock_irqrestore(&udc->lock, flags); 1207 1207 return -EBUSY; 1208 1208 } 1209 1209
+7 -2
drivers/usb/serial/ftdi_sio.c
··· 604 604 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, 605 605 { USB_DEVICE(FTDI_VID, FTDI_NT_ORIONLXM_PID), 606 606 .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, 607 + { USB_DEVICE(FTDI_VID, FTDI_SYNAPSE_SS200_PID) }, 607 608 /* 608 609 * ELV devices: 609 610 */ ··· 1884 1883 { 1885 1884 struct usb_device *udev = serial->dev; 1886 1885 1887 - if ((udev->manufacturer && !strcmp(udev->manufacturer, "CALAO Systems")) || 1888 - (udev->product && !strcmp(udev->product, "BeagleBone/XDS100V2"))) 1886 + if (udev->manufacturer && !strcmp(udev->manufacturer, "CALAO Systems")) 1887 + return ftdi_jtag_probe(serial); 1888 + 1889 + if (udev->product && 1890 + (!strcmp(udev->product, "BeagleBone/XDS100V2") || 1891 + !strcmp(udev->product, "SNAP Connect E10"))) 1889 1892 return ftdi_jtag_probe(serial); 1890 1893 1891 1894 return 0;
+6
drivers/usb/serial/ftdi_sio_ids.h
··· 561 561 */ 562 562 #define FTDI_NT_ORIONLXM_PID 0x7c90 /* OrionLXm Substation Automation Platform */ 563 563 564 + /* 565 + * Synapse Wireless product ids (FTDI_VID) 566 + * http://www.synapse-wireless.com 567 + */ 568 + #define FTDI_SYNAPSE_SS200_PID 0x9090 /* SS200 - SNAP Stick 200 */ 569 + 564 570 565 571 /********************************/ 566 572 /** third-party VID/PID combos **/
+3
drivers/usb/serial/keyspan_pda.c
··· 61 61 /* For Xircom PGSDB9 and older Entrega version of the same device */ 62 62 #define XIRCOM_VENDOR_ID 0x085a 63 63 #define XIRCOM_FAKE_ID 0x8027 64 + #define XIRCOM_FAKE_ID_2 0x8025 /* "PGMFHUB" serial */ 64 65 #define ENTREGA_VENDOR_ID 0x1645 65 66 #define ENTREGA_FAKE_ID 0x8093 66 67 ··· 71 70 #endif 72 71 #ifdef XIRCOM 73 72 { USB_DEVICE(XIRCOM_VENDOR_ID, XIRCOM_FAKE_ID) }, 73 + { USB_DEVICE(XIRCOM_VENDOR_ID, XIRCOM_FAKE_ID_2) }, 74 74 { USB_DEVICE(ENTREGA_VENDOR_ID, ENTREGA_FAKE_ID) }, 75 75 #endif 76 76 { USB_DEVICE(KEYSPAN_VENDOR_ID, KEYSPAN_PDA_ID) }, ··· 95 93 #ifdef XIRCOM 96 94 static const struct usb_device_id id_table_fake_xircom[] = { 97 95 { USB_DEVICE(XIRCOM_VENDOR_ID, XIRCOM_FAKE_ID) }, 96 + { USB_DEVICE(XIRCOM_VENDOR_ID, XIRCOM_FAKE_ID_2) }, 98 97 { USB_DEVICE(ENTREGA_VENDOR_ID, ENTREGA_FAKE_ID) }, 99 98 { } 100 99 };