mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-31 07:54:57 -04:00
usb: cdc-acm: Restore CAP_BRK functionnality to CH343
The CH343 USB/serial adapter is as buggy as it is popular (very). One of its quirks is that despite being capable of signalling a BREAK condition, it doesn't advertise it. This used to work nonetheless until66aad7d8d3("usb: cdc-acm: return correct error code on unsupported break") applied some reasonable restrictions, preventing breaks from being emitted on devices that do not advertise CAP_BRK. Add a quirk for this particular device, so that breaks can still be produced on some of my machines attached to my console server. Fixes:66aad7d8d3("usb: cdc-acm: return correct error code on unsupported break") Signed-off-by: Marc Zyngier <maz@kernel.org> Cc: stable <stable@kernel.org> Cc: Oliver Neukum <oneukum@suse.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Acked-by: Oliver Neukum <oneukum@suse.com> Link: https://patch.msgid.link/20260301124440.1192752-1-maz@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
8479891d1f
commit
14ae24cba2
@@ -1379,6 +1379,8 @@ static int acm_probe(struct usb_interface *intf,
|
||||
acm->ctrl_caps = h.usb_cdc_acm_descriptor->bmCapabilities;
|
||||
if (quirks & NO_CAP_LINE)
|
||||
acm->ctrl_caps &= ~USB_CDC_CAP_LINE;
|
||||
if (quirks & MISSING_CAP_BRK)
|
||||
acm->ctrl_caps |= USB_CDC_CAP_BRK;
|
||||
acm->ctrlsize = ctrlsize;
|
||||
acm->readsize = readsize;
|
||||
acm->rx_buflimit = num_rx_buf;
|
||||
@@ -2002,6 +2004,9 @@ static const struct usb_device_id acm_ids[] = {
|
||||
.driver_info = IGNORE_DEVICE,
|
||||
},
|
||||
|
||||
/* CH343 supports CAP_BRK, but doesn't advertise it */
|
||||
{ USB_DEVICE(0x1a86, 0x55d3), .driver_info = MISSING_CAP_BRK, },
|
||||
|
||||
/* control interfaces without any protocol set */
|
||||
{ USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM,
|
||||
USB_CDC_PROTO_NONE) },
|
||||
|
||||
@@ -113,3 +113,4 @@ struct acm {
|
||||
#define CLEAR_HALT_CONDITIONS BIT(5)
|
||||
#define SEND_ZERO_PACKET BIT(6)
|
||||
#define DISABLE_ECHO BIT(7)
|
||||
#define MISSING_CAP_BRK BIT(8)
|
||||
|
||||
Reference in New Issue
Block a user