diff options
Diffstat (limited to 'drivers/usb/serial/cp210x.c')
| -rw-r--r-- | drivers/usb/serial/cp210x.c | 13 | 
1 files changed, 7 insertions, 6 deletions
| diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c index 2d945c9f975c..412f812522ee 100644 --- a/drivers/usb/serial/cp210x.c +++ b/drivers/usb/serial/cp210x.c @@ -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) |