Lines Matching full:serial

3  * Prolific PL2303 USB to serial adaptor driver
10 * See Documentation/usb/usb-serial.rst for more information on using this
20 #include <linux/serial.h>
26 #include <linux/usb/serial.h>
244 static int pl2303_vendor_read(struct usb_serial *serial, u16 value, in pl2303_vendor_read() argument
247 struct pl2303_serial_private *spriv = usb_get_serial_data(serial); in pl2303_vendor_read()
248 struct device *dev = &serial->interface->dev; in pl2303_vendor_read()
257 res = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0), in pl2303_vendor_read()
274 static int pl2303_vendor_write(struct usb_serial *serial, u16 value, u16 index) in pl2303_vendor_write() argument
276 struct pl2303_serial_private *spriv = usb_get_serial_data(serial); in pl2303_vendor_write()
277 struct device *dev = &serial->interface->dev; in pl2303_vendor_write()
288 res = usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0), in pl2303_vendor_write()
300 static int pl2303_update_reg(struct usb_serial *serial, u8 reg, u8 mask, u8 val) in pl2303_update_reg() argument
302 struct pl2303_serial_private *spriv = usb_get_serial_data(serial); in pl2303_update_reg()
311 ret = pl2303_vendor_read(serial, reg, buf); in pl2303_update_reg()
313 ret = pl2303_vendor_read(serial, reg | 0x80, buf); in pl2303_update_reg()
321 ret = pl2303_vendor_write(serial, reg, *buf); in pl2303_update_reg()
328 static int pl2303_probe(struct usb_serial *serial, in pl2303_probe() argument
331 usb_set_serial_data(serial, (void *)id->driver_info); in pl2303_probe()
341 static int pl2303_endpoint_hack(struct usb_serial *serial, in pl2303_endpoint_hack() argument
344 struct usb_interface *interface = serial->interface; in pl2303_endpoint_hack()
345 struct usb_device *dev = serial->dev; in pl2303_endpoint_hack()
371 static int pl2303_calc_num_ports(struct usb_serial *serial, in pl2303_calc_num_ports() argument
374 unsigned long quirks = (unsigned long)usb_get_serial_data(serial); in pl2303_calc_num_ports()
375 struct device *dev = &serial->interface->dev; in pl2303_calc_num_ports()
379 ret = pl2303_endpoint_hack(serial, epds); in pl2303_calc_num_ports()
392 static bool pl2303_supports_hx_status(struct usb_serial *serial) in pl2303_supports_hx_status() argument
397 ret = usb_control_msg_recv(serial->dev, 0, VENDOR_READ_REQUEST, in pl2303_supports_hx_status()
404 static int pl2303_detect_type(struct usb_serial *serial) in pl2303_detect_type() argument
406 struct usb_device_descriptor *desc = &serial->dev->descriptor; in pl2303_detect_type()
445 if (pl2303_supports_hx_status(serial)) in pl2303_detect_type()
453 if (pl2303_supports_hx_status(serial)) in pl2303_detect_type()
468 dev_err(&serial->interface->dev, in pl2303_detect_type()
473 static bool pl2303_is_hxd_clone(struct usb_serial *serial) in pl2303_is_hxd_clone() argument
475 struct usb_device *udev = serial->dev; in pl2303_is_hxd_clone()
492 static int pl2303_startup(struct usb_serial *serial) in pl2303_startup() argument
499 ret = pl2303_detect_type(serial); in pl2303_startup()
504 dev_dbg(&serial->interface->dev, "device type: %s\n", pl2303_type_data[type].name); in pl2303_startup()
511 spriv->quirks = (unsigned long)usb_get_serial_data(serial); in pl2303_startup()
514 if (type == TYPE_HXD && pl2303_is_hxd_clone(serial)) in pl2303_startup()
517 usb_set_serial_data(serial, spriv); in pl2303_startup()
526 pl2303_vendor_read(serial, 0x8484, buf); in pl2303_startup()
527 pl2303_vendor_write(serial, 0x0404, 0); in pl2303_startup()
528 pl2303_vendor_read(serial, 0x8484, buf); in pl2303_startup()
529 pl2303_vendor_read(serial, 0x8383, buf); in pl2303_startup()
530 pl2303_vendor_read(serial, 0x8484, buf); in pl2303_startup()
531 pl2303_vendor_write(serial, 0x0404, 1); in pl2303_startup()
532 pl2303_vendor_read(serial, 0x8484, buf); in pl2303_startup()
533 pl2303_vendor_read(serial, 0x8383, buf); in pl2303_startup()
534 pl2303_vendor_write(serial, 0, 1); in pl2303_startup()
535 pl2303_vendor_write(serial, 1, 0); in pl2303_startup()
537 pl2303_vendor_write(serial, 2, 0x24); in pl2303_startup()
539 pl2303_vendor_write(serial, 2, 0x44); in pl2303_startup()
547 static void pl2303_release(struct usb_serial *serial) in pl2303_release() argument
549 struct pl2303_serial_private *spriv = usb_get_serial_data(serial); in pl2303_release()
580 struct usb_device *dev = port->serial->dev; in pl2303_set_control_lines()
717 struct usb_serial *serial = port->serial; in pl2303_encode_baud_rate() local
718 struct pl2303_serial_private *spriv = usb_get_serial_data(serial); in pl2303_encode_baud_rate()
753 struct usb_serial *serial = port->serial; in pl2303_get_line_request() local
754 struct pl2303_serial_private *spriv = usb_get_serial_data(serial); in pl2303_get_line_request()
755 struct usb_device *udev = serial->dev; in pl2303_get_line_request()
785 struct usb_device *udev = port->serial->dev; in pl2303_set_line_request()
830 struct usb_serial *serial = port->serial; in pl2303_set_termios() local
831 struct pl2303_serial_private *spriv = usb_get_serial_data(serial); in pl2303_set_termios()
906 * Some PL2303 are known to lose bytes if you change serial settings in pl2303_set_termios()
940 pl2303_update_reg(serial, 0, PL2303_FLOWCTRL_MASK, 0x40); in pl2303_set_termios()
942 pl2303_update_reg(serial, PL2303_HXN_FLOWCTRL_REG, in pl2303_set_termios()
946 pl2303_update_reg(serial, 0, PL2303_FLOWCTRL_MASK, 0x60); in pl2303_set_termios()
950 pl2303_update_reg(serial, PL2303_HXN_FLOWCTRL_REG, in pl2303_set_termios()
954 pl2303_update_reg(serial, 0, PL2303_FLOWCTRL_MASK, 0xc0); in pl2303_set_termios()
958 pl2303_update_reg(serial, PL2303_HXN_FLOWCTRL_REG, in pl2303_set_termios()
962 pl2303_update_reg(serial, 0, PL2303_FLOWCTRL_MASK, 0); in pl2303_set_termios()
995 struct usb_serial *serial = port->serial; in pl2303_open() local
996 struct pl2303_serial_private *spriv = usb_get_serial_data(serial); in pl2303_open()
1000 usb_clear_halt(serial->dev, port->write_urb->pipe); in pl2303_open()
1001 usb_clear_halt(serial->dev, port->read_urb->pipe); in pl2303_open()
1005 pl2303_vendor_write(serial, PL2303_HXN_RESET_REG, in pl2303_open()
1009 pl2303_vendor_write(serial, 8, 0); in pl2303_open()
1010 pl2303_vendor_write(serial, 9, 0); in pl2303_open()
1100 struct usb_serial *serial = port->serial; in pl2303_set_break() local
1101 struct pl2303_serial_private *spriv = usb_get_serial_data(serial); in pl2303_set_break()
1116 result = usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0), in pl2303_set_break()
1138 struct usb_serial *serial = port->serial; in pl2303_update_line_status() local
1139 struct pl2303_serial_private *spriv = usb_get_serial_data(serial); in pl2303_update_line_status()
1309 MODULE_DESCRIPTION("Prolific PL2303 USB to serial adaptor driver");