diff options
-rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 12a4b74ca1f4..e0f4c3d9649c 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c @@ -1571,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) { @@ -1586,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) { |