|
@@ -177,6 +177,7 @@ static const struct usb_device_id id_table[] = {
|
|
|
{ USB_DEVICE(0x1843, 0x0200) }, /* Vaisala USB Instrument Cable */
|
|
|
{ USB_DEVICE(0x18EF, 0xE00F) }, /* ELV USB-I2C-Interface */
|
|
|
{ USB_DEVICE(0x18EF, 0xE025) }, /* ELV Marble Sound Board 1 */
|
|
|
+ { USB_DEVICE(0x18EF, 0xE032) }, /* ELV TFD500 Data Logger */
|
|
|
{ USB_DEVICE(0x1901, 0x0190) }, /* GE B850 CP2105 Recorder interface */
|
|
|
{ USB_DEVICE(0x1901, 0x0193) }, /* GE B650 CP2104 PMC interface */
|
|
|
{ USB_DEVICE(0x1901, 0x0194) }, /* GE Healthcare Remote Alarm Box */
|
|
@@ -352,6 +353,7 @@ static struct usb_serial_driver * const serial_drivers[] = {
|
|
|
#define CP210X_PARTNUM_CP2104 0x04
|
|
|
#define CP210X_PARTNUM_CP2105 0x05
|
|
|
#define CP210X_PARTNUM_CP2108 0x08
|
|
|
+#define CP210X_PARTNUM_UNKNOWN 0xFF
|
|
|
|
|
|
/* CP210X_GET_COMM_STATUS returns these 0x13 bytes */
|
|
|
struct cp210x_comm_status {
|
|
@@ -1491,8 +1493,11 @@ static int cp210x_attach(struct usb_serial *serial)
|
|
|
result = cp210x_read_vendor_block(serial, REQTYPE_DEVICE_TO_HOST,
|
|
|
CP210X_GET_PARTNUM, &priv->partnum,
|
|
|
sizeof(priv->partnum));
|
|
|
- if (result < 0)
|
|
|
- goto err_free_priv;
|
|
|
+ if (result < 0) {
|
|
|
+ dev_warn(&serial->interface->dev,
|
|
|
+ "querying part number failed\n");
|
|
|
+ priv->partnum = CP210X_PARTNUM_UNKNOWN;
|
|
|
+ }
|
|
|
|
|
|
usb_set_serial_data(serial, priv);
|
|
|
|
|
@@ -1505,10 +1510,6 @@ static int cp210x_attach(struct usb_serial *serial)
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
-err_free_priv:
|
|
|
- kfree(priv);
|
|
|
-
|
|
|
- return result;
|
|
|
}
|
|
|
|
|
|
static void cp210x_disconnect(struct usb_serial *serial)
|