Lines Matching refs:serial

3  * Silicon Laboratories CP210x USB to RS232 serial adaptor driver
21 #include <linux/usb/serial.h>
26 #define DRIVER_DESC "Silicon Labs CP210x RS232 serial adaptor driver"
83 { USB_DEVICE(0x10C4, 0x803B) }, /* Pololu USB-serial converter */
198 { USB_DEVICE(0x16D6, 0x0001) }, /* Jablotron serial interface */
220 { USB_DEVICE(0x1901, 0x0197) }, /* GE CS1000 M.2 Key E serial interface */
221 { USB_DEVICE(0x1901, 0x0198) }, /* GE CS1000 Display serial interface */
630 static u8 cp210x_interface_num(struct usb_serial *serial)
634 cur_altsetting = serial->interface->cur_altsetting;
646 struct usb_serial *serial = port->serial;
651 result = usb_control_msg_recv(serial->dev, 0, req,
676 static int cp210x_read_vendor_block(struct usb_serial *serial, u8 type, u16 val,
681 result = usb_control_msg_recv(serial->dev, 0, CP210X_VENDOR_SPECIFIC,
682 type, val, cp210x_interface_num(serial), buf, bufsize,
685 dev_err(&serial->interface->dev,
700 struct usb_serial *serial = port->serial;
704 result = usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0),
723 struct usb_serial *serial = port->serial;
727 result = usb_control_msg_send(serial->dev, 0, req,
757 static int cp210x_write_vendor_block(struct usb_serial *serial, u8 type,
762 result = usb_control_msg_send(serial->dev, 0, CP210X_VENDOR_SPECIFIC,
763 type, val, cp210x_interface_num(serial), buf, bufsize,
766 dev_err(&serial->interface->dev,
928 struct usb_serial *serial = port->serial;
933 result = usb_control_msg_recv(serial->dev, 0, CP210X_GET_COMM_STATUS,
1055 struct usb_serial *serial = port->serial;
1056 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
1087 struct cp210x_serial_private *priv = usb_get_serial_data(port->serial);
1139 struct cp210x_serial_private *priv = usb_get_serial_data(port->serial);
1259 struct cp210x_serial_private *priv = usb_get_serial_data(port->serial);
1445 struct cp210x_serial_private *priv = usb_get_serial_data(port->serial);
1449 if (cp210x_interface_num(port->serial) == 1)
1467 struct usb_serial *serial = gpiochip_get_data(gc);
1468 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
1474 result = usb_autopm_get_interface(serial->interface);
1494 result = cp210x_read_vendor_block(serial, req_type, CP210X_READ_LATCH,
1497 usb_autopm_put_interface(serial->interface);
1509 struct usb_serial *serial = gpiochip_get_data(gc);
1510 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
1524 result = usb_autopm_get_interface(serial->interface);
1532 result = cp210x_write_vendor_block(serial,
1540 result = cp210x_write_vendor_block(serial,
1547 result = usb_control_msg(serial->dev,
1548 usb_sndctrlpipe(serial->dev, 0),
1557 usb_autopm_put_interface(serial->interface);
1560 dev_err(&serial->interface->dev, "failed to set GPIO value: %d\n",
1567 struct usb_serial *serial = gpiochip_get_data(gc);
1568 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
1575 struct usb_serial *serial = gpiochip_get_data(gc);
1576 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
1598 struct usb_serial *serial = gpiochip_get_data(gc);
1599 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
1610 struct usb_serial *serial = gpiochip_get_data(gc);
1611 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
1629 struct usb_serial *serial = gpiochip_get_data(gc);
1630 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
1631 struct device *dev = &serial->interface->dev;
1651 static int cp2105_gpioconf_init(struct usb_serial *serial)
1653 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
1656 u8 intf_num = cp210x_interface_num(serial);
1660 result = cp210x_read_vendor_block(serial, REQTYPE_DEVICE_TO_HOST,
1666 result = cp210x_read_vendor_block(serial, REQTYPE_DEVICE_TO_HOST,
1672 /* 2 banks of GPIO - One for the pins taken from each serial port */
1716 static int cp2104_gpioconf_init(struct usb_serial *serial)
1718 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
1725 result = cp210x_read_vendor_block(serial, REQTYPE_DEVICE_TO_HOST,
1766 static int cp2108_gpio_init(struct usb_serial *serial)
1768 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
1774 result = cp210x_read_vendor_block(serial, REQTYPE_DEVICE_TO_HOST,
1821 static int cp2102n_gpioconf_init(struct usb_serial *serial)
1823 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
1845 result = cp210x_read_vendor_block(serial,
1925 static int cp210x_gpio_init(struct usb_serial *serial)
1927 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
1932 result = cp2104_gpioconf_init(serial);
1935 result = cp2105_gpioconf_init(serial);
1942 if (cp210x_interface_num(serial) != 0)
1944 result = cp2108_gpio_init(serial);
1949 result = cp2102n_gpioconf_init(serial);
1967 priv->gc.parent = &serial->interface->dev;
1971 result = gpiochip_add_data(&priv->gc, serial);
1978 static void cp210x_gpio_remove(struct usb_serial *serial)
1980 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
1990 static int cp210x_gpio_init(struct usb_serial *serial)
1995 static void cp210x_gpio_remove(struct usb_serial *serial)
2004 struct usb_serial *serial = port->serial;
2011 port_priv->bInterfaceNumber = cp210x_interface_num(serial);
2027 static void cp210x_init_max_speed(struct usb_serial *serial)
2029 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
2050 if (cp210x_interface_num(serial) == 0) {
2074 static void cp2102_determine_quirks(struct usb_serial *serial)
2076 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
2089 ret = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0),
2093 dev_dbg(&serial->interface->dev,
2101 static int cp210x_get_fw_version(struct usb_serial *serial, u16 value)
2103 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
2107 ret = cp210x_read_vendor_block(serial, REQTYPE_DEVICE_TO_HOST, value,
2112 dev_dbg(&serial->interface->dev, "%s - %d.%d.%d\n", __func__,
2120 static void cp210x_determine_type(struct usb_serial *serial)
2122 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
2125 ret = cp210x_read_vendor_block(serial, REQTYPE_DEVICE_TO_HOST,
2129 dev_warn(&serial->interface->dev,
2135 dev_dbg(&serial->interface->dev, "partnum = 0x%02x\n", priv->partnum);
2139 cp2102_determine_quirks(serial);
2143 cp210x_get_fw_version(serial, CP210X_GET_FW_VER);
2148 ret = cp210x_get_fw_version(serial, CP210X_GET_FW_VER_2N);
2159 static int cp210x_attach(struct usb_serial *serial)
2168 usb_set_serial_data(serial, priv);
2170 cp210x_determine_type(serial);
2171 cp210x_init_max_speed(serial);
2173 result = cp210x_gpio_init(serial);
2175 dev_err(&serial->interface->dev, "GPIO initialisation failed: %d\n",
2182 static void cp210x_disconnect(struct usb_serial *serial)
2184 cp210x_gpio_remove(serial);
2187 static void cp210x_release(struct usb_serial *serial)
2189 struct cp210x_serial_private *priv = usb_get_serial_data(serial);
2191 cp210x_gpio_remove(serial);