diff options
Diffstat (limited to 'drivers/usb/serial/option.c')
| -rw-r--r-- | drivers/usb/serial/option.c | 104 | 
1 files changed, 101 insertions, 3 deletions
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 81565619891..fe22e90bc87 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c @@ -148,6 +148,8 @@ static void option_instat_callback(struct urb *urb);  #define HUAWEI_PRODUCT_K4505			0x1464  #define HUAWEI_PRODUCT_K3765			0x1465  #define HUAWEI_PRODUCT_E14AC			0x14AC +#define HUAWEI_PRODUCT_K3806			0x14AE +#define HUAWEI_PRODUCT_K4605			0x14C6  #define HUAWEI_PRODUCT_K3770			0x14C9  #define HUAWEI_PRODUCT_K3771			0x14CA  #define HUAWEI_PRODUCT_K4510			0x14CB @@ -416,6 +418,56 @@ static void option_instat_callback(struct urb *urb);  #define SAMSUNG_VENDOR_ID                       0x04e8  #define SAMSUNG_PRODUCT_GT_B3730                0x6889 +/* YUGA products  www.yuga-info.com*/ +#define YUGA_VENDOR_ID				0x257A +#define YUGA_PRODUCT_CEM600			0x1601 +#define YUGA_PRODUCT_CEM610			0x1602 +#define YUGA_PRODUCT_CEM500			0x1603 +#define YUGA_PRODUCT_CEM510			0x1604 +#define YUGA_PRODUCT_CEM800			0x1605 +#define YUGA_PRODUCT_CEM900			0x1606 + +#define YUGA_PRODUCT_CEU818			0x1607 +#define YUGA_PRODUCT_CEU816			0x1608 +#define YUGA_PRODUCT_CEU828			0x1609 +#define YUGA_PRODUCT_CEU826			0x160A +#define YUGA_PRODUCT_CEU518			0x160B +#define YUGA_PRODUCT_CEU516			0x160C +#define YUGA_PRODUCT_CEU528			0x160D +#define YUGA_PRODUCT_CEU526			0x160F + +#define YUGA_PRODUCT_CWM600			0x2601 +#define YUGA_PRODUCT_CWM610			0x2602 +#define YUGA_PRODUCT_CWM500			0x2603 +#define YUGA_PRODUCT_CWM510			0x2604 +#define YUGA_PRODUCT_CWM800			0x2605 +#define YUGA_PRODUCT_CWM900			0x2606 + +#define YUGA_PRODUCT_CWU718			0x2607 +#define YUGA_PRODUCT_CWU716			0x2608 +#define YUGA_PRODUCT_CWU728			0x2609 +#define YUGA_PRODUCT_CWU726			0x260A +#define YUGA_PRODUCT_CWU518			0x260B +#define YUGA_PRODUCT_CWU516			0x260C +#define YUGA_PRODUCT_CWU528			0x260D +#define YUGA_PRODUCT_CWU526			0x260F + +#define YUGA_PRODUCT_CLM600			0x2601 +#define YUGA_PRODUCT_CLM610			0x2602 +#define YUGA_PRODUCT_CLM500			0x2603 +#define YUGA_PRODUCT_CLM510			0x2604 +#define YUGA_PRODUCT_CLM800			0x2605 +#define YUGA_PRODUCT_CLM900			0x2606 + +#define YUGA_PRODUCT_CLU718			0x2607 +#define YUGA_PRODUCT_CLU716			0x2608 +#define YUGA_PRODUCT_CLU728			0x2609 +#define YUGA_PRODUCT_CLU726			0x260A +#define YUGA_PRODUCT_CLU518			0x260B +#define YUGA_PRODUCT_CLU516			0x260C +#define YUGA_PRODUCT_CLU528			0x260D +#define YUGA_PRODUCT_CLU526			0x260F +  /* some devices interfaces need special handling due to a number of reasons */  enum option_blacklist_reason {  		OPTION_BLACKLIST_NONE = 0, @@ -551,6 +603,8 @@ static const struct usb_device_id option_ids[] = {  	{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff) },  	{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ETS1220, 0xff, 0xff, 0xff) },  	{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC, 0xff, 0xff, 0xff) }, +	{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3806, 0xff, 0xff, 0xff) }, +	{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0xff, 0xff) },  	{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) },  	{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) },  	{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) }, @@ -1005,6 +1059,48 @@ static const struct usb_device_id option_ids[] = {  	{ USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */  	{ USB_DEVICE(ONDA_VENDOR_ID, ONDA_MT825UP) }, /* ONDA MT825UP modem */  	{ USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/ +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM600) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM610) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM500) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM510) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM800) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM900) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU818) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU816) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU828) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU826) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU518) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU516) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU528) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU526) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM600) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM610) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM500) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM510) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM800) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM900) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU718) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU716) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU728) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU726) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU518) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU516) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU528) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU526) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM600) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM610) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM500) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM510) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM800) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM900) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU718) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU716) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU728) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU726) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU518) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU516) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU528) }, +	{ USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU526) },  	{ } /* Terminating entry */  };  MODULE_DEVICE_TABLE(usb, option_ids); @@ -1134,11 +1230,13 @@ static int option_probe(struct usb_serial *serial,  		serial->interface->cur_altsetting->desc.bInterfaceClass != 0xff)  		return -ENODEV; -	/* Don't bind network interfaces on Huawei K3765 & K4505 */ +	/* Don't bind network interfaces on Huawei K3765, K4505 & K4605 */  	if (serial->dev->descriptor.idVendor == HUAWEI_VENDOR_ID &&  		(serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K3765 || -			serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K4505) && -		serial->interface->cur_altsetting->desc.bInterfaceNumber == 1) +			serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K4505 || +			serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K4605) && +		(serial->interface->cur_altsetting->desc.bInterfaceNumber == 1 || +			serial->interface->cur_altsetting->desc.bInterfaceNumber == 2))  		return -ENODEV;  	/* Don't bind network interface on Samsung GT-B3730, it is handled by a separate module */  |