USB-serial updates for 5.10-rc1
Here are the USB-serial updates for 5.10-rc1, including: - new device ids - various clean ups All have been in linux-next with no reported issues. -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQQHbPq+cpGvN/peuzMLxc3C7H1lCAUCX38jyAAKCRALxc3C7H1l CItIAP9zyrR8IK4o7WLxm0ysRPBqaggtdpIBlsQBFFy77E/G2gEAttXrmA6tsgB2 MGMs1sKpxxFhlgRscNizGj4TcHEgqwk= =vqUZ -----END PGP SIGNATURE----- Merge tag 'usb-serial-5.10-rc1' of https://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial into usb-next Johan writes: USB-serial updates for 5.10-rc1 Here are the USB-serial updates for 5.10-rc1, including: - new device ids - various clean ups All have been in linux-next with no reported issues. * tag 'usb-serial-5.10-rc1' of https://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial: USB: serial: option: add Cellient MPL200 card USB: serial: ftdi_sio: use cur_altsetting for consistency USB: serial: option: Add Telit FT980-KS composition USB: serial: qcserial: fix altsetting probing USB: serial: ftdi_sio: clean up jtag quirks USB: serial: pl2303: add device-id for HP GC device USB: serial: ftdi_sio: add support for FreeCalypso JTAG+UART adapters
This commit is contained in:
commit
3bfb8239be
|
@ -1037,6 +1037,11 @@ static const struct usb_device_id id_table_combined[] = {
|
|||
/* U-Blox devices */
|
||||
{ USB_DEVICE(UBLOX_VID, UBLOX_C099F9P_ZED_PID) },
|
||||
{ USB_DEVICE(UBLOX_VID, UBLOX_C099F9P_ODIN_PID) },
|
||||
/* FreeCalypso USB adapters */
|
||||
{ USB_DEVICE(FTDI_VID, FTDI_FALCONIA_JTAG_BUF_PID),
|
||||
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
|
||||
{ USB_DEVICE(FTDI_VID, FTDI_FALCONIA_JTAG_UNBUF_PID),
|
||||
.driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
|
||||
|
@ -1566,7 +1571,8 @@ static void ftdi_determine_type(struct usb_serial_port *port)
|
|||
dev_dbg(&port->dev, "%s: bcdDevice = 0x%x, bNumInterfaces = %u\n", __func__,
|
||||
version, interfaces);
|
||||
if (interfaces > 1) {
|
||||
int inter;
|
||||
struct usb_interface *intf = serial->interface;
|
||||
int ifnum = intf->cur_altsetting->desc.bInterfaceNumber;
|
||||
|
||||
/* Multiple interfaces.*/
|
||||
if (version == 0x0800) {
|
||||
|
@ -1581,16 +1587,15 @@ static void ftdi_determine_type(struct usb_serial_port *port)
|
|||
priv->chip_type = FT2232C;
|
||||
|
||||
/* Determine interface code. */
|
||||
inter = serial->interface->altsetting->desc.bInterfaceNumber;
|
||||
if (inter == 0) {
|
||||
if (ifnum == 0)
|
||||
priv->interface = INTERFACE_A;
|
||||
} else if (inter == 1) {
|
||||
else if (ifnum == 1)
|
||||
priv->interface = INTERFACE_B;
|
||||
} else if (inter == 2) {
|
||||
else if (ifnum == 2)
|
||||
priv->interface = INTERFACE_C;
|
||||
} else if (inter == 3) {
|
||||
else if (ifnum == 3)
|
||||
priv->interface = INTERFACE_D;
|
||||
}
|
||||
|
||||
/* BM-type devices have a bug where bcdDevice gets set
|
||||
* to 0x200 when iSerialNumber is 0. */
|
||||
if (version < 0x500) {
|
||||
|
@ -2330,12 +2335,11 @@ static int ftdi_NDI_device_setup(struct usb_serial *serial)
|
|||
*/
|
||||
static int ftdi_jtag_probe(struct usb_serial *serial)
|
||||
{
|
||||
struct usb_device *udev = serial->dev;
|
||||
struct usb_interface *interface = serial->interface;
|
||||
struct usb_interface *intf = serial->interface;
|
||||
int ifnum = intf->cur_altsetting->desc.bInterfaceNumber;
|
||||
|
||||
if (interface == udev->actconfig->interface[0]) {
|
||||
dev_info(&udev->dev,
|
||||
"Ignoring serial port reserved for JTAG\n");
|
||||
if (ifnum == 0) {
|
||||
dev_info(&intf->dev, "Ignoring interface reserved for JTAG\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
@ -2367,12 +2371,11 @@ static int ftdi_8u2232c_probe(struct usb_serial *serial)
|
|||
*/
|
||||
static int ftdi_stmclite_probe(struct usb_serial *serial)
|
||||
{
|
||||
struct usb_device *udev = serial->dev;
|
||||
struct usb_interface *interface = serial->interface;
|
||||
struct usb_interface *intf = serial->interface;
|
||||
int ifnum = intf->cur_altsetting->desc.bInterfaceNumber;
|
||||
|
||||
if (interface == udev->actconfig->interface[0] ||
|
||||
interface == udev->actconfig->interface[1]) {
|
||||
dev_info(&udev->dev, "Ignoring serial port reserved for JTAG\n");
|
||||
if (ifnum < 2) {
|
||||
dev_info(&intf->dev, "Ignoring interface reserved for JTAG\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
|
|
@ -39,6 +39,13 @@
|
|||
|
||||
#define FTDI_LUMEL_PD12_PID 0x6002
|
||||
|
||||
/*
|
||||
* Custom USB adapters made by Falconia Partners LLC
|
||||
* for FreeCalypso project, ID codes allocated to Falconia by FTDI.
|
||||
*/
|
||||
#define FTDI_FALCONIA_JTAG_BUF_PID 0x7150
|
||||
#define FTDI_FALCONIA_JTAG_UNBUF_PID 0x7151
|
||||
|
||||
/* Sienna Serial Interface by Secyourit GmbH */
|
||||
#define FTDI_SIENNA_PID 0x8348
|
||||
|
||||
|
|
|
@ -528,6 +528,7 @@ static void option_instat_callback(struct urb *urb);
|
|||
/* Cellient products */
|
||||
#define CELLIENT_VENDOR_ID 0x2692
|
||||
#define CELLIENT_PRODUCT_MEN200 0x9005
|
||||
#define CELLIENT_PRODUCT_MPL200 0x9025
|
||||
|
||||
/* Hyundai Petatel Inc. products */
|
||||
#define PETATEL_VENDOR_ID 0x1ff4
|
||||
|
@ -1186,6 +1187,8 @@ static const struct usb_device_id option_ids[] = {
|
|||
.driver_info = NCTRL(2) | RSVD(3) },
|
||||
{ USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1053, 0xff), /* Telit FN980 (ECM) */
|
||||
.driver_info = NCTRL(0) | RSVD(1) },
|
||||
{ USB_DEVICE_INTERFACE_CLASS(TELIT_VENDOR_ID, 0x1054, 0xff), /* Telit FT980-KS */
|
||||
.driver_info = NCTRL(2) | RSVD(3) },
|
||||
{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910),
|
||||
.driver_info = NCTRL(0) | RSVD(1) | RSVD(3) },
|
||||
{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_ME910_DUAL_MODEM),
|
||||
|
@ -1982,6 +1985,8 @@ static const struct usb_device_id option_ids[] = {
|
|||
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x02, 0x01) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x00, 0x00) },
|
||||
{ USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) },
|
||||
{ USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MPL200),
|
||||
.driver_info = RSVD(1) | RSVD(4) },
|
||||
{ USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600A) },
|
||||
{ USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T_600E) },
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(TPLINK_VENDOR_ID, TPLINK_PRODUCT_LTE, 0xff, 0x00, 0x00) }, /* TP-Link LTE Module */
|
||||
|
|
|
@ -100,6 +100,7 @@ static const struct usb_device_id id_table[] = {
|
|||
{ USB_DEVICE(HP_VENDOR_ID, HP_LD220_PRODUCT_ID) },
|
||||
{ USB_DEVICE(HP_VENDOR_ID, HP_LD220TA_PRODUCT_ID) },
|
||||
{ USB_DEVICE(HP_VENDOR_ID, HP_LD381_PRODUCT_ID) },
|
||||
{ USB_DEVICE(HP_VENDOR_ID, HP_LD381GC_PRODUCT_ID) },
|
||||
{ USB_DEVICE(HP_VENDOR_ID, HP_LD960_PRODUCT_ID) },
|
||||
{ USB_DEVICE(HP_VENDOR_ID, HP_LD960TA_PRODUCT_ID) },
|
||||
{ USB_DEVICE(HP_VENDOR_ID, HP_LCM220_PRODUCT_ID) },
|
||||
|
|
|
@ -127,6 +127,7 @@
|
|||
|
||||
/* Hewlett-Packard POS Pole Displays */
|
||||
#define HP_VENDOR_ID 0x03f0
|
||||
#define HP_LD381GC_PRODUCT_ID 0x0183
|
||||
#define HP_LM920_PRODUCT_ID 0x026b
|
||||
#define HP_TD620_PRODUCT_ID 0x0956
|
||||
#define HP_LD960_PRODUCT_ID 0x0b39
|
||||
|
|
|
@ -243,11 +243,11 @@ static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
|
|||
/* QDL mode */
|
||||
/* Gobi 2000 has a single altsetting, older ones have two */
|
||||
if (serial->interface->num_altsetting == 2)
|
||||
intf = &serial->interface->altsetting[1];
|
||||
intf = usb_altnum_to_altsetting(serial->interface, 1);
|
||||
else if (serial->interface->num_altsetting > 2)
|
||||
goto done;
|
||||
|
||||
if (intf->desc.bNumEndpoints == 2 &&
|
||||
if (intf && intf->desc.bNumEndpoints == 2 &&
|
||||
usb_endpoint_is_bulk_in(&intf->endpoint[0].desc) &&
|
||||
usb_endpoint_is_bulk_out(&intf->endpoint[1].desc)) {
|
||||
dev_dbg(dev, "QDL port found\n");
|
||||
|
|
Loading…
Reference in New Issue