diff options
| author | David S. Miller <davem@davemloft.net> | 2010-03-22 20:05:26 -0700 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2010-03-22 20:05:26 -0700 | 
| commit | 91c030b4d6445ebe9fbddb86d584441f300df15c (patch) | |
| tree | e8a48e3ad9e0448c690268175e555fa651983546 /drivers/usb/serial/option.c | |
| parent | 7c3456fdb503071787f7f972de1069b9cacd16f0 (diff) | |
| parent | ae6be51ed01d6c4aaf249a207b4434bc7785853b (diff) | |
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
Diffstat (limited to 'drivers/usb/serial/option.c')
| -rw-r--r-- | drivers/usb/serial/option.c | 53 | 
1 files changed, 50 insertions, 3 deletions
| diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 847b805d63a3..950cb311ca94 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c @@ -288,7 +288,9 @@ static int  option_resume(struct usb_serial *serial);  #define QUALCOMM_VENDOR_ID			0x05C6 -#define MAXON_VENDOR_ID				0x16d8 +#define CMOTECH_VENDOR_ID			0x16d8 +#define CMOTECH_PRODUCT_6008			0x6008 +#define CMOTECH_PRODUCT_6280			0x6280  #define TELIT_VENDOR_ID				0x1bc7  #define TELIT_PRODUCT_UC864E			0x1003 @@ -309,6 +311,7 @@ static int  option_resume(struct usb_serial *serial);  #define DLINK_VENDOR_ID				0x1186  #define DLINK_PRODUCT_DWM_652			0x3e04  #define DLINK_PRODUCT_DWM_652_U5		0xce16 +#define DLINK_PRODUCT_DWM_652_U5A		0xce1e  #define QISDA_VENDOR_ID				0x1da5  #define QISDA_PRODUCT_H21_4512			0x4512 @@ -332,6 +335,24 @@ static int  option_resume(struct usb_serial *serial);  #define ALCATEL_VENDOR_ID			0x1bbb  #define ALCATEL_PRODUCT_X060S			0x0000 +#define PIRELLI_VENDOR_ID			0x1266 +#define PIRELLI_PRODUCT_C100_1			0x1002 +#define PIRELLI_PRODUCT_C100_2			0x1003 +#define PIRELLI_PRODUCT_1004			0x1004 +#define PIRELLI_PRODUCT_1005			0x1005 +#define PIRELLI_PRODUCT_1006			0x1006 +#define PIRELLI_PRODUCT_1007			0x1007 +#define PIRELLI_PRODUCT_1008			0x1008 +#define PIRELLI_PRODUCT_1009			0x1009 +#define PIRELLI_PRODUCT_100A			0x100a +#define PIRELLI_PRODUCT_100B			0x100b +#define PIRELLI_PRODUCT_100C			0x100c +#define PIRELLI_PRODUCT_100D			0x100d +#define PIRELLI_PRODUCT_100E			0x100e +#define PIRELLI_PRODUCT_100F			0x100f +#define PIRELLI_PRODUCT_1011			0x1011 +#define PIRELLI_PRODUCT_1012			0x1012 +  /* Airplus products */  #define AIRPLUS_VENDOR_ID			0x1011  #define AIRPLUS_PRODUCT_MCD650			0x3198 @@ -547,7 +568,8 @@ static const struct usb_device_id option_ids[] = {  	{ USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) },  	{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6000)}, /* ZTE AC8700 */  	{ USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ -	{ USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */ +	{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6280) }, /* BP3-USB & BP3-EXT HSDPA */ +	{ USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6008) },  	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },  	{ USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864G) },  	{ USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */ @@ -659,6 +681,7 @@ static const struct usb_device_id option_ids[] = {  	{ USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) },  	{ USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) },  	{ USB_DEVICE(ALINK_VENDOR_ID, DLINK_PRODUCT_DWM_652_U5) }, /* Yes, ALINK_VENDOR_ID */ +	{ USB_DEVICE(ALINK_VENDOR_ID, DLINK_PRODUCT_DWM_652_U5A) },  	{ USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H21_4512) },  	{ USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H21_4523) },  	{ USB_DEVICE(QISDA_VENDOR_ID, QISDA_PRODUCT_H20_4515) }, @@ -666,7 +689,6 @@ static const struct usb_device_id option_ids[] = {  	{ USB_DEVICE(TOSHIBA_VENDOR_ID, TOSHIBA_PRODUCT_G450) },  	{ USB_DEVICE(TOSHIBA_VENDOR_ID, TOSHIBA_PRODUCT_HSDPA_MINICARD ) }, /* Toshiba 3G HSDPA == Novatel Expedite EU870D MiniCard */  	{ USB_DEVICE(ALINK_VENDOR_ID, 0x9000) }, -	{ USB_DEVICE(ALINK_VENDOR_ID, 0xce16) },  	{ USB_DEVICE_AND_INTERFACE_INFO(ALINK_VENDOR_ID, ALINK_PRODUCT_3GU, 0xff, 0xff, 0xff) },  	{ USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S) },  	{ USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) }, @@ -675,6 +697,24 @@ static const struct usb_device_id option_ids[] = {    	  .driver_info = (kernel_ulong_t)&four_g_w14_blacklist    	},  	{ USB_DEVICE(HAIER_VENDOR_ID, HAIER_PRODUCT_CE100) }, +	/* Pirelli  */ +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_C100_1)}, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_C100_2)}, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1004)}, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1005)}, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1006)}, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1007)}, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1008)}, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1009)}, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100A)}, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100B) }, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100C) }, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100D) }, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100E) }, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100F) }, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1011)}, +	{ USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1012)}, +  	{ } /* Terminating entry */  };  MODULE_DEVICE_TABLE(usb, option_ids); @@ -798,12 +838,19 @@ static int option_probe(struct usb_serial *serial,  			const struct usb_device_id *id)  {  	struct option_intf_private *data; +  	/* D-Link DWM 652 still exposes CD-Rom emulation interface in modem mode */  	if (serial->dev->descriptor.idVendor == DLINK_VENDOR_ID &&  		serial->dev->descriptor.idProduct == DLINK_PRODUCT_DWM_652 &&  		serial->interface->cur_altsetting->desc.bInterfaceClass == 0x8)  		return -ENODEV; +	/* Bandrich modem and AT command interface is 0xff */ +	if ((serial->dev->descriptor.idVendor == BANDRICH_VENDOR_ID || +		serial->dev->descriptor.idVendor == PIRELLI_VENDOR_ID) && +		serial->interface->cur_altsetting->desc.bInterfaceClass != 0xff) +		return -ENODEV; +  	data = serial->private = kzalloc(sizeof(struct option_intf_private), GFP_KERNEL);  	if (!data)  		return -ENOMEM; | 
