Lines Matching refs:port

65 	u16 interface;		/* FT2232C, FT2232H or FT4232H port interface
1084 static int ftdi_sio_port_probe(struct usb_serial_port *port);
1085 static int ftdi_sio_port_remove(struct usb_serial_port *port);
1086 static int ftdi_open(struct tty_struct *tty, struct usb_serial_port *port);
1087 static void ftdi_dtr_rts(struct usb_serial_port *port, int on);
1089 static int ftdi_prepare_write_buffer(struct usb_serial_port *port,
1092 struct usb_serial_port *port, struct ktermios *old);
1103 static bool ftdi_tx_empty(struct usb_serial_port *port);
1104 static int ftdi_get_modem_status(struct usb_serial_port *port,
1235 #define set_mctrl(port, set) update_mctrl((port), (set), 0)
1236 #define clear_mctrl(port, clear) update_mctrl((port), 0, (clear))
1238 static int update_mctrl(struct usb_serial_port *port, unsigned int set,
1241 struct ftdi_private *priv = usb_get_serial_port_data(port);
1242 struct device *dev = &port->dev;
1261 rv = usb_control_msg(port->serial->dev,
1262 usb_sndctrlpipe(port->serial->dev, 0),
1285 struct usb_serial_port *port)
1287 struct ftdi_private *priv = usb_get_serial_port_data(port);
1288 struct device *dev = &port->dev;
1347 port->serial->dev->descriptor.idProduct);
1390 static int change_speed(struct tty_struct *tty, struct usb_serial_port *port)
1392 struct ftdi_private *priv = usb_get_serial_port_data(port);
1398 index_value = get_ftdi_divisor(tty, port);
1409 rv = usb_control_msg(port->serial->dev,
1410 usb_sndctrlpipe(port->serial->dev, 0),
1418 static int write_latency_timer(struct usb_serial_port *port)
1420 struct ftdi_private *priv = usb_get_serial_port_data(port);
1421 struct usb_device *udev = port->serial->dev;
1431 dev_dbg(&port->dev, "%s: setting latency timer = %i\n", __func__, l);
1440 dev_err(&port->dev, "Unable to write latency timer: %i\n", rv);
1444 static int _read_latency_timer(struct usb_serial_port *port)
1446 struct ftdi_private *priv = usb_get_serial_port_data(port);
1447 struct usb_device *udev = port->serial->dev;
1473 static int read_latency_timer(struct usb_serial_port *port)
1475 struct ftdi_private *priv = usb_get_serial_port_data(port);
1481 rv = _read_latency_timer(port);
1483 dev_err(&port->dev, "Unable to read latency timer: %i\n", rv);
1495 struct usb_serial_port *port = tty->driver_data;
1496 struct ftdi_private *priv = usb_get_serial_port_data(port);
1507 struct usb_serial_port *port = tty->driver_data;
1508 struct ftdi_private *priv = usb_get_serial_port_data(port);
1539 write_latency_timer(port);
1547 dev_warn_ratelimited(&port->dev, "use of SPD flags is deprecated\n");
1549 change_speed(tty, port);
1555 static int get_lsr_info(struct usb_serial_port *port,
1558 struct ftdi_private *priv = usb_get_serial_port_data(port);
1571 static void ftdi_determine_type(struct usb_serial_port *port)
1573 struct ftdi_private *priv = usb_get_serial_port_data(port);
1574 struct usb_serial *serial = port->serial;
1584 dev_dbg(&port->dev, "%s: bcdDevice = 0x%x, bNumInterfaces = %u\n", __func__,
1615 dev_dbg(&port->dev,
1632 _read_latency_timer(port) >= 0) {
1633 dev_dbg(&port->dev,
1661 static void ftdi_set_max_packet_size(struct usb_serial_port *port)
1663 struct ftdi_private *priv = usb_get_serial_port_data(port);
1664 struct usb_interface *interface = port->serial->interface;
1683 dev_warn(&port->dev, "Overriding wMaxPacketSize on endpoint %d\n",
1702 struct usb_serial_port *port = to_usb_serial_port(dev);
1703 struct ftdi_private *priv = usb_get_serial_port_data(port);
1715 struct usb_serial_port *port = to_usb_serial_port(dev);
1716 struct ftdi_private *priv = usb_get_serial_port_data(port);
1724 rv = write_latency_timer(port);
1736 struct usb_serial_port *port = to_usb_serial_port(dev);
1737 struct ftdi_private *priv = usb_get_serial_port_data(port);
1738 struct usb_device *udev = port->serial->dev;
1745 dev_dbg(&port->dev, "%s: setting event char = 0x%03x\n", __func__, v);
1754 dev_dbg(&port->dev, "Unable to write event character: %i\n", rv);
1762 static int create_sysfs_attrs(struct usb_serial_port *port)
1764 struct ftdi_private *priv = usb_get_serial_port_data(port);
1770 dev_dbg(&port->dev, "sysfs attributes for %s\n", ftdi_chip_name[priv->chip_type]);
1771 retval = device_create_file(&port->dev, &dev_attr_event_char);
1780 retval = device_create_file(&port->dev,
1787 static void remove_sysfs_attrs(struct usb_serial_port *port)
1789 struct ftdi_private *priv = usb_get_serial_port_data(port);
1793 device_remove_file(&port->dev, &dev_attr_event_char);
1801 device_remove_file(&port->dev, &dev_attr_latency_timer);
1809 static int ftdi_set_bitmode(struct usb_serial_port *port, u8 mode)
1811 struct ftdi_private *priv = usb_get_serial_port_data(port);
1812 struct usb_serial *serial = port->serial;
1837 static int ftdi_set_cbus_pins(struct usb_serial_port *port)
1839 return ftdi_set_bitmode(port, FTDI_SIO_BITMODE_CBUS);
1842 static int ftdi_exit_cbus_mode(struct usb_serial_port *port)
1844 struct ftdi_private *priv = usb_get_serial_port_data(port);
1848 return ftdi_set_bitmode(port, FTDI_SIO_BITMODE_RESET);
1853 struct usb_serial_port *port = gpiochip_get_data(gc);
1854 struct ftdi_private *priv = usb_get_serial_port_data(port);
1865 result = ftdi_set_cbus_pins(port);
1878 static int ftdi_read_cbus_pins(struct usb_serial_port *port)
1880 struct ftdi_private *priv = usb_get_serial_port_data(port);
1881 struct usb_serial *serial = port->serial;
1915 struct usb_serial_port *port = gpiochip_get_data(gc);
1918 result = ftdi_read_cbus_pins(port);
1927 struct usb_serial_port *port = gpiochip_get_data(gc);
1928 struct ftdi_private *priv = usb_get_serial_port_data(port);
1937 ftdi_set_cbus_pins(port);
1945 struct usb_serial_port *port = gpiochip_get_data(gc);
1948 result = ftdi_read_cbus_pins(port);
1960 struct usb_serial_port *port = gpiochip_get_data(gc);
1961 struct ftdi_private *priv = usb_get_serial_port_data(port);
1967 ftdi_set_cbus_pins(port);
1974 struct usb_serial_port *port = gpiochip_get_data(gc);
1975 struct ftdi_private *priv = usb_get_serial_port_data(port);
1982 struct usb_serial_port *port = gpiochip_get_data(gc);
1983 struct ftdi_private *priv = usb_get_serial_port_data(port);
1989 result = ftdi_set_cbus_pins(port);
1999 struct usb_serial_port *port = gpiochip_get_data(gc);
2000 struct ftdi_private *priv = usb_get_serial_port_data(port);
2011 result = ftdi_set_cbus_pins(port);
2051 static int ftdi_gpio_init_ft232h(struct usb_serial_port *port)
2053 struct ftdi_private *priv = usb_get_serial_port_data(port);
2063 ret = ftdi_read_eeprom(port->serial, buf, 0x1a, 4);
2091 static int ftdi_gpio_init_ft232r(struct usb_serial_port *port)
2093 struct ftdi_private *priv = usb_get_serial_port_data(port);
2103 ret = ftdi_read_eeprom(port->serial, buf, 0x14, 2);
2108 dev_dbg(&port->dev, "cbus_config = 0x%04x\n", cbus_config);
2124 static int ftdi_gpio_init_ftx(struct usb_serial_port *port)
2126 struct ftdi_private *priv = usb_get_serial_port_data(port);
2127 struct usb_serial *serial = port->serial;
2159 static int ftdi_gpio_init(struct usb_serial_port *port)
2161 struct ftdi_private *priv = usb_get_serial_port_data(port);
2162 struct usb_serial *serial = port->serial;
2167 result = ftdi_gpio_init_ft232h(port);
2170 result = ftdi_gpio_init_ft232r(port);
2173 result = ftdi_gpio_init_ftx(port);
2198 result = gpiochip_add_data(&priv->gc, port);
2205 static void ftdi_gpio_remove(struct usb_serial_port *port)
2207 struct ftdi_private *priv = usb_get_serial_port_data(port);
2216 ftdi_exit_cbus_mode(port);
2223 static int ftdi_gpio_init(struct usb_serial_port *port)
2228 static void ftdi_gpio_remove(struct usb_serial_port *port) { }
2256 static int ftdi_sio_port_probe(struct usb_serial_port *port)
2259 const struct ftdi_sio_quirk *quirk = usb_get_serial_data(port->serial);
2271 usb_set_serial_port_data(port, priv);
2273 ftdi_determine_type(port);
2274 ftdi_set_max_packet_size(port);
2275 if (read_latency_timer(port) < 0)
2277 write_latency_timer(port);
2278 create_sysfs_attrs(port);
2280 result = ftdi_gpio_init(port);
2282 dev_err(&port->serial->interface->dev,
2345 * First port on JTAG adaptors such as Olimex arm-usb-ocd or the FIC/OpenMoko
2382 * The next two ports are enabled as UARTs by default, where port 2 is
2398 static int ftdi_sio_port_remove(struct usb_serial_port *port)
2400 struct ftdi_private *priv = usb_get_serial_port_data(port);
2402 ftdi_gpio_remove(port);
2404 remove_sysfs_attrs(port);
2411 static int ftdi_open(struct tty_struct *tty, struct usb_serial_port *port)
2413 struct usb_device *dev = port->serial->dev;
2414 struct ftdi_private *priv = usb_get_serial_port_data(port);
2424 port->tty->termios - this would lose speed settings, etc.
2429 ftdi_set_termios(tty, port, NULL);
2431 return usb_serial_generic_open(tty, port);
2434 static void ftdi_dtr_rts(struct usb_serial_port *port, int on)
2436 struct ftdi_private *priv = usb_get_serial_port_data(port);
2440 if (usb_control_msg(port->serial->dev,
2441 usb_sndctrlpipe(port->serial->dev, 0),
2446 dev_err(&port->dev, "error from flowcontrol urb\n");
2451 set_mctrl(port, TIOCM_DTR | TIOCM_RTS);
2453 clear_mctrl(port, TIOCM_DTR | TIOCM_RTS);
2463 static int ftdi_prepare_write_buffer(struct usb_serial_port *port,
2470 priv = usb_get_serial_port_data(port);
2477 spin_lock_irqsave(&port->lock, flags);
2480 c = kfifo_out(&port->write_fifo, &buffer[i + 1], len);
2483 port->icount.tx += c;
2487 spin_unlock_irqrestore(&port->lock, flags);
2489 count = kfifo_out_locked(&port->write_fifo, dest, size,
2490 &port->lock);
2491 port->icount.tx += count;
2499 static int ftdi_process_packet(struct usb_serial_port *port,
2508 dev_dbg(&port->dev, "malformed packet\n");
2520 port->icount.cts++;
2522 port->icount.dsr++;
2524 port->icount.rng++;
2528 port->icount.dcd++;
2529 tty = tty_port_tty_get(&port->port);
2531 usb_serial_handle_dcd_change(port, tty,
2536 wake_up_interruptible(&port->port.delta_msr_wait);
2562 port->icount.brk++;
2567 port->icount.parity++;
2570 port->icount.frame++;
2574 port->icount.overrun++;
2575 tty_insert_flip_char(&port->port, 0, TTY_OVERRUN);
2579 port->icount.rx += len - 2;
2581 if (brkint || port->sysrq) {
2584 if (usb_serial_handle_break(port))
2588 if (usb_serial_handle_sysrq_char(port, buf[i]))
2590 tty_insert_flip_char(&port->port, buf[i], flag);
2593 tty_insert_flip_string_fixed_flag(&port->port, buf + 2, flag,
2602 struct usb_serial_port *port = urb->context;
2603 struct ftdi_private *priv = usb_get_serial_port_data(port);
2611 count += ftdi_process_packet(port, priv, &data[i], len);
2615 tty_flip_buffer_push(&port->port);
2620 struct usb_serial_port *port = tty->driver_data;
2621 struct ftdi_private *priv = usb_get_serial_port_data(port);
2633 if (usb_control_msg(port->serial->dev,
2634 usb_sndctrlpipe(port->serial->dev, 0),
2639 dev_err(&port->dev, "%s FAILED to enable/disable break state (state was %d)\n",
2643 dev_dbg(&port->dev, "%s break state is %d - urb is %d\n", __func__,
2648 static bool ftdi_tx_empty(struct usb_serial_port *port)
2653 ret = ftdi_get_modem_status(port, buf);
2667 struct usb_serial_port *port, struct ktermios *old_termios)
2669 struct usb_device *dev = port->serial->dev;
2670 struct device *ddev = &port->dev;
2671 struct ftdi_private *priv = usb_get_serial_port_data(port);
2792 clear_mctrl(port, TIOCM_DTR | TIOCM_RTS);
2796 if (change_speed(tty, port))
2801 set_mctrl(port, TIOCM_DTR | TIOCM_RTS);
2809 dev_dbg(&port->dev, "enabling rts/cts flow control\n");
2812 dev_dbg(&port->dev, "enabling xon/xoff flow control\n");
2816 dev_dbg(&port->dev, "disabling flow control\n");
2827 dev_err(&port->dev, "failed to set flow control: %d\n", ret);
2836 static int ftdi_get_modem_status(struct usb_serial_port *port,
2839 struct ftdi_private *priv = usb_get_serial_port_data(port);
2870 ret = usb_control_msg(port->serial->dev,
2871 usb_rcvctrlpipe(port->serial->dev, 0),
2879 dev_err(&port->dev, "failed to get modem status: %d\n", ret);
2892 dev_dbg(&port->dev, "%s - 0x%02x%02x\n", __func__, status[0],
2902 struct usb_serial_port *port = tty->driver_data;
2903 struct ftdi_private *priv = usb_get_serial_port_data(port);
2907 ret = ftdi_get_modem_status(port, buf);
2923 struct usb_serial_port *port = tty->driver_data;
2925 return update_mctrl(port, set, clear);
2931 struct usb_serial_port *port = tty->driver_data;
2936 return get_lsr_info(port, argp);