diff options
| -rw-r--r-- | drivers/usb/serial/cp210x.c | 1 | ||||
| -rw-r--r-- | drivers/usb/serial/ftdi_sio.c | 33 | ||||
| -rw-r--r-- | drivers/usb/serial/ftdi_sio_ids.h | 39 | ||||
| -rw-r--r-- | drivers/usb/serial/keyspan.c | 97 | ||||
| -rw-r--r-- | drivers/usb/serial/ssu100.c | 11 |
5 files changed, 131 insertions, 50 deletions
diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c index cfd009dc4018..6c4eb3cf5efd 100644 --- a/drivers/usb/serial/cp210x.c +++ b/drivers/usb/serial/cp210x.c | |||
| @@ -120,6 +120,7 @@ static const struct usb_device_id id_table[] = { | |||
| 120 | { USB_DEVICE(0x10C4, 0x85F8) }, /* Virtenio Preon32 */ | 120 | { USB_DEVICE(0x10C4, 0x85F8) }, /* Virtenio Preon32 */ |
| 121 | { USB_DEVICE(0x10C4, 0x8664) }, /* AC-Services CAN-IF */ | 121 | { USB_DEVICE(0x10C4, 0x8664) }, /* AC-Services CAN-IF */ |
| 122 | { USB_DEVICE(0x10C4, 0x8665) }, /* AC-Services OBD-IF */ | 122 | { USB_DEVICE(0x10C4, 0x8665) }, /* AC-Services OBD-IF */ |
| 123 | { USB_DEVICE(0x10C4, 0x8875) }, /* CEL MeshConnect USB Stick */ | ||
| 123 | { USB_DEVICE(0x10C4, 0x88A4) }, /* MMB Networks ZigBee USB Device */ | 124 | { USB_DEVICE(0x10C4, 0x88A4) }, /* MMB Networks ZigBee USB Device */ |
| 124 | { USB_DEVICE(0x10C4, 0x88A5) }, /* Planet Innovation Ingeni ZigBee USB Device */ | 125 | { USB_DEVICE(0x10C4, 0x88A5) }, /* Planet Innovation Ingeni ZigBee USB Device */ |
| 125 | { USB_DEVICE(0x10C4, 0x8946) }, /* Ketra N1 Wireless Interface */ | 126 | { USB_DEVICE(0x10C4, 0x8946) }, /* Ketra N1 Wireless Interface */ |
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 0dad8ce5a609..1ebb351b9e9a 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
| @@ -470,6 +470,39 @@ static const struct usb_device_id id_table_combined[] = { | |||
| 470 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_01FD_PID) }, | 470 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_01FD_PID) }, |
| 471 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_01FE_PID) }, | 471 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_01FE_PID) }, |
| 472 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_01FF_PID) }, | 472 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_01FF_PID) }, |
| 473 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_4701_PID) }, | ||
| 474 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9300_PID) }, | ||
| 475 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9301_PID) }, | ||
| 476 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9302_PID) }, | ||
| 477 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9303_PID) }, | ||
| 478 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9304_PID) }, | ||
| 479 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9305_PID) }, | ||
| 480 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9306_PID) }, | ||
| 481 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9307_PID) }, | ||
| 482 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9308_PID) }, | ||
| 483 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9309_PID) }, | ||
| 484 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930A_PID) }, | ||
| 485 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930B_PID) }, | ||
| 486 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930C_PID) }, | ||
| 487 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930D_PID) }, | ||
| 488 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930E_PID) }, | ||
| 489 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_930F_PID) }, | ||
| 490 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9310_PID) }, | ||
| 491 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9311_PID) }, | ||
| 492 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9312_PID) }, | ||
| 493 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9313_PID) }, | ||
| 494 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9314_PID) }, | ||
| 495 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9315_PID) }, | ||
| 496 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9316_PID) }, | ||
| 497 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9317_PID) }, | ||
| 498 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9318_PID) }, | ||
| 499 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_9319_PID) }, | ||
| 500 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931A_PID) }, | ||
| 501 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931B_PID) }, | ||
| 502 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931C_PID) }, | ||
| 503 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931D_PID) }, | ||
| 504 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931E_PID) }, | ||
| 505 | { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_931F_PID) }, | ||
| 473 | { USB_DEVICE(FTDI_VID, FTDI_PERLE_ULTRAPORT_PID) }, | 506 | { USB_DEVICE(FTDI_VID, FTDI_PERLE_ULTRAPORT_PID) }, |
| 474 | { USB_DEVICE(FTDI_VID, FTDI_PIEGROUP_PID) }, | 507 | { USB_DEVICE(FTDI_VID, FTDI_PIEGROUP_PID) }, |
| 475 | { USB_DEVICE(FTDI_VID, FTDI_TNC_X_PID) }, | 508 | { USB_DEVICE(FTDI_VID, FTDI_TNC_X_PID) }, |
diff --git a/drivers/usb/serial/ftdi_sio_ids.h b/drivers/usb/serial/ftdi_sio_ids.h index 6786b705ccf6..e52409c9be99 100644 --- a/drivers/usb/serial/ftdi_sio_ids.h +++ b/drivers/usb/serial/ftdi_sio_ids.h | |||
| @@ -926,8 +926,8 @@ | |||
| 926 | #define BAYER_CONTOUR_CABLE_PID 0x6001 | 926 | #define BAYER_CONTOUR_CABLE_PID 0x6001 |
| 927 | 927 | ||
| 928 | /* | 928 | /* |
| 929 | * The following are the values for the Matrix Orbital FTDI Range | 929 | * Matrix Orbital Intelligent USB displays. |
| 930 | * Anything in this range will use an FT232RL. | 930 | * http://www.matrixorbital.com |
| 931 | */ | 931 | */ |
| 932 | #define MTXORB_VID 0x1B3D | 932 | #define MTXORB_VID 0x1B3D |
| 933 | #define MTXORB_FTDI_RANGE_0100_PID 0x0100 | 933 | #define MTXORB_FTDI_RANGE_0100_PID 0x0100 |
| @@ -1186,8 +1186,39 @@ | |||
| 1186 | #define MTXORB_FTDI_RANGE_01FD_PID 0x01FD | 1186 | #define MTXORB_FTDI_RANGE_01FD_PID 0x01FD |
| 1187 | #define MTXORB_FTDI_RANGE_01FE_PID 0x01FE | 1187 | #define MTXORB_FTDI_RANGE_01FE_PID 0x01FE |
| 1188 | #define MTXORB_FTDI_RANGE_01FF_PID 0x01FF | 1188 | #define MTXORB_FTDI_RANGE_01FF_PID 0x01FF |
| 1189 | 1189 | #define MTXORB_FTDI_RANGE_4701_PID 0x4701 | |
| 1190 | 1190 | #define MTXORB_FTDI_RANGE_9300_PID 0x9300 | |
| 1191 | #define MTXORB_FTDI_RANGE_9301_PID 0x9301 | ||
| 1192 | #define MTXORB_FTDI_RANGE_9302_PID 0x9302 | ||
| 1193 | #define MTXORB_FTDI_RANGE_9303_PID 0x9303 | ||
| 1194 | #define MTXORB_FTDI_RANGE_9304_PID 0x9304 | ||
| 1195 | #define MTXORB_FTDI_RANGE_9305_PID 0x9305 | ||
| 1196 | #define MTXORB_FTDI_RANGE_9306_PID 0x9306 | ||
| 1197 | #define MTXORB_FTDI_RANGE_9307_PID 0x9307 | ||
| 1198 | #define MTXORB_FTDI_RANGE_9308_PID 0x9308 | ||
| 1199 | #define MTXORB_FTDI_RANGE_9309_PID 0x9309 | ||
| 1200 | #define MTXORB_FTDI_RANGE_930A_PID 0x930A | ||
| 1201 | #define MTXORB_FTDI_RANGE_930B_PID 0x930B | ||
| 1202 | #define MTXORB_FTDI_RANGE_930C_PID 0x930C | ||
| 1203 | #define MTXORB_FTDI_RANGE_930D_PID 0x930D | ||
| 1204 | #define MTXORB_FTDI_RANGE_930E_PID 0x930E | ||
| 1205 | #define MTXORB_FTDI_RANGE_930F_PID 0x930F | ||
| 1206 | #define MTXORB_FTDI_RANGE_9310_PID 0x9310 | ||
| 1207 | #define MTXORB_FTDI_RANGE_9311_PID 0x9311 | ||
| 1208 | #define MTXORB_FTDI_RANGE_9312_PID 0x9312 | ||
| 1209 | #define MTXORB_FTDI_RANGE_9313_PID 0x9313 | ||
| 1210 | #define MTXORB_FTDI_RANGE_9314_PID 0x9314 | ||
| 1211 | #define MTXORB_FTDI_RANGE_9315_PID 0x9315 | ||
| 1212 | #define MTXORB_FTDI_RANGE_9316_PID 0x9316 | ||
| 1213 | #define MTXORB_FTDI_RANGE_9317_PID 0x9317 | ||
| 1214 | #define MTXORB_FTDI_RANGE_9318_PID 0x9318 | ||
| 1215 | #define MTXORB_FTDI_RANGE_9319_PID 0x9319 | ||
| 1216 | #define MTXORB_FTDI_RANGE_931A_PID 0x931A | ||
| 1217 | #define MTXORB_FTDI_RANGE_931B_PID 0x931B | ||
| 1218 | #define MTXORB_FTDI_RANGE_931C_PID 0x931C | ||
| 1219 | #define MTXORB_FTDI_RANGE_931D_PID 0x931D | ||
| 1220 | #define MTXORB_FTDI_RANGE_931E_PID 0x931E | ||
| 1221 | #define MTXORB_FTDI_RANGE_931F_PID 0x931F | ||
| 1191 | 1222 | ||
| 1192 | /* | 1223 | /* |
| 1193 | * The Mobility Lab (TML) | 1224 | * The Mobility Lab (TML) |
diff --git a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c index 93cb7cebda62..077c714f1285 100644 --- a/drivers/usb/serial/keyspan.c +++ b/drivers/usb/serial/keyspan.c | |||
| @@ -311,24 +311,30 @@ static void usa26_indat_callback(struct urb *urb) | |||
| 311 | if ((data[0] & 0x80) == 0) { | 311 | if ((data[0] & 0x80) == 0) { |
| 312 | /* no errors on individual bytes, only | 312 | /* no errors on individual bytes, only |
| 313 | possible overrun err */ | 313 | possible overrun err */ |
| 314 | if (data[0] & RXERROR_OVERRUN) | 314 | if (data[0] & RXERROR_OVERRUN) { |
| 315 | err = TTY_OVERRUN; | 315 | tty_insert_flip_char(&port->port, 0, |
| 316 | else | 316 | TTY_OVERRUN); |
| 317 | err = 0; | 317 | } |
| 318 | for (i = 1; i < urb->actual_length ; ++i) | 318 | for (i = 1; i < urb->actual_length ; ++i) |
| 319 | tty_insert_flip_char(&port->port, data[i], err); | 319 | tty_insert_flip_char(&port->port, data[i], |
| 320 | TTY_NORMAL); | ||
| 320 | } else { | 321 | } else { |
| 321 | /* some bytes had errors, every byte has status */ | 322 | /* some bytes had errors, every byte has status */ |
| 322 | dev_dbg(&port->dev, "%s - RX error!!!!\n", __func__); | 323 | dev_dbg(&port->dev, "%s - RX error!!!!\n", __func__); |
| 323 | for (i = 0; i + 1 < urb->actual_length; i += 2) { | 324 | for (i = 0; i + 1 < urb->actual_length; i += 2) { |
| 324 | int stat = data[i], flag = 0; | 325 | int stat = data[i]; |
| 325 | if (stat & RXERROR_OVERRUN) | 326 | int flag = TTY_NORMAL; |
| 326 | flag |= TTY_OVERRUN; | 327 | |
| 327 | if (stat & RXERROR_FRAMING) | 328 | if (stat & RXERROR_OVERRUN) { |
| 328 | flag |= TTY_FRAME; | 329 | tty_insert_flip_char(&port->port, 0, |
| 329 | if (stat & RXERROR_PARITY) | 330 | TTY_OVERRUN); |
| 330 | flag |= TTY_PARITY; | 331 | } |
| 331 | /* XXX should handle break (0x10) */ | 332 | /* XXX should handle break (0x10) */ |
| 333 | if (stat & RXERROR_PARITY) | ||
| 334 | flag = TTY_PARITY; | ||
| 335 | else if (stat & RXERROR_FRAMING) | ||
| 336 | flag = TTY_FRAME; | ||
| 337 | |||
| 332 | tty_insert_flip_char(&port->port, data[i+1], | 338 | tty_insert_flip_char(&port->port, data[i+1], |
| 333 | flag); | 339 | flag); |
| 334 | } | 340 | } |
| @@ -649,14 +655,19 @@ static void usa49_indat_callback(struct urb *urb) | |||
| 649 | } else { | 655 | } else { |
| 650 | /* some bytes had errors, every byte has status */ | 656 | /* some bytes had errors, every byte has status */ |
| 651 | for (i = 0; i + 1 < urb->actual_length; i += 2) { | 657 | for (i = 0; i + 1 < urb->actual_length; i += 2) { |
| 652 | int stat = data[i], flag = 0; | 658 | int stat = data[i]; |
| 653 | if (stat & RXERROR_OVERRUN) | 659 | int flag = TTY_NORMAL; |
