diff options
-rw-r--r-- | drivers/usb/class/cdc-acm.c | 10 | ||||
-rw-r--r-- | drivers/usb/class/cdc-acm.h | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index 1b68fed464cb..ed8c62b2d9d1 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c | |||
@@ -581,6 +581,13 @@ static int acm_tty_install(struct tty_driver *driver, struct tty_struct *tty) | |||
581 | if (retval) | 581 | if (retval) |
582 | goto error_init_termios; | 582 | goto error_init_termios; |
583 | 583 | ||
584 | /* | ||
585 | * Suppress initial echoing for some devices which might send data | ||
586 | * immediately after acm driver has been installed. | ||
587 | */ | ||
588 | if (acm->quirks & DISABLE_ECHO) | ||
589 | tty->termios.c_lflag &= ~ECHO; | ||
590 | |||
584 | tty->driver_data = acm; | 591 | tty->driver_data = acm; |
585 | 592 | ||
586 | return 0; | 593 | return 0; |
@@ -1657,6 +1664,9 @@ static const struct usb_device_id acm_ids[] = { | |||
1657 | { USB_DEVICE(0x0e8d, 0x0003), /* FIREFLY, MediaTek Inc; andrey.arapov@gmail.com */ | 1664 | { USB_DEVICE(0x0e8d, 0x0003), /* FIREFLY, MediaTek Inc; andrey.arapov@gmail.com */ |
1658 | .driver_info = NO_UNION_NORMAL, /* has no union descriptor */ | 1665 | .driver_info = NO_UNION_NORMAL, /* has no union descriptor */ |
1659 | }, | 1666 | }, |
1667 | { USB_DEVICE(0x0e8d, 0x2000), /* MediaTek Inc Preloader */ | ||
1668 | .driver_info = DISABLE_ECHO, /* DISABLE ECHO in termios flag */ | ||
1669 | }, | ||
1660 | { USB_DEVICE(0x0e8d, 0x3329), /* MediaTek Inc GPS */ | 1670 | { USB_DEVICE(0x0e8d, 0x3329), /* MediaTek Inc GPS */ |
1661 | .driver_info = NO_UNION_NORMAL, /* has no union descriptor */ | 1671 | .driver_info = NO_UNION_NORMAL, /* has no union descriptor */ |
1662 | }, | 1672 | }, |
diff --git a/drivers/usb/class/cdc-acm.h b/drivers/usb/class/cdc-acm.h index ca06b20d7af9..515aad0847ee 100644 --- a/drivers/usb/class/cdc-acm.h +++ b/drivers/usb/class/cdc-acm.h | |||
@@ -140,3 +140,4 @@ struct acm { | |||
140 | #define QUIRK_CONTROL_LINE_STATE BIT(6) | 140 | #define QUIRK_CONTROL_LINE_STATE BIT(6) |
141 | #define CLEAR_HALT_CONDITIONS BIT(7) | 141 | #define CLEAR_HALT_CONDITIONS BIT(7) |
142 | #define SEND_ZERO_PACKET BIT(8) | 142 | #define SEND_ZERO_PACKET BIT(8) |
143 | #define DISABLE_ECHO BIT(9) | ||