Lines Matching +full:port +full:- +full:config
1 // SPDX-License-Identifier: GPL-2.0+
8 * Copyright (C) 2000-2002 Inside Out Networks
9 * Copyright (C) 2001-2002 Greg Kroah-Hartman
52 /* Multi-Tech vendor and product ids */
178 /* Config struct */
190 /* Get port status */
305 static int ti_port_probe(struct usb_serial_port *port);
306 static void ti_port_remove(struct usb_serial_port *port);
307 static int ti_open(struct tty_struct *tty, struct usb_serial_port *port);
308 static void ti_close(struct usb_serial_port *port);
309 static int ti_write(struct tty_struct *tty, struct usb_serial_port *port,
313 static bool ti_tx_empty(struct usb_serial_port *port);
317 struct usb_serial_port *port,
327 static void ti_recv(struct usb_serial_port *port, unsigned char *data,
342 static int ti_port_cmd_out(struct usb_serial_port *port, u8 command,
344 static int ti_port_cmd_in(struct usb_serial_port *port, u8 command,
347 static int ti_write_byte(struct usb_serial_port *port, struct ti_device *tdev,
422 .description = "TI USB 3410 1 port adapter",
454 .description = "TI USB 5052 2 port adapter",
497 MODULE_FIRMWARE("moxa/moxa-1110.fw");
498 MODULE_FIRMWARE("moxa/moxa-1130.fw");
499 MODULE_FIRMWARE("moxa/moxa-1131.fw");
500 MODULE_FIRMWARE("moxa/moxa-1150.fw");
501 MODULE_FIRMWARE("moxa/moxa-1151.fw");
510 struct usb_device *dev = serial->dev; in ti_startup()
516 dev_dbg(&dev->dev, in ti_startup()
517 "%s - product 0x%4X, num configurations %d, configuration value %d\n", in ti_startup()
518 __func__, le16_to_cpu(dev->descriptor.idProduct), in ti_startup()
519 dev->descriptor.bNumConfigurations, in ti_startup()
520 dev->actconfig->desc.bConfigurationValue); in ti_startup()
524 return -ENOMEM; in ti_startup()
526 mutex_init(&tdev->td_open_close_lock); in ti_startup()
527 tdev->td_serial = serial; in ti_startup()
531 if (serial->type == &ti_1port_device) in ti_startup()
532 tdev->td_is_3410 = 1; in ti_startup()
533 dev_dbg(&dev->dev, "%s - device type is %s\n", __func__, in ti_startup()
534 tdev->td_is_3410 ? "3410" : "5052"); in ti_startup()
536 vid = le16_to_cpu(dev->descriptor.idVendor); in ti_startup()
537 pid = le16_to_cpu(dev->descriptor.idProduct); in ti_startup()
542 tdev->td_rs485_only = true; in ti_startup()
547 cur_altsetting = serial->interface->cur_altsetting; in ti_startup()
548 num_endpoints = cur_altsetting->desc.bNumEndpoints; in ti_startup()
551 if (dev->descriptor.bNumConfigurations == 1 && num_endpoints == 1) { in ti_startup()
558 if (tdev->td_is_3410) { in ti_startup()
563 status = -ENODEV; in ti_startup()
568 if (dev->actconfig->desc.bConfigurationValue == TI_BOOT_CONFIG) { in ti_startup()
570 status = status ? status : -ENODEV; in ti_startup()
574 if (serial->num_bulk_in < serial->num_ports || in ti_startup()
575 serial->num_bulk_out < serial->num_ports) { in ti_startup()
576 dev_err(&serial->interface->dev, "missing endpoints\n"); in ti_startup()
577 status = -ENODEV; in ti_startup()
597 static int ti_port_probe(struct usb_serial_port *port) in ti_port_probe() argument
603 return -ENOMEM; in ti_port_probe()
605 spin_lock_init(&tport->tp_lock); in ti_port_probe()
606 if (port == port->serial->port[0]) in ti_port_probe()
607 tport->tp_uart_base_addr = TI_UART1_BASE_ADDR; in ti_port_probe()
609 tport->tp_uart_base_addr = TI_UART2_BASE_ADDR; in ti_port_probe()
610 tport->tp_port = port; in ti_port_probe()
611 tport->tp_tdev = usb_get_serial_data(port->serial); in ti_port_probe()
613 if (tport->tp_tdev->td_rs485_only) in ti_port_probe()
614 tport->tp_uart_mode = TI_UART_485_RECEIVER_DISABLED; in ti_port_probe()
616 tport->tp_uart_mode = TI_UART_232; in ti_port_probe()
618 usb_set_serial_port_data(port, tport); in ti_port_probe()
622 * has emptied so add a one-character drain delay. in ti_port_probe()
624 if (!tport->tp_tdev->td_is_3410) in ti_port_probe()
625 port->port.drain_delay = 1; in ti_port_probe()
630 static void ti_port_remove(struct usb_serial_port *port) in ti_port_remove() argument
634 tport = usb_get_serial_port_data(port); in ti_port_remove()
638 static int ti_open(struct tty_struct *tty, struct usb_serial_port *port) in ti_open() argument
640 struct ti_port *tport = usb_get_serial_port_data(port); in ti_open()
651 dev = port->serial->dev; in ti_open()
652 tdev = tport->tp_tdev; in ti_open()
654 /* only one open on any port on a device at a time */ in ti_open()
655 if (mutex_lock_interruptible(&tdev->td_open_close_lock)) in ti_open()
656 return -ERESTARTSYS; in ti_open()
658 tport->tp_msr = 0; in ti_open()
659 tport->tp_shadow_mcr |= (TI_MCR_RTS | TI_MCR_DTR); in ti_open()
661 /* start interrupt urb the first time a port is opened on this device */ in ti_open()
662 if (tdev->td_open_port_count == 0) { in ti_open()
663 dev_dbg(&port->dev, "%s - start interrupt in urb\n", __func__); in ti_open()
664 urb = tdev->td_serial->port[0]->interrupt_in_urb; in ti_open()
666 dev_err(&port->dev, "%s - no interrupt urb\n", __func__); in ti_open()
667 status = -EINVAL; in ti_open()
670 urb->context = tdev; in ti_open()
673 dev_err(&port->dev, "%s - submit interrupt urb failed, %d\n", __func__, status); in ti_open()
679 ti_set_termios(tty, port, &tty->termios); in ti_open()
681 status = ti_port_cmd_out(port, TI_OPEN_PORT, open_settings, NULL, 0); in ti_open()
683 dev_err(&port->dev, "%s - cannot send open command, %d\n", in ti_open()
688 status = ti_port_cmd_out(port, TI_START_PORT, 0, NULL, 0); in ti_open()
690 dev_err(&port->dev, "%s - cannot send start command, %d\n", in ti_open()
695 status = ti_port_cmd_out(port, TI_PURGE_PORT, TI_PURGE_INPUT, NULL, 0); in ti_open()
697 dev_err(&port->dev, "%s - cannot clear input buffers, %d\n", in ti_open()
701 status = ti_port_cmd_out(port, TI_PURGE_PORT, TI_PURGE_OUTPUT, NULL, 0); in ti_open()
703 dev_err(&port->dev, "%s - cannot clear output buffers, %d\n", in ti_open()
710 usb_clear_halt(dev, port->write_urb->pipe); in ti_open()
711 usb_clear_halt(dev, port->read_urb->pipe); in ti_open()
714 ti_set_termios(tty, port, &tty->termios); in ti_open()
716 status = ti_port_cmd_out(port, TI_OPEN_PORT, open_settings, NULL, 0); in ti_open()
718 dev_err(&port->dev, "%s - cannot send open command (2), %d\n", in ti_open()
723 status = ti_port_cmd_out(port, TI_START_PORT, 0, NULL, 0); in ti_open()
725 dev_err(&port->dev, "%s - cannot send start command (2), %d\n", in ti_open()
731 urb = port->read_urb; in ti_open()
732 tport->tp_read_urb_state = TI_READ_URB_RUNNING; in ti_open()
733 urb->context = tport; in ti_open()
736 dev_err(&port->dev, "%s - submit read urb failed, %d\n", in ti_open()
741 tport->tp_is_open = 1; in ti_open()
742 ++tdev->td_open_port_count; in ti_open()
747 if (tdev->td_open_port_count == 0) in ti_open()
748 usb_kill_urb(port->serial->port[0]->interrupt_in_urb); in ti_open()
750 mutex_unlock(&tdev->td_open_close_lock); in ti_open()
755 static void ti_close(struct usb_serial_port *port) in ti_close() argument
762 tdev = usb_get_serial_data(port->serial); in ti_close()
763 tport = usb_get_serial_port_data(port); in ti_close()
765 tport->tp_is_open = 0; in ti_close()
767 usb_kill_urb(port->read_urb); in ti_close()
768 usb_kill_urb(port->write_urb); in ti_close()
769 tport->tp_write_urb_in_use = 0; in ti_close()
770 spin_lock_irqsave(&tport->tp_lock, flags); in ti_close()
771 kfifo_reset_out(&port->write_fifo); in ti_close()
772 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_close()
774 status = ti_port_cmd_out(port, TI_CLOSE_PORT, 0, NULL, 0); in ti_close()
776 dev_err(&port->dev, in ti_close()
777 "%s - cannot send close port command, %d\n" in ti_close()
780 mutex_lock(&tdev->td_open_close_lock); in ti_close()
781 --tdev->td_open_port_count; in ti_close()
782 if (tdev->td_open_port_count == 0) { in ti_close()
783 /* last port is closed, shut down interrupt urb */ in ti_close()
784 usb_kill_urb(port->serial->port[0]->interrupt_in_urb); in ti_close()
786 mutex_unlock(&tdev->td_open_close_lock); in ti_close()
790 static int ti_write(struct tty_struct *tty, struct usb_serial_port *port, in ti_write() argument
793 struct ti_port *tport = usb_get_serial_port_data(port); in ti_write()
799 if (!tport->tp_is_open) in ti_write()
800 return -ENODEV; in ti_write()
802 count = kfifo_in_locked(&port->write_fifo, data, count, in ti_write()
803 &tport->tp_lock); in ti_write()
812 struct usb_serial_port *port = tty->driver_data; in ti_write_room() local
813 struct ti_port *tport = usb_get_serial_port_data(port); in ti_write_room()
817 spin_lock_irqsave(&tport->tp_lock, flags); in ti_write_room()
818 room = kfifo_avail(&port->write_fifo); in ti_write_room()
819 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_write_room()
821 dev_dbg(&port->dev, "%s - returns %u\n", __func__, room); in ti_write_room()
828 struct usb_serial_port *port = tty->driver_data; in ti_chars_in_buffer() local
829 struct ti_port *tport = usb_get_serial_port_data(port); in ti_chars_in_buffer()
833 spin_lock_irqsave(&tport->tp_lock, flags); in ti_chars_in_buffer()
834 chars = kfifo_len(&port->write_fifo); in ti_chars_in_buffer()
835 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_chars_in_buffer()
837 dev_dbg(&port->dev, "%s - returns %u\n", __func__, chars); in ti_chars_in_buffer()
841 static bool ti_tx_empty(struct usb_serial_port *port) in ti_tx_empty() argument
843 struct ti_port *tport = usb_get_serial_port_data(port); in ti_tx_empty()
851 if (tport->tp_tdev->td_is_3410) in ti_tx_empty()
865 struct usb_serial_port *port = tty->driver_data; in ti_throttle() local
866 struct ti_port *tport = usb_get_serial_port_data(port); in ti_throttle()
876 struct usb_serial_port *port = tty->driver_data; in ti_unthrottle() local
877 struct ti_port *tport = usb_get_serial_port_data(port); in ti_unthrottle()
883 dev_err(&port->dev, "%s - cannot restart read, %d\n", in ti_unthrottle()
889 struct usb_serial_port *port, in ti_set_termios() argument
892 struct ti_port *tport = usb_get_serial_port_data(port); in ti_set_termios()
893 struct ti_uart_config *config; in ti_set_termios() local
900 config = kmalloc(sizeof(*config), GFP_KERNEL); in ti_set_termios()
901 if (!config) in ti_set_termios()
907 config->bUartMode = tport->tp_uart_mode; in ti_set_termios()
911 config->bDataBits = TI_UART_5_DATA_BITS; in ti_set_termios()
914 config->bDataBits = TI_UART_6_DATA_BITS; in ti_set_termios()
917 config->bDataBits = TI_UART_7_DATA_BITS; in ti_set_termios()
921 config->bDataBits = TI_UART_8_DATA_BITS; in ti_set_termios()
926 tty->termios.c_cflag &= ~CMSPAR; in ti_set_termios()
931 config->bParity = TI_UART_ODD_PARITY; in ti_set_termios()
934 config->bParity = TI_UART_EVEN_PARITY; in ti_set_termios()
938 config->bParity = TI_UART_NO_PARITY; in ti_set_termios()
942 config->bStopBits = TI_UART_2_STOP_BITS; in ti_set_termios()
944 config->bStopBits = TI_UART_1_STOP_BITS; in ti_set_termios()
956 config->cXon = START_CHAR(tty); in ti_set_termios()
957 config->cXoff = STOP_CHAR(tty); in ti_set_termios()
971 if (tport->tp_tdev->td_is_3410) in ti_set_termios()
980 dev_dbg(&port->dev, in ti_set_termios()
981 …"%s - BaudRate=%d, wBaudRate=%d, wFlags=0x%04X, bDataBits=%d, bParity=%d, bStopBits=%d, cXon=%d, c… in ti_set_termios()
983 config->bDataBits, config->bParity, config->bStopBits, in ti_set_termios()
984 config->cXon, config->cXoff, config->bUartMode); in ti_set_termios()
986 config->wBaudRate = cpu_to_be16(wbaudrate); in ti_set_termios()
987 config->wFlags = cpu_to_be16(wflags); in ti_set_termios()
989 status = ti_port_cmd_out(port, TI_SET_CONFIG, 0, config, in ti_set_termios()
990 sizeof(*config)); in ti_set_termios()
992 dev_err(&port->dev, "%s - cannot set config on port %d, %d\n", in ti_set_termios()
993 __func__, port->port_number, status); in ti_set_termios()
996 mcr = tport->tp_shadow_mcr; in ti_set_termios()
1002 dev_err(&port->dev, "%s - cannot set modem control on port %d, %d\n", in ti_set_termios()
1003 __func__, port->port_number, status); in ti_set_termios()
1005 kfree(config); in ti_set_termios()
1011 struct usb_serial_port *port = tty->driver_data; in ti_tiocmget() local
1012 struct ti_port *tport = usb_get_serial_port_data(port); in ti_tiocmget()
1018 spin_lock_irqsave(&tport->tp_lock, flags); in ti_tiocmget()
1019 msr = tport->tp_msr; in ti_tiocmget()
1020 mcr = tport->tp_shadow_mcr; in ti_tiocmget()
1021 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_tiocmget()
1031 dev_dbg(&port->dev, "%s - 0x%04X\n", __func__, result); in ti_tiocmget()
1040 struct usb_serial_port *port = tty->driver_data; in ti_tiocmset() local
1041 struct ti_port *tport = usb_get_serial_port_data(port); in ti_tiocmset()
1045 spin_lock_irqsave(&tport->tp_lock, flags); in ti_tiocmset()
1046 mcr = tport->tp_shadow_mcr; in ti_tiocmset()
1061 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_tiocmset()
1069 struct usb_serial_port *port = tty->driver_data; in ti_break() local
1070 struct ti_port *tport = usb_get_serial_port_data(port); in ti_break()
1073 dev_dbg(&port->dev, "%s - state = %d\n", __func__, break_state); in ti_break()
1075 status = ti_write_byte(port, tport->tp_tdev, in ti_break()
1076 tport->tp_uart_base_addr + TI_UART_OFFSET_LCR, in ti_break()
1077 TI_LCR_BREAK, break_state == -1 ? TI_LCR_BREAK : 0); in ti_break()
1080 dev_dbg(&port->dev, "%s - error setting break, %d\n", __func__, status); in ti_break()
1099 struct ti_device *tdev = urb->context; in ti_interrupt_callback()
1100 struct usb_serial_port *port; in ti_interrupt_callback() local
1101 struct usb_serial *serial = tdev->td_serial; in ti_interrupt_callback()
1103 struct device *dev = &urb->dev->dev; in ti_interrupt_callback()
1104 unsigned char *data = urb->transfer_buffer; in ti_interrupt_callback()
1105 int length = urb->actual_length; in ti_interrupt_callback()
1108 int status = urb->status; in ti_interrupt_callback()
1115 case -ECONNRESET: in ti_interrupt_callback()
1116 case -ENOENT: in ti_interrupt_callback()
1117 case -ESHUTDOWN: in ti_interrupt_callback()
1118 dev_dbg(dev, "%s - urb shutting down, %d\n", __func__, status); in ti_interrupt_callback()
1121 dev_err(dev, "%s - nonzero urb status, %d\n", __func__, status); in ti_interrupt_callback()
1126 dev_dbg(dev, "%s - bad packet size, %d\n", __func__, length); in ti_interrupt_callback()
1131 dev_err(dev, "%s - hardware error, %d\n", __func__, data[1]); in ti_interrupt_callback()
1138 dev_dbg(dev, "%s - port_number %d, function %d, data 0x%02X\n", in ti_interrupt_callback()
1141 if (port_number >= serial->num_ports) { in ti_interrupt_callback()
1142 dev_err(dev, "%s - bad port number, %d\n", in ti_interrupt_callback()
1147 port = serial->port[port_number]; in ti_interrupt_callback()
1149 tport = usb_get_serial_port_data(port); in ti_interrupt_callback()
1155 dev_err(dev, "%s - DATA ERROR, port %d, data 0x%02X\n", in ti_interrupt_callback()
1161 dev_dbg(dev, "%s - port %d, msr 0x%02X\n", __func__, port_number, msr); in ti_interrupt_callback()
1166 dev_err(dev, "%s - unknown interrupt code, 0x%02X\n", in ti_interrupt_callback()
1174 dev_err(dev, "%s - resubmit interrupt urb failed, %d\n", in ti_interrupt_callback()
1181 struct ti_port *tport = urb->context; in ti_bulk_in_callback()
1182 struct usb_serial_port *port = tport->tp_port; in ti_bulk_in_callback() local
1183 struct device *dev = &urb->dev->dev; in ti_bulk_in_callback()
1184 int status = urb->status; in ti_bulk_in_callback()
1191 case -ECONNRESET: in ti_bulk_in_callback()
1192 case -ENOENT: in ti_bulk_in_callback()
1193 case -ESHUTDOWN: in ti_bulk_in_callback()
1194 dev_dbg(dev, "%s - urb shutting down, %d\n", __func__, status); in ti_bulk_in_callback()
1197 dev_err(dev, "%s - nonzero urb status, %d\n", in ti_bulk_in_callback()
1201 if (status == -EPIPE) in ti_bulk_in_callback()
1205 dev_err(dev, "%s - stopping read!\n", __func__); in ti_bulk_in_callback()
1209 if (urb->actual_length) { in ti_bulk_in_callback()
1210 usb_serial_debug_data(dev, __func__, urb->actual_length, in ti_bulk_in_callback()
1211 urb->transfer_buffer); in ti_bulk_in_callback()
1213 if (!tport->tp_is_open) in ti_bulk_in_callback()
1214 dev_dbg(dev, "%s - port closed, dropping data\n", in ti_bulk_in_callback()
1217 ti_recv(port, urb->transfer_buffer, urb->actual_length); in ti_bulk_in_callback()
1218 spin_lock_irqsave(&tport->tp_lock, flags); in ti_bulk_in_callback()
1219 port->icount.rx += urb->actual_length; in ti_bulk_in_callback()
1220 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_bulk_in_callback()
1225 spin_lock_irqsave(&tport->tp_lock, flags); in ti_bulk_in_callback()
1226 if (tport->tp_read_urb_state == TI_READ_URB_RUNNING) in ti_bulk_in_callback()
1228 else if (tport->tp_read_urb_state == TI_READ_URB_STOPPING) in ti_bulk_in_callback()
1229 tport->tp_read_urb_state = TI_READ_URB_STOPPED; in ti_bulk_in_callback()
1231 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_bulk_in_callback()
1233 dev_err(dev, "%s - resubmit read urb failed, %d\n", in ti_bulk_in_callback()
1240 struct ti_port *tport = urb->context; in ti_bulk_out_callback()
1241 struct usb_serial_port *port = tport->tp_port; in ti_bulk_out_callback() local
1242 int status = urb->status; in ti_bulk_out_callback()
1244 tport->tp_write_urb_in_use = 0; in ti_bulk_out_callback()
1249 case -ECONNRESET: in ti_bulk_out_callback()
1250 case -ENOENT: in ti_bulk_out_callback()
1251 case -ESHUTDOWN: in ti_bulk_out_callback()
1252 dev_dbg(&port->dev, "%s - urb shutting down, %d\n", __func__, status); in ti_bulk_out_callback()
1255 dev_err_console(port, "%s - nonzero urb status, %d\n", in ti_bulk_out_callback()
1264 static void ti_recv(struct usb_serial_port *port, unsigned char *data, in ti_recv() argument
1270 cnt = tty_insert_flip_string(&port->port, data, length); in ti_recv()
1272 dev_err(&port->dev, "%s - dropping data, %d bytes lost\n", in ti_recv()
1273 __func__, length - cnt); in ti_recv()
1277 tty_flip_buffer_push(&port->port); in ti_recv()
1279 length -= cnt; in ti_recv()
1287 struct usb_serial_port *port = tport->tp_port; in ti_send() local
1290 spin_lock_irqsave(&tport->tp_lock, flags); in ti_send()
1292 if (tport->tp_write_urb_in_use) in ti_send()
1295 count = kfifo_out(&port->write_fifo, in ti_send()
1296 port->write_urb->transfer_buffer, in ti_send()
1297 port->bulk_out_size); in ti_send()
1302 tport->tp_write_urb_in_use = 1; in ti_send()
1304 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_send()
1306 usb_serial_debug_data(&port->dev, __func__, count, in ti_send()
1307 port->write_urb->transfer_buffer); in ti_send()
1309 usb_fill_bulk_urb(port->write_urb, port->serial->dev, in ti_send()
1310 usb_sndbulkpipe(port->serial->dev, in ti_send()
1311 port->bulk_out_endpointAddress), in ti_send()
1312 port->write_urb->transfer_buffer, count, in ti_send()
1315 result = usb_submit_urb(port->write_urb, GFP_ATOMIC); in ti_send()
1317 dev_err_console(port, "%s - submit write urb failed, %d\n", in ti_send()
1319 tport->tp_write_urb_in_use = 0; in ti_send()
1322 spin_lock_irqsave(&tport->tp_lock, flags); in ti_send()
1323 port->icount.tx += count; in ti_send()
1324 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_send()
1328 tty_port_tty_wakeup(&port->port); in ti_send()
1332 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_send()
1342 status = ti_write_byte(tport->tp_port, tport->tp_tdev, in ti_set_mcr()
1343 tport->tp_uart_base_addr + TI_UART_OFFSET_MCR, in ti_set_mcr()
1346 spin_lock_irqsave(&tport->tp_lock, flags); in ti_set_mcr()
1348 tport->tp_shadow_mcr = mcr; in ti_set_mcr()
1349 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_set_mcr()
1358 struct usb_serial_port *port = tport->tp_port; in ti_get_lsr() local
1364 return -ENOMEM; in ti_get_lsr()
1366 status = ti_port_cmd_in(port, TI_GET_PORT_STATUS, 0, data, size); in ti_get_lsr()
1368 dev_err(&port->dev, in ti_get_lsr()
1369 "%s - get port status command failed, %d\n", in ti_get_lsr()
1374 dev_dbg(&port->dev, "%s - lsr 0x%02X\n", __func__, data->bLSR); in ti_get_lsr()
1376 *lsr = data->bLSR; in ti_get_lsr()
1386 struct usb_serial_port *port = tty->driver_data; in ti_get_serial_info() local
1387 struct ti_port *tport = usb_get_serial_port_data(port); in ti_get_serial_info()
1389 ss->baud_base = tport->tp_tdev->td_is_3410 ? 921600 : 460800; in ti_get_serial_info()
1399 dev_dbg(&tport->tp_port->dev, "%s - msr 0x%02X\n", __func__, msr); in ti_handle_new_msr()
1402 spin_lock_irqsave(&tport->tp_lock, flags); in ti_handle_new_msr()
1403 icount = &tport->tp_port->icount; in ti_handle_new_msr()
1405 icount->cts++; in ti_handle_new_msr()
1407 icount->dsr++; in ti_handle_new_msr()
1409 icount->dcd++; in ti_handle_new_msr()
1411 icount->rng++; in ti_handle_new_msr()
1412 wake_up_interruptible(&tport->tp_port->port.delta_msr_wait); in ti_handle_new_msr()
1413 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_handle_new_msr()
1416 tport->tp_msr = msr & TI_MSR_MASK; in ti_handle_new_msr()
1419 tty = tty_port_tty_get(&tport->tp_port->port); in ti_handle_new_msr()
1432 spin_lock_irqsave(&tport->tp_lock, flags); in ti_stop_read()
1434 if (tport->tp_read_urb_state == TI_READ_URB_RUNNING) in ti_stop_read()
1435 tport->tp_read_urb_state = TI_READ_URB_STOPPING; in ti_stop_read()
1437 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_stop_read()
1447 spin_lock_irqsave(&tport->tp_lock, flags); in ti_restart_read()
1449 if (tport->tp_read_urb_state == TI_READ_URB_STOPPED) { in ti_restart_read()
1450 tport->tp_read_urb_state = TI_READ_URB_RUNNING; in ti_restart_read()
1451 urb = tport->tp_port->read_urb; in ti_restart_read()
1452 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_restart_read()
1453 urb->context = tport; in ti_restart_read()
1456 tport->tp_read_urb_state = TI_READ_URB_RUNNING; in ti_restart_read()
1457 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_restart_read()
1488 status = -ECOMM; in ti_command_in_sync()
1493 static int ti_port_cmd_out(struct usb_serial_port *port, u8 command, in ti_port_cmd_out() argument
1496 return ti_command_out_sync(port->serial->dev, command, in ti_port_cmd_out()
1497 TI_UART1_PORT + port->port_number, in ti_port_cmd_out()
1501 static int ti_port_cmd_in(struct usb_serial_port *port, u8 command, in ti_port_cmd_in() argument
1504 return ti_command_in_sync(port->serial->dev, command, in ti_port_cmd_in()
1505 TI_UART1_PORT + port->port_number, in ti_port_cmd_in()
1509 static int ti_write_byte(struct usb_serial_port *port, in ti_write_byte() argument
1517 dev_dbg(&port->dev, "%s - addr 0x%08lX, mask 0x%02X, byte 0x%02X\n", __func__, in ti_write_byte()
1523 return -ENOMEM; in ti_write_byte()
1525 data->bAddrType = TI_RW_DATA_ADDR_XDATA; in ti_write_byte()
1526 data->bDataType = TI_RW_DATA_BYTE; in ti_write_byte()
1527 data->bDataCounter = 1; in ti_write_byte()
1528 data->wBaseAddrHi = cpu_to_be16(addr>>16); in ti_write_byte()
1529 data->wBaseAddrLo = cpu_to_be16(addr); in ti_write_byte()
1530 data->bData[0] = mask; in ti_write_byte()
1531 data->bData[1] = byte; in ti_write_byte()
1533 status = ti_command_out_sync(port->serial->dev, TI_WRITE_DATA, in ti_write_byte()
1536 dev_err(&port->dev, "%s - failed, %d\n", __func__, status); in ti_write_byte()
1557 header->wLength = cpu_to_le16(size - sizeof(*header)); in ti_do_download()
1558 header->bCheckSum = cs; in ti_do_download()
1560 dev_dbg(&dev->dev, "%s - downloading firmware\n", __func__); in ti_do_download()
1562 len = min(size - pos, TI_DOWNLOAD_MAX_PACKET_SIZE); in ti_do_download()
1576 struct usb_device *dev = tdev->td_serial->dev; in ti_download_firmware()
1578 tdev->td_serial->port[0]->bulk_out_endpointAddress); in ti_download_firmware()
1582 if (le16_to_cpu(dev->descriptor.idVendor) == MXU1_VENDOR_ID) { in ti_download_firmware()
1585 "moxa/moxa-%04x.fw", in ti_download_firmware()
1586 le16_to_cpu(dev->descriptor.idProduct)); in ti_download_firmware()
1588 status = request_firmware(&fw_p, buf, &dev->dev); in ti_download_firmware()
1593 sprintf(buf, "ti_usb-v%04x-p%04x.fw", in ti_download_firmware()
1594 le16_to_cpu(dev->descriptor.idVendor), in ti_download_firmware()
1595 le16_to_cpu(dev->descriptor.idProduct)); in ti_download_firmware()
1596 status = request_firmware(&fw_p, buf, &dev->dev); in ti_download_firmware()
1600 if (le16_to_cpu(dev->descriptor.idVendor) == MTS_VENDOR_ID) { in ti_download_firmware()
1601 switch (le16_to_cpu(dev->descriptor.idProduct)) { in ti_download_firmware()
1622 if (tdev->td_is_3410) in ti_download_firmware()
1627 status = request_firmware(&fw_p, buf, &dev->dev); in ti_download_firmware()
1632 dev_err(&dev->dev, "%s - firmware not found\n", __func__); in ti_download_firmware()
1633 return -ENOENT; in ti_download_firmware()
1635 if (fw_p->size > TI_FIRMWARE_BUF_SIZE) { in ti_download_firmware()
1636 dev_err(&dev->dev, "%s - firmware too large %zu\n", __func__, fw_p->size); in ti_download_firmware()
1638 return -ENOENT; in ti_download_firmware()
1644 memcpy(buffer, fw_p->data, fw_p->size); in ti_download_firmware()
1645 memset(buffer + fw_p->size, 0xff, buffer_size - fw_p->size); in ti_download_firmware()
1646 status = ti_do_download(dev, pipe, buffer, fw_p->size); in ti_download_firmware()
1649 status = -ENOMEM; in ti_download_firmware()
1653 dev_err(&dev->dev, "%s - error downloading firmware, %d\n", in ti_download_firmware()
1658 dev_dbg(&dev->dev, "%s - download successful\n", __func__); in ti_download_firmware()