Lines Matching refs:uport

62 static int uart_dcd_enabled(struct uart_port *uport)  in uart_dcd_enabled()  argument
64 return !!(uport->status & UPSTAT_DCD_ENABLE); in uart_dcd_enabled()
137 struct uart_port *uport = state->uart_port; in uart_port_startup() local
141 if (uport->type == PORT_UNKNOWN) in uart_port_startup()
163 retval = uport->ops->startup(uport); in uart_port_startup()
165 if (uart_console(uport) && uport->cons->cflag) { in uart_port_startup()
166 tty->termios.c_cflag = uport->cons->cflag; in uart_port_startup()
167 uport->cons->cflag = 0; in uart_port_startup()
180 uart_set_mctrl(uport, TIOCM_RTS | TIOCM_DTR); in uart_port_startup()
227 struct uart_port *uport = state->uart_port; in uart_shutdown() local
240 if (uart_console(uport) && tty) in uart_shutdown()
241 uport->cons->cflag = tty->termios.c_cflag; in uart_shutdown()
244 uart_clear_mctrl(uport, TIOCM_DTR | TIOCM_RTS); in uart_shutdown()
435 struct uart_port *uport = state->uart_port; in uart_change_speed() local
443 if (!tty || uport->type == PORT_UNKNOWN) in uart_change_speed()
447 uport->ops->set_termios(uport, termios, old_termios); in uart_change_speed()
452 spin_lock_irq(&uport->lock); in uart_change_speed()
454 uport->status |= UPSTAT_CTS_ENABLE; in uart_change_speed()
456 uport->status &= ~UPSTAT_CTS_ENABLE; in uart_change_speed()
459 uport->status &= ~UPSTAT_DCD_ENABLE; in uart_change_speed()
461 uport->status |= UPSTAT_DCD_ENABLE; in uart_change_speed()
464 hw_stopped = uport->hw_stopped; in uart_change_speed()
465 uport->hw_stopped = uart_softcts_mode(uport) && in uart_change_speed()
466 !(uport->ops->get_mctrl(uport) & TIOCM_CTS); in uart_change_speed()
467 if (uport->hw_stopped) { in uart_change_speed()
469 uport->ops->stop_tx(uport); in uart_change_speed()
474 spin_unlock_irq(&uport->lock); in uart_change_speed()
673 struct uart_port *uport = state->uart_port; in do_uart_get_info() local
677 retinfo->type = uport->type; in do_uart_get_info()
678 retinfo->line = uport->line; in do_uart_get_info()
679 retinfo->port = uport->iobase; in do_uart_get_info()
681 retinfo->port_high = (long) uport->iobase >> HIGH_BITS_OFFSET; in do_uart_get_info()
682 retinfo->irq = uport->irq; in do_uart_get_info()
683 retinfo->flags = uport->flags; in do_uart_get_info()
684 retinfo->xmit_fifo_size = uport->fifosize; in do_uart_get_info()
685 retinfo->baud_base = uport->uartclk / 16; in do_uart_get_info()
690 retinfo->custom_divisor = uport->custom_divisor; in do_uart_get_info()
691 retinfo->hub6 = uport->hub6; in do_uart_get_info()
692 retinfo->io_type = uport->iotype; in do_uart_get_info()
693 retinfo->iomem_reg_shift = uport->regshift; in do_uart_get_info()
694 retinfo->iomem_base = (void *)(unsigned long)uport->mapbase; in do_uart_get_info()
722 struct uart_port *uport = state->uart_port; in uart_set_info() local
740 change_irq = !(uport->flags & UPF_FIXED_PORT) in uart_set_info()
741 && new_info->irq != uport->irq; in uart_set_info()
748 change_port = !(uport->flags & UPF_FIXED_PORT) in uart_set_info()
749 && (new_port != uport->iobase || in uart_set_info()
750 (unsigned long)new_info->iomem_base != uport->mapbase || in uart_set_info()
751 new_info->hub6 != uport->hub6 || in uart_set_info()
752 new_info->io_type != uport->iotype || in uart_set_info()
753 new_info->iomem_reg_shift != uport->regshift || in uart_set_info()
754 new_info->type != uport->type); in uart_set_info()
756 old_flags = uport->flags; in uart_set_info()
758 old_custom_divisor = uport->custom_divisor; in uart_set_info()
763 (new_info->baud_base != uport->uartclk / 16) || in uart_set_info()
767 new_info->xmit_fifo_size != uport->fifosize) || in uart_set_info()
770 uport->flags = ((uport->flags & ~UPF_USR_MASK) | in uart_set_info()
772 uport->custom_divisor = new_info->custom_divisor; in uart_set_info()
779 if (uport->ops->verify_port) in uart_set_info()
780 retval = uport->ops->verify_port(uport, new_info); in uart_set_info()
809 old_iobase = uport->iobase; in uart_set_info()
810 old_mapbase = uport->mapbase; in uart_set_info()
811 old_type = uport->type; in uart_set_info()
812 old_hub6 = uport->hub6; in uart_set_info()
813 old_iotype = uport->iotype; in uart_set_info()
814 old_shift = uport->regshift; in uart_set_info()
820 uport->ops->release_port(uport); in uart_set_info()
822 uport->iobase = new_port; in uart_set_info()
823 uport->type = new_info->type; in uart_set_info()
824 uport->hub6 = new_info->hub6; in uart_set_info()
825 uport->iotype = new_info->io_type; in uart_set_info()
826 uport->regshift = new_info->iomem_reg_shift; in uart_set_info()
827 uport->mapbase = (unsigned long)new_info->iomem_base; in uart_set_info()
832 if (uport->type != PORT_UNKNOWN) { in uart_set_info()
833 retval = uport->ops->request_port(uport); in uart_set_info()
844 uport->iobase = old_iobase; in uart_set_info()
845 uport->type = old_type; in uart_set_info()
846 uport->hub6 = old_hub6; in uart_set_info()
847 uport->iotype = old_iotype; in uart_set_info()
848 uport->regshift = old_shift; in uart_set_info()
849 uport->mapbase = old_mapbase; in uart_set_info()
852 retval = uport->ops->request_port(uport); in uart_set_info()
858 uport->type = PORT_UNKNOWN; in uart_set_info()
872 uport->irq = new_info->irq; in uart_set_info()
873 if (!(uport->flags & UPF_FIXED_PORT)) in uart_set_info()
874 uport->uartclk = new_info->baud_base * 16; in uart_set_info()
875 uport->flags = (uport->flags & ~UPF_CHANGE_MASK) | in uart_set_info()
877 uport->custom_divisor = new_info->custom_divisor; in uart_set_info()
881 uport->fifosize = new_info->xmit_fifo_size; in uart_set_info()
882 port->low_latency = (uport->flags & UPF_LOW_LATENCY) ? 1 : 0; in uart_set_info()
886 if (uport->type == PORT_UNKNOWN) in uart_set_info()
889 if (((old_flags ^ uport->flags) & UPF_SPD_MASK) || in uart_set_info()
890 old_custom_divisor != uport->custom_divisor) { in uart_set_info()
896 if (uport->flags & UPF_SPD_MASK) { in uart_set_info()
899 dev_notice(uport->dev, in uart_set_info()
946 struct uart_port *uport = state->uart_port; in uart_get_lsr_info() local
949 result = uport->ops->tx_empty(uport); in uart_get_lsr_info()
957 if (uport->x_char || in uart_get_lsr_info()
959 !uart_tx_stopped(uport))) in uart_get_lsr_info()
969 struct uart_port *uport = state->uart_port; in uart_tiocmget() local
974 result = uport->mctrl; in uart_tiocmget()
975 spin_lock_irq(&uport->lock); in uart_tiocmget()
976 result |= uport->ops->get_mctrl(uport); in uart_tiocmget()
977 spin_unlock_irq(&uport->lock); in uart_tiocmget()
988 struct uart_port *uport = state->uart_port; in uart_tiocmset() local
994 uart_update_mctrl(uport, set, clear); in uart_tiocmset()
1005 struct uart_port *uport = state->uart_port; in uart_break_ctl() local
1009 if (uport->type != PORT_UNKNOWN) in uart_break_ctl()
1010 uport->ops->break_ctl(uport, break_state); in uart_break_ctl()
1018 struct uart_port *uport = state->uart_port; in uart_do_autoconfig() local
1041 if (uport->type != PORT_UNKNOWN) in uart_do_autoconfig()
1042 uport->ops->release_port(uport); in uart_do_autoconfig()
1045 if (uport->flags & UPF_AUTO_IRQ) in uart_do_autoconfig()
1052 uport->ops->config_port(uport, flags); in uart_do_autoconfig()
1060 static void uart_enable_ms(struct uart_port *uport) in uart_enable_ms() argument
1065 if (uport->ops->enable_ms) in uart_enable_ms()
1066 uport->ops->enable_ms(uport); in uart_enable_ms()
1081 struct uart_port *uport = state->uart_port; in uart_wait_modem_status() local
1090 spin_lock_irq(&uport->lock); in uart_wait_modem_status()
1091 memcpy(&cprev, &uport->icount, sizeof(struct uart_icount)); in uart_wait_modem_status()
1092 uart_enable_ms(uport); in uart_wait_modem_status()
1093 spin_unlock_irq(&uport->lock); in uart_wait_modem_status()
1097 spin_lock_irq(&uport->lock); in uart_wait_modem_status()
1098 memcpy(&cnow, &uport->icount, sizeof(struct uart_icount)); in uart_wait_modem_status()
1099 spin_unlock_irq(&uport->lock); in uart_wait_modem_status()
1138 struct uart_port *uport = state->uart_port; in uart_get_icount() local
1140 spin_lock_irq(&uport->lock); in uart_get_icount()
1141 memcpy(&cnow, &uport->icount, sizeof(struct uart_icount)); in uart_get_icount()
1142 spin_unlock_irq(&uport->lock); in uart_get_icount()
1284 struct uart_port *uport = state->uart_port; in uart_ioctl() local
1285 if (uport->ops->ioctl) in uart_ioctl()
1286 ret = uport->ops->ioctl(uport, cmd, arg); in uart_ioctl()
1299 struct uart_port *uport = state->uart_port; in uart_set_ldisc() local
1301 if (uport->ops->set_ldisc) { in uart_set_ldisc()
1303 uport->ops->set_ldisc(uport, &tty->termios); in uart_set_ldisc()
1312 struct uart_port *uport = state->uart_port; in uart_set_termios() local
1321 if (uport->flags & UPF_SOFT_FLOW) { in uart_set_termios()
1350 uart_clear_mctrl(uport, TIOCM_RTS | TIOCM_DTR); in uart_set_termios()
1356 uart_set_mctrl(uport, mask); in uart_set_termios()
1370 struct uart_port *uport; in uart_close() local
1384 uport = state->uart_port; in uart_close()
1387 pr_debug("uart_close(%d) called\n", uport ? uport->line : -1); in uart_close()
1398 spin_lock_irqsave(&uport->lock, flags); in uart_close()
1399 uport->ops->stop_rx(uport); in uart_close()
1400 spin_unlock_irqrestore(&uport->lock, flags); in uart_close()
1406 uart_wait_until_sent(tty, uport->timeout); in uart_close()
1420 } else if (!uart_console(uport)) { in uart_close()
1534 struct uart_port *uport = state->uart_port; in uart_port_shutdown() local
1548 uport->ops->shutdown(uport); in uart_port_shutdown()
1553 synchronize_irq(uport->irq); in uart_port_shutdown()
1559 struct uart_port *uport = state->uart_port; in uart_carrier_raised() local
1561 spin_lock_irq(&uport->lock); in uart_carrier_raised()
1562 uart_enable_ms(uport); in uart_carrier_raised()
1563 mctrl = uport->ops->get_mctrl(uport); in uart_carrier_raised()
1564 spin_unlock_irq(&uport->lock); in uart_carrier_raised()
1573 struct uart_port *uport = state->uart_port; in uart_dtr_rts() local
1576 uart_set_mctrl(uport, TIOCM_DTR | TIOCM_RTS); in uart_dtr_rts()
1578 uart_clear_mctrl(uport, TIOCM_DTR | TIOCM_RTS); in uart_dtr_rts()
1666 struct uart_port *uport = state->uart_port; in uart_line_info() local
1671 if (!uport) in uart_line_info()
1674 mmio = uport->iotype >= UPIO_MEM; in uart_line_info()
1676 uport->line, uart_type(uport), in uart_line_info()
1678 mmio ? (unsigned long long)uport->mapbase in uart_line_info()
1679 : (unsigned long long)uport->iobase, in uart_line_info()
1680 uport->irq); in uart_line_info()
1682 if (uport->type == PORT_UNKNOWN) { in uart_line_info()
1692 spin_lock_irq(&uport->lock); in uart_line_info()
1693 status = uport->ops->get_mctrl(uport); in uart_line_info()
1694 spin_unlock_irq(&uport->lock); in uart_line_info()
1700 uport->icount.tx, uport->icount.rx); in uart_line_info()
1701 if (uport->icount.frame) in uart_line_info()
1703 uport->icount.frame); in uart_line_info()
1704 if (uport->icount.parity) in uart_line_info()
1706 uport->icount.parity); in uart_line_info()
1707 if (uport->icount.brk) in uart_line_info()
1709 uport->icount.brk); in uart_line_info()
1710 if (uport->icount.overrun) in uart_line_info()
1712 uport->icount.overrun); in uart_line_info()
1715 if (uport->mctrl & (bit)) \ in uart_line_info()
2019 int uart_suspend_port(struct uart_driver *drv, struct uart_port *uport) in uart_suspend_port() argument
2021 struct uart_state *state = drv->state + uport->line; in uart_suspend_port()
2024 struct uart_match match = {uport, drv}; in uart_suspend_port()
2028 tty_dev = device_find_child(uport->dev, &match, serial_match_port); in uart_suspend_port()
2030 if (!enable_irq_wake(uport->irq)) in uart_suspend_port()
2031 uport->irq_wake = 1; in uart_suspend_port()
2039 if (!console_suspend_enabled && uart_console(uport)) in uart_suspend_port()
2042 uport->suspended = 1; in uart_suspend_port()
2045 const struct uart_ops *ops = uport->ops; in uart_suspend_port()
2051 spin_lock_irq(&uport->lock); in uart_suspend_port()
2052 ops->stop_tx(uport); in uart_suspend_port()
2053 ops->set_mctrl(uport, 0); in uart_suspend_port()
2054 ops->stop_rx(uport); in uart_suspend_port()
2055 spin_unlock_irq(&uport->lock); in uart_suspend_port()
2060 for (tries = 3; !ops->tx_empty(uport) && tries; tries--) in uart_suspend_port()
2063 dev_err(uport->dev, "%s%d: Unable to drain transmitter\n", in uart_suspend_port()
2065 drv->tty_driver->name_base + uport->line); in uart_suspend_port()
2067 ops->shutdown(uport); in uart_suspend_port()
2073 if (uart_console(uport)) in uart_suspend_port()
2074 console_stop(uport->cons); in uart_suspend_port()
2083 int uart_resume_port(struct uart_driver *drv, struct uart_port *uport) in uart_resume_port() argument
2085 struct uart_state *state = drv->state + uport->line; in uart_resume_port()
2088 struct uart_match match = {uport, drv}; in uart_resume_port()
2093 tty_dev = device_find_child(uport->dev, &match, serial_match_port); in uart_resume_port()
2094 if (!uport->suspended && device_may_wakeup(tty_dev)) { in uart_resume_port()
2095 if (uport->irq_wake) { in uart_resume_port()
2096 disable_irq_wake(uport->irq); in uart_resume_port()
2097 uport->irq_wake = 0; in uart_resume_port()
2104 uport->suspended = 0; in uart_resume_port()
2109 if (uart_console(uport)) { in uart_resume_port()
2114 termios.c_cflag = uport->cons->cflag; in uart_resume_port()
2124 uport->ops->set_termios(uport, &termios, NULL); in uart_resume_port()
2126 console_start(uport->cons); in uart_resume_port()
2130 const struct uart_ops *ops = uport->ops; in uart_resume_port()
2134 spin_lock_irq(&uport->lock); in uart_resume_port()
2135 ops->set_mctrl(uport, 0); in uart_resume_port()
2136 spin_unlock_irq(&uport->lock); in uart_resume_port()
2137 if (console_suspend_enabled || !uart_console(uport)) { in uart_resume_port()
2140 ret = ops->startup(uport); in uart_resume_port()
2144 spin_lock_irq(&uport->lock); in uart_resume_port()
2145 ops->set_mctrl(uport, uport->mctrl); in uart_resume_port()
2146 ops->start_tx(uport); in uart_resume_port()
2147 spin_unlock_irq(&uport->lock); in uart_resume_port()
2657 int uart_add_one_port(struct uart_driver *drv, struct uart_port *uport) in uart_add_one_port() argument
2667 if (uport->line >= drv->nr) in uart_add_one_port()
2670 state = drv->state + uport->line; in uart_add_one_port()
2681 state->uart_port = uport; in uart_add_one_port()
2682 uport->state = state; in uart_add_one_port()
2685 uport->cons = drv->cons; in uart_add_one_port()
2686 uport->minor = drv->tty_driver->minor_start + uport->line; in uart_add_one_port()
2692 if (!(uart_console(uport) && (uport->cons->flags & CON_ENABLED))) { in uart_add_one_port()
2693 spin_lock_init(&uport->lock); in uart_add_one_port()
2694 lockdep_set_class(&uport->lock, &port_lock_key); in uart_add_one_port()
2696 if (uport->cons && uport->dev) in uart_add_one_port()
2697 of_console_check(uport->dev->of_node, uport->cons->name, uport->line); in uart_add_one_port()
2699 uart_configure_port(drv, state, uport); in uart_add_one_port()
2702 if (uport->attr_group) in uart_add_one_port()
2705 uport->tty_groups = kcalloc(num_groups, sizeof(*uport->tty_groups), in uart_add_one_port()
2707 if (!uport->tty_groups) { in uart_add_one_port()
2711 uport->tty_groups[0] = &tty_dev_attr_group; in uart_add_one_port()
2712 if (uport->attr_group) in uart_add_one_port()
2713 uport->tty_groups[1] = uport->attr_group; in uart_add_one_port()
2720 uport->line, uport->dev, port, uport->tty_groups); in uart_add_one_port()
2724 dev_err(uport->dev, "Cannot register tty device on line %d\n", in uart_add_one_port()
2725 uport->line); in uart_add_one_port()
2731 uport->flags &= ~UPF_DEAD; in uart_add_one_port()
2749 int uart_remove_one_port(struct uart_driver *drv, struct uart_port *uport) in uart_remove_one_port() argument
2751 struct uart_state *state = drv->state + uport->line; in uart_remove_one_port()
2758 if (state->uart_port != uport) in uart_remove_one_port()
2759 dev_alert(uport->dev, "Removing wrong port: %p != %p\n", in uart_remove_one_port()
2760 state->uart_port, uport); in uart_remove_one_port()
2774 uport->flags |= UPF_DEAD; in uart_remove_one_port()
2780 tty_unregister_device(drv->tty_driver, uport->line); in uart_remove_one_port()
2791 if (uart_console(uport)) in uart_remove_one_port()
2792 unregister_console(uport->cons); in uart_remove_one_port()
2797 if (uport->type != PORT_UNKNOWN) in uart_remove_one_port()
2798 uport->ops->release_port(uport); in uart_remove_one_port()
2799 kfree(uport->tty_groups); in uart_remove_one_port()
2804 uport->type = PORT_UNKNOWN; in uart_remove_one_port()
2845 void uart_handle_dcd_change(struct uart_port *uport, unsigned int status) in uart_handle_dcd_change() argument
2847 struct tty_port *port = &uport->state->port; in uart_handle_dcd_change()
2851 lockdep_assert_held_once(&uport->lock); in uart_handle_dcd_change()
2862 uport->icount.dcd++; in uart_handle_dcd_change()
2864 if (uart_dcd_enabled(uport)) { in uart_handle_dcd_change()
2880 void uart_handle_cts_change(struct uart_port *uport, unsigned int status) in uart_handle_cts_change() argument
2882 lockdep_assert_held_once(&uport->lock); in uart_handle_cts_change()
2884 uport->icount.cts++; in uart_handle_cts_change()
2886 if (uart_softcts_mode(uport)) { in uart_handle_cts_change()
2887 if (uport->hw_stopped) { in uart_handle_cts_change()
2889 uport->hw_stopped = 0; in uart_handle_cts_change()
2890 uport->ops->start_tx(uport); in uart_handle_cts_change()
2891 uart_write_wakeup(uport); in uart_handle_cts_change()
2895 uport->hw_stopped = 1; in uart_handle_cts_change()
2896 uport->ops->stop_tx(uport); in uart_handle_cts_change()