diff options
author | spark <spark@bandrich.com> | 2010-03-05 01:18:05 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-03-19 10:24:18 -0400 |
commit | 33c387529b7931248c6637bf9720ac7504a0b28b (patch) | |
tree | 48ce89cd1e6d3a12cbc4c156b4b89d8e4eda1020 | |
parent | 510607db7e2ad5078c554911418a71b469886076 (diff) |
USB: option.c: Add Pirelli VID/PID and indicate Pirelli's modem interface is 0xff
Signed-off-by: spark <spark@bandrich.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/usb/serial/option.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 3af1eb8aa635..950cb311ca94 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
@@ -335,6 +335,24 @@ static int option_resume(struct usb_serial *serial); | |||
335 | #define ALCATEL_VENDOR_ID 0x1bbb | 335 | #define ALCATEL_VENDOR_ID 0x1bbb |
336 | #define ALCATEL_PRODUCT_X060S 0x0000 | 336 | #define ALCATEL_PRODUCT_X060S 0x0000 |
337 | 337 | ||
338 | #define PIRELLI_VENDOR_ID 0x1266 | ||
339 | #define PIRELLI_PRODUCT_C100_1 0x1002 | ||
340 | #define PIRELLI_PRODUCT_C100_2 0x1003 | ||
341 | #define PIRELLI_PRODUCT_1004 0x1004 | ||
342 | #define PIRELLI_PRODUCT_1005 0x1005 | ||
343 | #define PIRELLI_PRODUCT_1006 0x1006 | ||
344 | #define PIRELLI_PRODUCT_1007 0x1007 | ||
345 | #define PIRELLI_PRODUCT_1008 0x1008 | ||
346 | #define PIRELLI_PRODUCT_1009 0x1009 | ||
347 | #define PIRELLI_PRODUCT_100A 0x100a | ||
348 | #define PIRELLI_PRODUCT_100B 0x100b | ||
349 | #define PIRELLI_PRODUCT_100C 0x100c | ||
350 | #define PIRELLI_PRODUCT_100D 0x100d | ||
351 | #define PIRELLI_PRODUCT_100E 0x100e | ||
352 | #define PIRELLI_PRODUCT_100F 0x100f | ||
353 | #define PIRELLI_PRODUCT_1011 0x1011 | ||
354 | #define PIRELLI_PRODUCT_1012 0x1012 | ||
355 | |||
338 | /* Airplus products */ | 356 | /* Airplus products */ |
339 | #define AIRPLUS_VENDOR_ID 0x1011 | 357 | #define AIRPLUS_VENDOR_ID 0x1011 |
340 | #define AIRPLUS_PRODUCT_MCD650 0x3198 | 358 | #define AIRPLUS_PRODUCT_MCD650 0x3198 |
@@ -679,6 +697,24 @@ static const struct usb_device_id option_ids[] = { | |||
679 | .driver_info = (kernel_ulong_t)&four_g_w14_blacklist | 697 | .driver_info = (kernel_ulong_t)&four_g_w14_blacklist |
680 | }, | 698 | }, |
681 | { USB_DEVICE(HAIER_VENDOR_ID, HAIER_PRODUCT_CE100) }, | 699 | { USB_DEVICE(HAIER_VENDOR_ID, HAIER_PRODUCT_CE100) }, |
700 | /* Pirelli */ | ||
701 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_C100_1)}, | ||
702 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_C100_2)}, | ||
703 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1004)}, | ||
704 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1005)}, | ||
705 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1006)}, | ||
706 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1007)}, | ||
707 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1008)}, | ||
708 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1009)}, | ||
709 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100A)}, | ||
710 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100B) }, | ||
711 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100C) }, | ||
712 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100D) }, | ||
713 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100E) }, | ||
714 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100F) }, | ||
715 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1011)}, | ||
716 | { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1012)}, | ||
717 | |||
682 | { } /* Terminating entry */ | 718 | { } /* Terminating entry */ |
683 | }; | 719 | }; |
684 | MODULE_DEVICE_TABLE(usb, option_ids); | 720 | MODULE_DEVICE_TABLE(usb, option_ids); |
@@ -802,12 +838,19 @@ static int option_probe(struct usb_serial *serial, | |||
802 | const struct usb_device_id *id) | 838 | const struct usb_device_id *id) |
803 | { | 839 | { |
804 | struct option_intf_private *data; | 840 | struct option_intf_private *data; |
841 | |||
805 | /* D-Link DWM 652 still exposes CD-Rom emulation interface in modem mode */ | 842 | /* D-Link DWM 652 still exposes CD-Rom emulation interface in modem mode */ |
806 | if (serial->dev->descriptor.idVendor == DLINK_VENDOR_ID && | 843 | if (serial->dev->descriptor.idVendor == DLINK_VENDOR_ID && |
807 | serial->dev->descriptor.idProduct == DLINK_PRODUCT_DWM_652 && | 844 | serial->dev->descriptor.idProduct == DLINK_PRODUCT_DWM_652 && |
808 | serial->interface->cur_altsetting->desc.bInterfaceClass == 0x8) | 845 | serial->interface->cur_altsetting->desc.bInterfaceClass == 0x8) |
809 | return -ENODEV; | 846 | return -ENODEV; |
810 | 847 | ||
848 | /* Bandrich modem and AT command interface is 0xff */ | ||
849 | if ((serial->dev->descriptor.idVendor == BANDRICH_VENDOR_ID || | ||
850 | serial->dev->descriptor.idVendor == PIRELLI_VENDOR_ID) && | ||
851 | serial->interface->cur_altsetting->desc.bInterfaceClass != 0xff) | ||
852 | return -ENODEV; | ||
853 | |||
811 | data = serial->private = kzalloc(sizeof(struct option_intf_private), GFP_KERNEL); | 854 | data = serial->private = kzalloc(sizeof(struct option_intf_private), GFP_KERNEL); |
812 | if (!data) | 855 | if (!data) |
813 | return -ENOMEM; | 856 | return -ENOMEM; |