diff options
author | Jiri Kosina <jkosina@suse.cz> | 2011-09-15 09:08:05 -0400 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2011-09-15 09:08:18 -0400 |
commit | e060c38434b2caa78efe7cedaff4191040b65a15 (patch) | |
tree | 407361230bf6733f63d8e788e4b5e6566ee04818 /drivers/usb/serial | |
parent | 10e4ac572eeffe5317019bd7330b6058a400dfc2 (diff) | |
parent | cc39c6a9bbdebfcf1a7dee64d83bf302bc38d941 (diff) |
Merge branch 'master' into for-next
Fast-forward merge with Linus to be able to merge patches
based on more recent version of the tree.
Diffstat (limited to 'drivers/usb/serial')
-rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 28 | ||||
-rw-r--r-- | drivers/usb/serial/ftdi_sio_ids.h | 6 | ||||
-rw-r--r-- | drivers/usb/serial/garmin_gps.c | 2 | ||||
-rw-r--r-- | drivers/usb/serial/option.c | 116 | ||||
-rw-r--r-- | drivers/usb/serial/qcserial.c | 2 |
5 files changed, 146 insertions, 8 deletions
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 2e06b90aa1f8..5fc13e717911 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
@@ -101,6 +101,7 @@ static int ftdi_jtag_probe(struct usb_serial *serial); | |||
101 | static int ftdi_mtxorb_hack_setup(struct usb_serial *serial); | 101 | static int ftdi_mtxorb_hack_setup(struct usb_serial *serial); |
102 | static int ftdi_NDI_device_setup(struct usb_serial *serial); | 102 | static int ftdi_NDI_device_setup(struct usb_serial *serial); |
103 | static int ftdi_stmclite_probe(struct usb_serial *serial); | 103 | static int ftdi_stmclite_probe(struct usb_serial *serial); |
104 | static int ftdi_8u2232c_probe(struct usb_serial *serial); | ||
104 | static void ftdi_USB_UIRT_setup(struct ftdi_private *priv); | 105 | static void ftdi_USB_UIRT_setup(struct ftdi_private *priv); |
105 | static void ftdi_HE_TIRA1_setup(struct ftdi_private *priv); | 106 | static void ftdi_HE_TIRA1_setup(struct ftdi_private *priv); |
106 | 107 | ||
@@ -128,6 +129,10 @@ static struct ftdi_sio_quirk ftdi_stmclite_quirk = { | |||
128 | .probe = ftdi_stmclite_probe, | 129 | .probe = ftdi_stmclite_probe, |
129 | }; | 130 | }; |
130 | 131 | ||
132 | static struct ftdi_sio_quirk ftdi_8u2232c_quirk = { | ||
133 | .probe = ftdi_8u2232c_probe, | ||
134 | }; | ||
135 | |||
131 | /* | 136 | /* |
132 | * The 8U232AM has the same API as the sio except for: | 137 | * The 8U232AM has the same API as the sio except for: |
133 | * - it can support MUCH higher baudrates; up to: | 138 | * - it can support MUCH higher baudrates; up to: |
@@ -151,6 +156,7 @@ static struct ftdi_sio_quirk ftdi_stmclite_quirk = { | |||
151 | * /sys/bus/usb/ftdi_sio/new_id, then send patch/report! | 156 | * /sys/bus/usb/ftdi_sio/new_id, then send patch/report! |
152 | */ | 157 | */ |
153 | static struct usb_device_id id_table_combined [] = { | 158 | static struct usb_device_id id_table_combined [] = { |
159 | { USB_DEVICE(FTDI_VID, FTDI_ZEITCONTROL_TAGTRACE_MIFARE_PID) }, | ||
154 | { USB_DEVICE(FTDI_VID, FTDI_CTI_MINI_PID) }, | 160 | { USB_DEVICE(FTDI_VID, FTDI_CTI_MINI_PID) }, |
155 | { USB_DEVICE(FTDI_VID, FTDI_CTI_NANO_PID) }, | 161 | { USB_DEVICE(FTDI_VID, FTDI_CTI_NANO_PID) }, |
156 | { USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) }, | 162 | { USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) }, |
@@ -177,7 +183,8 @@ static struct usb_device_id id_table_combined [] = { | |||
177 | { USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) }, | 183 | { USB_DEVICE(FTDI_VID, FTDI_8U232AM_PID) }, |
178 | { USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) }, | 184 | { USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) }, |
179 | { USB_DEVICE(FTDI_VID, FTDI_232RL_PID) }, | 185 | { USB_DEVICE(FTDI_VID, FTDI_232RL_PID) }, |
180 | { USB_DEVICE(FTDI_VID, FTDI_8U2232C_PID) }, | 186 | { USB_DEVICE(FTDI_VID, FTDI_8U2232C_PID) , |
187 | .driver_info = (kernel_ulong_t)&ftdi_8u2232c_quirk }, | ||
181 | { USB_DEVICE(FTDI_VID, FTDI_4232H_PID) }, | 188 | { USB_DEVICE(FTDI_VID, FTDI_4232H_PID) }, |
182 | { USB_DEVICE(FTDI_VID, FTDI_232H_PID) }, | 189 | { USB_DEVICE(FTDI_VID, FTDI_232H_PID) }, |
183 | { USB_DEVICE(FTDI_VID, FTDI_MICRO_CHAMELEON_PID) }, | 190 | { USB_DEVICE(FTDI_VID, FTDI_MICRO_CHAMELEON_PID) }, |
@@ -1171,7 +1178,7 @@ static __u32 get_ftdi_divisor(struct tty_struct *tty, | |||
1171 | case FT2232H: /* FT2232H chip */ | 1178 | case FT2232H: /* FT2232H chip */ |
1172 | case FT4232H: /* FT4232H chip */ | 1179 | case FT4232H: /* FT4232H chip */ |
1173 | case FT232H: /* FT232H chip */ | 1180 | case FT232H: /* FT232H chip */ |
1174 | if ((baud <= 12000000) & (baud >= 1200)) { | 1181 | if ((baud <= 12000000) && (baud >= 1200)) { |
1175 | div_value = ftdi_2232h_baud_to_divisor(baud); | 1182 | div_value = ftdi_2232h_baud_to_divisor(baud); |
1176 | } else if (baud < 1200) { | 1183 | } else if (baud < 1200) { |
1177 | div_value = ftdi_232bm_baud_to_divisor(baud); | 1184 | div_value = ftdi_232bm_baud_to_divisor(baud); |
@@ -1205,7 +1212,10 @@ static int change_speed(struct tty_struct *tty, struct usb_serial_port *port) | |||
1205 | urb_index_value = get_ftdi_divisor(tty, port); | 1212 | urb_index_value = get_ftdi_divisor(tty, port); |
1206 | urb_value = (__u16)urb_index_value; | 1213 | urb_value = (__u16)urb_index_value; |
1207 | urb_index = (__u16)(urb_index_value >> 16); | 1214 | urb_index = (__u16)(urb_index_value >> 16); |
1208 | if (priv->interface) { /* FT2232C */ | 1215 | if ((priv->chip_type == FT2232C) || (priv->chip_type == FT2232H) || |
1216 | (priv->chip_type == FT4232H) || (priv->chip_type == FT232H)) { | ||
1217 | /* Probably the BM type needs the MSB of the encoded fractional | ||
1218 | * divider also moved like for the chips above. Any infos? */ | ||
1209 | urb_index = (__u16)((urb_index << 8) | priv->interface); | 1219 | urb_index = (__u16)((urb_index << 8) | priv->interface); |
1210 | } | 1220 | } |
1211 | 1221 | ||
@@ -1733,6 +1743,18 @@ static int ftdi_jtag_probe(struct usb_serial *serial) | |||
1733 | return 0; | 1743 | return 0; |
1734 | } | 1744 | } |
1735 | 1745 | ||
1746 | static int ftdi_8u2232c_probe(struct usb_serial *serial) | ||
1747 | { | ||
1748 | struct usb_device *udev = serial->dev; | ||
1749 | |||
1750 | dbg("%s", __func__); | ||
1751 | |||
1752 | if (strcmp(udev->manufacturer, "CALAO Systems") == 0) | ||
1753 | return ftdi_jtag_probe(serial); | ||
1754 | |||
1755 | return 0; | ||
1756 | } | ||
1757 | |||
1736 | /* | 1758 | /* |
1737 | * First and second port on STMCLiteadaptors is reserved for JTAG interface | 1759 | * First and second port on STMCLiteadaptors is reserved for JTAG interface |
1738 | * and the forth port for pio | 1760 | * and the forth port for pio |
diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h index 19156d1049fe..bf5227ad3ef7 100644 --- a/drivers/usb/serial/ftdi_sio_ids.h +++ b/drivers/usb/serial/ftdi_sio_ids.h | |||
@@ -1159,4 +1159,8 @@ | |||
1159 | /* USB-Nano-485*/ | 1159 | /* USB-Nano-485*/ |
1160 | #define FTDI_CTI_NANO_PID 0xF60B | 1160 | #define FTDI_CTI_NANO_PID 0xF60B |
1161 | 1161 | ||
1162 | 1162 | /* | |
1163 | * ZeitControl cardsystems GmbH rfid-readers http://zeitconrol.de | ||
1164 | */ | ||
1165 | /* TagTracer MIFARE*/ | ||
1166 | #define FTDI_ZEITCONTROL_TAGTRACE_MIFARE_PID 0xF7C0 | ||
diff --git a/drivers/usb/serial/garmin_gps.c b/drivers/usb/serial/garmin_gps.c index b0a7a9e909a4..1a49ca9c8ea5 100644 --- a/drivers/usb/serial/garmin_gps.c +++ b/drivers/usb/serial/garmin_gps.c | |||
@@ -34,7 +34,7 @@ | |||
34 | #include <linux/module.h> | 34 | #include <linux/module.h> |
35 | #include <linux/spinlock.h> | 35 | #include <linux/spinlock.h> |
36 | #include <linux/uaccess.h> | 36 | #include <linux/uaccess.h> |
37 | #include <asm/atomic.h> | 37 | #include <linux/atomic.h> |
38 | #include <linux/usb.h> | 38 | #include <linux/usb.h> |
39 | #include <linux/usb/serial.h> | 39 | #include <linux/usb/serial.h> |
40 | 40 | ||
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index 60b25d8ea0e2..fe22e90bc879 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
@@ -148,6 +148,12 @@ static void option_instat_callback(struct urb *urb); | |||
148 | #define HUAWEI_PRODUCT_K4505 0x1464 | 148 | #define HUAWEI_PRODUCT_K4505 0x1464 |
149 | #define HUAWEI_PRODUCT_K3765 0x1465 | 149 | #define HUAWEI_PRODUCT_K3765 0x1465 |
150 | #define HUAWEI_PRODUCT_E14AC 0x14AC | 150 | #define HUAWEI_PRODUCT_E14AC 0x14AC |
151 | #define HUAWEI_PRODUCT_K3806 0x14AE | ||
152 | #define HUAWEI_PRODUCT_K4605 0x14C6 | ||
153 | #define HUAWEI_PRODUCT_K3770 0x14C9 | ||
154 | #define HUAWEI_PRODUCT_K3771 0x14CA | ||
155 | #define HUAWEI_PRODUCT_K4510 0x14CB | ||
156 | #define HUAWEI_PRODUCT_K4511 0x14CC | ||
151 | #define HUAWEI_PRODUCT_ETS1220 0x1803 | 157 | #define HUAWEI_PRODUCT_ETS1220 0x1803 |
152 | #define HUAWEI_PRODUCT_E353 0x1506 | 158 | #define HUAWEI_PRODUCT_E353 0x1506 |
153 | 159 | ||
@@ -412,6 +418,56 @@ static void option_instat_callback(struct urb *urb); | |||
412 | #define SAMSUNG_VENDOR_ID 0x04e8 | 418 | #define SAMSUNG_VENDOR_ID 0x04e8 |
413 | #define SAMSUNG_PRODUCT_GT_B3730 0x6889 | 419 | #define SAMSUNG_PRODUCT_GT_B3730 0x6889 |
414 | 420 | ||
421 | /* YUGA products www.yuga-info.com*/ | ||
422 | #define YUGA_VENDOR_ID 0x257A | ||
423 | #define YUGA_PRODUCT_CEM600 0x1601 | ||
424 | #define YUGA_PRODUCT_CEM610 0x1602 | ||
425 | #define YUGA_PRODUCT_CEM500 0x1603 | ||
426 | #define YUGA_PRODUCT_CEM510 0x1604 | ||
427 | #define YUGA_PRODUCT_CEM800 0x1605 | ||
428 | #define YUGA_PRODUCT_CEM900 0x1606 | ||
429 | |||
430 | #define YUGA_PRODUCT_CEU818 0x1607 | ||
431 | #define YUGA_PRODUCT_CEU816 0x1608 | ||
432 | #define YUGA_PRODUCT_CEU828 0x1609 | ||
433 | #define YUGA_PRODUCT_CEU826 0x160A | ||
434 | #define YUGA_PRODUCT_CEU518 0x160B | ||
435 | #define YUGA_PRODUCT_CEU516 0x160C | ||
436 | #define YUGA_PRODUCT_CEU528 0x160D | ||
437 | #define YUGA_PRODUCT_CEU526 0x160F | ||
438 | |||
439 | #define YUGA_PRODUCT_CWM600 0x2601 | ||
440 | #define YUGA_PRODUCT_CWM610 0x2602 | ||
441 | #define YUGA_PRODUCT_CWM500 0x2603 | ||
442 | #define YUGA_PRODUCT_CWM510 0x2604 | ||
443 | #define YUGA_PRODUCT_CWM800 0x2605 | ||
444 | #define YUGA_PRODUCT_CWM900 0x2606 | ||
445 | |||
446 | #define YUGA_PRODUCT_CWU718 0x2607 | ||
447 | #define YUGA_PRODUCT_CWU716 0x2608 | ||
448 | #define YUGA_PRODUCT_CWU728 0x2609 | ||
449 | #define YUGA_PRODUCT_CWU726 0x260A | ||
450 | #define YUGA_PRODUCT_CWU518 0x260B | ||
451 | #define YUGA_PRODUCT_CWU516 0x260C | ||
452 | #define YUGA_PRODUCT_CWU528 0x260D | ||
453 | #define YUGA_PRODUCT_CWU526 0x260F | ||
454 | |||
455 | #define YUGA_PRODUCT_CLM600 0x2601 | ||
456 | #define YUGA_PRODUCT_CLM610 0x2602 | ||
457 | #define YUGA_PRODUCT_CLM500 0x2603 | ||
458 | #define YUGA_PRODUCT_CLM510 0x2604 | ||
459 | #define YUGA_PRODUCT_CLM800 0x2605 | ||
460 | #define YUGA_PRODUCT_CLM900 0x2606 | ||
461 | |||
462 | #define YUGA_PRODUCT_CLU718 0x2607 | ||
463 | #define YUGA_PRODUCT_CLU716 0x2608 | ||
464 | #define YUGA_PRODUCT_CLU728 0x2609 | ||
465 | #define YUGA_PRODUCT_CLU726 0x260A | ||
466 | #define YUGA_PRODUCT_CLU518 0x260B | ||
467 | #define YUGA_PRODUCT_CLU516 0x260C | ||
468 | #define YUGA_PRODUCT_CLU528 0x260D | ||
469 | #define YUGA_PRODUCT_CLU526 0x260F | ||
470 | |||
415 | /* some devices interfaces need special handling due to a number of reasons */ | 471 | /* some devices interfaces need special handling due to a number of reasons */ |
416 | enum option_blacklist_reason { | 472 | enum option_blacklist_reason { |
417 | OPTION_BLACKLIST_NONE = 0, | 473 | OPTION_BLACKLIST_NONE = 0, |
@@ -547,6 +603,16 @@ static const struct usb_device_id option_ids[] = { | |||
547 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff) }, | 603 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff) }, |
548 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ETS1220, 0xff, 0xff, 0xff) }, | 604 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ETS1220, 0xff, 0xff, 0xff) }, |
549 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC, 0xff, 0xff, 0xff) }, | 605 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC, 0xff, 0xff, 0xff) }, |
606 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3806, 0xff, 0xff, 0xff) }, | ||
607 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0xff, 0xff) }, | ||
608 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) }, | ||
609 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) }, | ||
610 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) }, | ||
611 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x32) }, | ||
612 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x31) }, | ||
613 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x32) }, | ||
614 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x31) }, | ||
615 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x32) }, | ||
550 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x01) }, | 616 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x01) }, |
551 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, | 617 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, |
552 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, | 618 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, |
@@ -993,6 +1059,48 @@ static const struct usb_device_id option_ids[] = { | |||
993 | { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */ | 1059 | { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */ |
994 | { USB_DEVICE(ONDA_VENDOR_ID, ONDA_MT825UP) }, /* ONDA MT825UP modem */ | 1060 | { USB_DEVICE(ONDA_VENDOR_ID, ONDA_MT825UP) }, /* ONDA MT825UP modem */ |
995 | { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/ | 1061 | { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/ |
1062 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM600) }, | ||
1063 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM610) }, | ||
1064 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM500) }, | ||
1065 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM510) }, | ||
1066 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM800) }, | ||
1067 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEM900) }, | ||
1068 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU818) }, | ||
1069 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU816) }, | ||
1070 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU828) }, | ||
1071 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU826) }, | ||
1072 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU518) }, | ||
1073 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU516) }, | ||
1074 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU528) }, | ||
1075 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CEU526) }, | ||
1076 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM600) }, | ||
1077 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM610) }, | ||
1078 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM500) }, | ||
1079 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM510) }, | ||
1080 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM800) }, | ||
1081 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWM900) }, | ||
1082 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU718) }, | ||
1083 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU716) }, | ||
1084 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU728) }, | ||
1085 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU726) }, | ||
1086 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU518) }, | ||
1087 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU516) }, | ||
1088 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU528) }, | ||
1089 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CWU526) }, | ||
1090 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM600) }, | ||
1091 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM610) }, | ||
1092 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM500) }, | ||
1093 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM510) }, | ||
1094 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM800) }, | ||
1095 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLM900) }, | ||
1096 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU718) }, | ||
1097 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU716) }, | ||
1098 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU728) }, | ||
1099 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU726) }, | ||
1100 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU518) }, | ||
1101 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU516) }, | ||
1102 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU528) }, | ||
1103 | { USB_DEVICE(YUGA_VENDOR_ID, YUGA_PRODUCT_CLU526) }, | ||
996 | { } /* Terminating entry */ | 1104 | { } /* Terminating entry */ |
997 | }; | 1105 | }; |
998 | MODULE_DEVICE_TABLE(usb, option_ids); | 1106 | MODULE_DEVICE_TABLE(usb, option_ids); |
@@ -1122,11 +1230,13 @@ static int option_probe(struct usb_serial *serial, | |||
1122 | serial->interface->cur_altsetting->desc.bInterfaceClass != 0xff) | 1230 | serial->interface->cur_altsetting->desc.bInterfaceClass != 0xff) |
1123 | return -ENODEV; | 1231 | return -ENODEV; |
1124 | 1232 | ||
1125 | /* Don't bind network interfaces on Huawei K3765 & K4505 */ | 1233 | /* Don't bind network interfaces on Huawei K3765, K4505 & K4605 */ |
1126 | if (serial->dev->descriptor.idVendor == HUAWEI_VENDOR_ID && | 1234 | if (serial->dev->descriptor.idVendor == HUAWEI_VENDOR_ID && |
1127 | (serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K3765 || | 1235 | (serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K3765 || |
1128 | serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K4505) && | 1236 | serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K4505 || |
1129 | serial->interface->cur_altsetting->desc.bInterfaceNumber == 1) | 1237 | serial->dev->descriptor.idProduct == HUAWEI_PRODUCT_K4605) && |
1238 | (serial->interface->cur_altsetting->desc.bInterfaceNumber == 1 || | ||
1239 | serial->interface->cur_altsetting->desc.bInterfaceNumber == 2)) | ||
1130 | return -ENODEV; | 1240 | return -ENODEV; |
1131 | 1241 | ||
1132 | /* Don't bind network interface on Samsung GT-B3730, it is handled by a separate module */ | 1242 | /* Don't bind network interface on Samsung GT-B3730, it is handled by a separate module */ |
diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c index 54a9dab1f33b..aeccc7f0a93c 100644 --- a/drivers/usb/serial/qcserial.c +++ b/drivers/usb/serial/qcserial.c | |||
@@ -45,6 +45,7 @@ static const struct usb_device_id id_table[] = { | |||
45 | {USB_DEVICE(0x05c6, 0x9203)}, /* Generic Gobi Modem device */ | 45 | {USB_DEVICE(0x05c6, 0x9203)}, /* Generic Gobi Modem device */ |
46 | {USB_DEVICE(0x05c6, 0x9222)}, /* Generic Gobi Modem device */ | 46 | {USB_DEVICE(0x05c6, 0x9222)}, /* Generic Gobi Modem device */ |
47 | {USB_DEVICE(0x05c6, 0x9008)}, /* Generic Gobi QDL device */ | 47 | {USB_DEVICE(0x05c6, 0x9008)}, /* Generic Gobi QDL device */ |
48 | {USB_DEVICE(0x05c6, 0x9009)}, /* Generic Gobi Modem device */ | ||
48 | {USB_DEVICE(0x05c6, 0x9201)}, /* Generic Gobi QDL device */ | 49 | {USB_DEVICE(0x05c6, 0x9201)}, /* Generic Gobi QDL device */ |
49 | {USB_DEVICE(0x05c6, 0x9221)}, /* Generic Gobi QDL device */ | 50 | {USB_DEVICE(0x05c6, 0x9221)}, /* Generic Gobi QDL device */ |
50 | {USB_DEVICE(0x05c6, 0x9231)}, /* Generic Gobi QDL device */ | 51 | {USB_DEVICE(0x05c6, 0x9231)}, /* Generic Gobi QDL device */ |
@@ -78,6 +79,7 @@ static const struct usb_device_id id_table[] = { | |||
78 | {USB_DEVICE(0x1199, 0x9008)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ | 79 | {USB_DEVICE(0x1199, 0x9008)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ |
79 | {USB_DEVICE(0x1199, 0x9009)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ | 80 | {USB_DEVICE(0x1199, 0x9009)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ |
80 | {USB_DEVICE(0x1199, 0x900a)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ | 81 | {USB_DEVICE(0x1199, 0x900a)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ |
82 | {USB_DEVICE(0x1199, 0x9011)}, /* Sierra Wireless Gobi 2000 Modem device (MC8305) */ | ||
81 | {USB_DEVICE(0x16d8, 0x8001)}, /* CMDTech Gobi 2000 QDL device (VU922) */ | 83 | {USB_DEVICE(0x16d8, 0x8001)}, /* CMDTech Gobi 2000 QDL device (VU922) */ |
82 | {USB_DEVICE(0x16d8, 0x8002)}, /* CMDTech Gobi 2000 Modem device (VU922) */ | 84 | {USB_DEVICE(0x16d8, 0x8002)}, /* CMDTech Gobi 2000 Modem device (VU922) */ |
83 | {USB_DEVICE(0x05c6, 0x9204)}, /* Gobi 2000 QDL device */ | 85 | {USB_DEVICE(0x05c6, 0x9204)}, /* Gobi 2000 QDL device */ |