Commit 6da99f9d authored by Johan Hovold's avatar Johan Hovold

USB: serial: xr: add support for XR22801, XR22802, XR22804

The XR22801, XR22802 and XR22804 are compound devices with an embedded
hub and up to seven downstream USB devices including one, two or four
UARTs respectively.

The UART function is similar to XR21B142X but most registers are offset
by 0x40, the register requests are different and are directed at the
device rather than interface, and 5 and 6-bit words are not supported.
Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
parent 4099d4ba
......@@ -134,6 +134,7 @@ enum xr_type_id {
XR21V141X,
XR21B142X,
XR21B1411,
XR2280X,
XR_TYPE_COUNT,
};
......@@ -198,6 +199,24 @@ static const struct xr_type xr_types[] = {
.gpio_status = 0xc10,
.custom_driver = 0x20d,
},
[XR2280X] = {
.reg_width = 16,
.reg_recipient = USB_RECIP_DEVICE,
.set_reg = 0x05,
.get_reg = 0x05,
.uart_enable = 0x40,
.flow_control = 0x46,
.xon_char = 0x47,
.xoff_char = 0x48,
.tx_break = 0x4a,
.gpio_mode = 0x4c,
.gpio_direction = 0x4d,
.gpio_set = 0x4e,
.gpio_clear = 0x4f,
.gpio_status = 0x50,
.custom_driver = 0x81,
},
};
struct xr_data {
......@@ -906,6 +925,10 @@ static void xr_port_remove(struct usb_serial_port *port)
.driver_info = (type)
static const struct usb_device_id id_table[] = {
{ XR_DEVICE(0x04e2, 0x1400, XR2280X) },
{ XR_DEVICE(0x04e2, 0x1401, XR2280X) },
{ XR_DEVICE(0x04e2, 0x1402, XR2280X) },
{ XR_DEVICE(0x04e2, 0x1403, XR2280X) },
{ XR_DEVICE(0x04e2, 0x1410, XR21V141X) },
{ XR_DEVICE(0x04e2, 0x1411, XR21B1411) },
{ XR_DEVICE(0x04e2, 0x1412, XR21V141X) },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment