diff options
Diffstat (limited to 'drivers/usb/serial/visor.c')
| -rw-r--r-- | drivers/usb/serial/visor.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/usb/serial/visor.c b/drivers/usb/serial/visor.c index 15a5d89b7f3..1c11959a7d5 100644 --- a/drivers/usb/serial/visor.c +++ b/drivers/usb/serial/visor.c @@ -27,6 +27,7 @@  #include <linux/uaccess.h>  #include <linux/usb.h>  #include <linux/usb/serial.h> +#include <linux/usb/cdc.h>  #include "visor.h"  /* @@ -479,6 +480,17 @@ static int visor_probe(struct usb_serial *serial,  	dbg("%s", __func__); +	/* +	 * some Samsung Android phones in modem mode have the same ID +	 * as SPH-I500, but they are ACM devices, so dont bind to them +	 */ +	if (id->idVendor == SAMSUNG_VENDOR_ID && +		id->idProduct == SAMSUNG_SPH_I500_ID && +		serial->dev->descriptor.bDeviceClass == USB_CLASS_COMM && +		serial->dev->descriptor.bDeviceSubClass == +			USB_CDC_SUBCLASS_ACM) +		return -ENODEV; +  	if (serial->dev->actconfig->desc.bConfigurationValue != 1) {  		dev_err(&serial->dev->dev, "active config #%d != 1 ??\n",  			serial->dev->actconfig->desc.bConfigurationValue);  |