Lines Matching refs:tport

116 static void ti_send(struct ti_port *tport);
117 static int ti_set_mcr(struct ti_port *tport, unsigned int mcr);
118 static int ti_get_lsr(struct ti_port *tport, u8 *lsr);
119 static int ti_get_serial_info(struct ti_port *tport,
121 static int ti_set_serial_info(struct tty_struct *tty, struct ti_port *tport,
123 static void ti_handle_new_msr(struct ti_port *tport, __u8 msr);
125 static void ti_stop_read(struct ti_port *tport, struct tty_struct *tty);
126 static int ti_restart_read(struct ti_port *tport, struct tty_struct *tty);
360 struct ti_port *tport; in ti_port_probe() local
362 tport = kzalloc(sizeof(*tport), GFP_KERNEL); in ti_port_probe()
363 if (!tport) in ti_port_probe()
366 spin_lock_init(&tport->tp_lock); in ti_port_probe()
368 tport->tp_uart_base_addr = TI_UART1_BASE_ADDR; in ti_port_probe()
370 tport->tp_uart_base_addr = TI_UART2_BASE_ADDR; in ti_port_probe()
372 tport->tp_port = port; in ti_port_probe()
373 tport->tp_tdev = usb_get_serial_data(port->serial); in ti_port_probe()
374 tport->tp_uart_mode = 0; /* default is RS232 */ in ti_port_probe()
376 usb_set_serial_port_data(port, tport); in ti_port_probe()
385 struct ti_port *tport; in ti_port_remove() local
387 tport = usb_get_serial_port_data(port); in ti_port_remove()
388 kfree(tport); in ti_port_remove()
395 struct ti_port *tport = usb_get_serial_port_data(port); in ti_open() local
405 if (tport == NULL) in ti_open()
409 tdev = tport->tp_tdev; in ti_open()
417 tport->tp_msr = 0; in ti_open()
418 tport->tp_shadow_mcr |= (TI_MCR_RTS | TI_MCR_DTR); in ti_open()
508 tport->tp_read_urb_state = TI_READ_URB_RUNNING; in ti_open()
509 urb->context = tport; in ti_open()
517 tport->tp_is_open = 1; in ti_open()
535 struct ti_port *tport; in ti_close() local
542 tport = usb_get_serial_port_data(port); in ti_close()
543 if (tdev == NULL || tport == NULL) in ti_close()
546 tport->tp_is_open = 0; in ti_close()
550 tport->tp_write_urb_in_use = 0; in ti_close()
551 spin_lock_irqsave(&tport->tp_lock, flags); in ti_close()
553 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_close()
567 --tport->tp_tdev->td_open_port_count; in ti_close()
568 if (tport->tp_tdev->td_open_port_count <= 0) { in ti_close()
571 tport->tp_tdev->td_open_port_count = 0; in ti_close()
581 struct ti_port *tport = usb_get_serial_port_data(port); in ti_write() local
588 if (tport == NULL || !tport->tp_is_open) in ti_write()
592 &tport->tp_lock); in ti_write()
593 ti_send(tport); in ti_write()
602 struct ti_port *tport = usb_get_serial_port_data(port); in ti_write_room() local
606 if (tport == NULL) in ti_write_room()
609 spin_lock_irqsave(&tport->tp_lock, flags); in ti_write_room()
611 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_write_room()
621 struct ti_port *tport = usb_get_serial_port_data(port); in ti_chars_in_buffer() local
625 if (tport == NULL) in ti_chars_in_buffer()
628 spin_lock_irqsave(&tport->tp_lock, flags); in ti_chars_in_buffer()
630 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_chars_in_buffer()
638 struct ti_port *tport = usb_get_serial_port_data(port); in ti_tx_empty() local
642 ret = ti_get_lsr(tport, &lsr); in ti_tx_empty()
652 struct ti_port *tport = usb_get_serial_port_data(port); in ti_throttle() local
654 if (tport == NULL) in ti_throttle()
658 ti_stop_read(tport, tty); in ti_throttle()
666 struct ti_port *tport = usb_get_serial_port_data(port); in ti_unthrottle() local
669 if (tport == NULL) in ti_unthrottle()
673 status = ti_restart_read(tport, tty); in ti_unthrottle()
684 struct ti_port *tport = usb_get_serial_port_data(port); in ti_ioctl() local
686 if (tport == NULL) in ti_ioctl()
692 return ti_get_serial_info(tport, in ti_ioctl()
696 return ti_set_serial_info(tty, tport, in ti_ioctl()
706 struct ti_port *tport = usb_get_serial_port_data(port); in ti_set_termios() local
721 if (tport == NULL) in ti_set_termios()
733 config->bUartMode = (__u8)(tport->tp_uart_mode); in ti_set_termios()
778 ti_restart_read(tport, tty); in ti_set_termios()
788 ti_restart_read(tport, tty); in ti_set_termios()
797 if (tport->tp_tdev->td_is_3410) in ti_set_termios()
815 status = ti_command_out_sync(tport->tp_tdev, TI_SET_CONFIG, in ti_set_termios()
823 mcr = tport->tp_shadow_mcr; in ti_set_termios()
827 status = ti_set_mcr(tport, mcr); in ti_set_termios()
840 struct ti_port *tport = usb_get_serial_port_data(port); in ti_tiocmget() local
846 if (tport == NULL) in ti_tiocmget()
849 spin_lock_irqsave(&tport->tp_lock, flags); in ti_tiocmget()
850 msr = tport->tp_msr; in ti_tiocmget()
851 mcr = tport->tp_shadow_mcr; in ti_tiocmget()
852 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_tiocmget()
872 struct ti_port *tport = usb_get_serial_port_data(port); in ti_tiocmset() local
876 if (tport == NULL) in ti_tiocmset()
879 spin_lock_irqsave(&tport->tp_lock, flags); in ti_tiocmset()
880 mcr = tport->tp_shadow_mcr; in ti_tiocmset()
895 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_tiocmset()
897 return ti_set_mcr(tport, mcr); in ti_tiocmset()
904 struct ti_port *tport = usb_get_serial_port_data(port); in ti_break() local
909 if (tport == NULL) in ti_break()
912 status = ti_write_byte(port, tport->tp_tdev, in ti_break()
913 tport->tp_uart_base_addr + TI_UART_OFFSET_LCR, in ti_break()
926 struct ti_port *tport; in ti_interrupt_callback() local
975 tport = usb_get_serial_port_data(port); in ti_interrupt_callback()
976 if (!tport) in ti_interrupt_callback()
988 ti_handle_new_msr(tport, msr); in ti_interrupt_callback()
1007 struct ti_port *tport = urb->context; in ti_bulk_in_callback() local
1008 struct usb_serial_port *port = tport->tp_port; in ti_bulk_in_callback()
1020 tport->tp_tdev->td_urb_error = 1; in ti_bulk_in_callback()
1025 tport->tp_tdev->td_urb_error = 1; in ti_bulk_in_callback()
1040 if (!tport->tp_is_open) in ti_bulk_in_callback()
1045 spin_lock(&tport->tp_lock); in ti_bulk_in_callback()
1047 spin_unlock(&tport->tp_lock); in ti_bulk_in_callback()
1052 spin_lock(&tport->tp_lock); in ti_bulk_in_callback()
1053 if (tport->tp_read_urb_state == TI_READ_URB_RUNNING) in ti_bulk_in_callback()
1055 else if (tport->tp_read_urb_state == TI_READ_URB_STOPPING) in ti_bulk_in_callback()
1056 tport->tp_read_urb_state = TI_READ_URB_STOPPED; in ti_bulk_in_callback()
1058 spin_unlock(&tport->tp_lock); in ti_bulk_in_callback()
1067 struct ti_port *tport = urb->context; in ti_bulk_out_callback() local
1068 struct usb_serial_port *port = tport->tp_port; in ti_bulk_out_callback()
1071 tport->tp_write_urb_in_use = 0; in ti_bulk_out_callback()
1080 tport->tp_tdev->td_urb_error = 1; in ti_bulk_out_callback()
1085 tport->tp_tdev->td_urb_error = 1; in ti_bulk_out_callback()
1089 ti_send(tport); in ti_bulk_out_callback()
1113 static void ti_send(struct ti_port *tport) in ti_send() argument
1116 struct usb_serial_port *port = tport->tp_port; in ti_send()
1119 spin_lock_irqsave(&tport->tp_lock, flags); in ti_send()
1121 if (tport->tp_write_urb_in_use) in ti_send()
1131 tport->tp_write_urb_in_use = 1; in ti_send()
1133 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_send()
1142 ti_bulk_out_callback, tport); in ti_send()
1148 tport->tp_write_urb_in_use = 0; in ti_send()
1151 spin_lock_irqsave(&tport->tp_lock, flags); in ti_send()
1153 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_send()
1161 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_send()
1166 static int ti_set_mcr(struct ti_port *tport, unsigned int mcr) in ti_set_mcr() argument
1171 status = ti_write_byte(tport->tp_port, tport->tp_tdev, in ti_set_mcr()
1172 tport->tp_uart_base_addr + TI_UART_OFFSET_MCR, in ti_set_mcr()
1175 spin_lock_irqsave(&tport->tp_lock, flags); in ti_set_mcr()
1177 tport->tp_shadow_mcr = mcr; in ti_set_mcr()
1178 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_set_mcr()
1184 static int ti_get_lsr(struct ti_port *tport, u8 *lsr) in ti_get_lsr() argument
1187 struct ti_device *tdev = tport->tp_tdev; in ti_get_lsr()
1188 struct usb_serial_port *port = tport->tp_port; in ti_get_lsr()
1216 static int ti_get_serial_info(struct ti_port *tport, in ti_get_serial_info() argument
1219 struct usb_serial_port *port = tport->tp_port; in ti_get_serial_info()
1235 ret_serial.flags = tport->tp_flags; in ti_get_serial_info()
1237 ret_serial.baud_base = tport->tp_tdev->td_is_3410 ? 921600 : 460800; in ti_get_serial_info()
1247 static int ti_set_serial_info(struct tty_struct *tty, struct ti_port *tport, in ti_set_serial_info() argument
1260 tport->tp_flags = new_serial.flags & TI_SET_SERIAL_FLAGS; in ti_set_serial_info()
1261 tport->tp_port->port.closing_wait = cwait; in ti_set_serial_info()
1267 static void ti_handle_new_msr(struct ti_port *tport, __u8 msr) in ti_handle_new_msr() argument
1273 dev_dbg(&tport->tp_port->dev, "%s - msr 0x%02X\n", __func__, msr); in ti_handle_new_msr()
1276 spin_lock_irqsave(&tport->tp_lock, flags); in ti_handle_new_msr()
1277 icount = &tport->tp_port->icount; in ti_handle_new_msr()
1286 wake_up_interruptible(&tport->tp_port->port.delta_msr_wait); in ti_handle_new_msr()
1287 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_handle_new_msr()
1290 tport->tp_msr = msr & TI_MSR_MASK; in ti_handle_new_msr()
1293 tty = tty_port_tty_get(&tport->tp_port->port); in ti_handle_new_msr()
1302 static void ti_stop_read(struct ti_port *tport, struct tty_struct *tty) in ti_stop_read() argument
1306 spin_lock_irqsave(&tport->tp_lock, flags); in ti_stop_read()
1308 if (tport->tp_read_urb_state == TI_READ_URB_RUNNING) in ti_stop_read()
1309 tport->tp_read_urb_state = TI_READ_URB_STOPPING; in ti_stop_read()
1311 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_stop_read()
1315 static int ti_restart_read(struct ti_port *tport, struct tty_struct *tty) in ti_restart_read() argument
1321 spin_lock_irqsave(&tport->tp_lock, flags); in ti_restart_read()
1323 if (tport->tp_read_urb_state == TI_READ_URB_STOPPED) { in ti_restart_read()
1324 tport->tp_read_urb_state = TI_READ_URB_RUNNING; in ti_restart_read()
1325 urb = tport->tp_port->read_urb; in ti_restart_read()
1326 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_restart_read()
1327 urb->context = tport; in ti_restart_read()
1330 tport->tp_read_urb_state = TI_READ_URB_RUNNING; in ti_restart_read()
1331 spin_unlock_irqrestore(&tport->tp_lock, flags); in ti_restart_read()