Lines Matching refs:uport

60 static int uart_dcd_enabled(struct uart_port *uport)  in uart_dcd_enabled()  argument
62 return !!(uport->status & UPSTAT_DCD_ENABLE); in uart_dcd_enabled()
72 static inline void uart_port_deref(struct uart_port *uport) in uart_port_deref() argument
74 if (atomic_dec_and_test(&uport->state->refcount)) in uart_port_deref()
75 wake_up(&uport->state->remove_wait); in uart_port_deref()
86 #define uart_port_unlock(uport, flags) \ argument
88 struct uart_port *__uport = uport; \
193 static void uart_port_dtr_rts(struct uart_port *uport, bool active) in uart_port_dtr_rts() argument
196 uart_set_mctrl(uport, TIOCM_DTR | TIOCM_RTS); in uart_port_dtr_rts()
198 uart_clear_mctrl(uport, TIOCM_DTR | TIOCM_RTS); in uart_port_dtr_rts()
205 struct uart_port *uport = uart_port_check(state); in uart_change_line_settings() local
213 if (!tty || uport->type == PORT_UNKNOWN) in uart_change_line_settings()
217 uport->ops->set_termios(uport, termios, old_termios); in uart_change_line_settings()
222 uart_port_lock_irq(uport); in uart_change_line_settings()
224 uport->status |= UPSTAT_CTS_ENABLE; in uart_change_line_settings()
226 uport->status &= ~UPSTAT_CTS_ENABLE; in uart_change_line_settings()
229 uport->status &= ~UPSTAT_DCD_ENABLE; in uart_change_line_settings()
231 uport->status |= UPSTAT_DCD_ENABLE; in uart_change_line_settings()
234 old_hw_stopped = uport->hw_stopped; in uart_change_line_settings()
235 uport->hw_stopped = uart_softcts_mode(uport) && in uart_change_line_settings()
236 !(uport->ops->get_mctrl(uport) & TIOCM_CTS); in uart_change_line_settings()
237 if (uport->hw_stopped != old_hw_stopped) { in uart_change_line_settings()
239 uport->ops->stop_tx(uport); in uart_change_line_settings()
243 uart_port_unlock_irq(uport); in uart_change_line_settings()
249 struct uart_port *uport; in uart_alloc_xmit_buf() local
261 uport = uart_port_lock(state, flags); in uart_alloc_xmit_buf()
266 uart_port_unlock(uport, flags); in uart_alloc_xmit_buf()
268 uart_port_unlock(uport, flags); in uart_alloc_xmit_buf()
282 struct uart_port *uport; in uart_free_xmit_buf() local
292 uport = uart_port_lock(state, flags); in uart_free_xmit_buf()
296 uart_port_unlock(uport, flags); in uart_free_xmit_buf()
308 struct uart_port *uport = uart_port_check(state); in uart_port_startup() local
311 if (uport->type == PORT_UNKNOWN) in uart_port_startup()
323 retval = uport->ops->startup(uport); in uart_port_startup()
325 if (uart_console(uport) && uport->cons->cflag) { in uart_port_startup()
326 tty->termios.c_cflag = uport->cons->cflag; in uart_port_startup()
327 tty->termios.c_ispeed = uport->cons->ispeed; in uart_port_startup()
328 tty->termios.c_ospeed = uport->cons->ospeed; in uart_port_startup()
329 uport->cons->cflag = 0; in uart_port_startup()
330 uport->cons->ispeed = 0; in uart_port_startup()
331 uport->cons->ospeed = 0; in uart_port_startup()
343 uart_port_dtr_rts(uport, true); in uart_port_startup()
361 struct uart_port *uport; in uart_startup() local
374 uport = uart_port_check(state); in uart_startup()
375 if (!uport) in uart_startup()
378 serial_base_port_startup(uport); in uart_startup()
392 struct uart_port *uport = uart_port_check(state); in uart_shutdown() local
401 if (uport) in uart_shutdown()
402 serial_base_port_shutdown(uport); in uart_shutdown()
410 if (uport) { in uart_shutdown()
411 if (uart_console(uport) && tty) { in uart_shutdown()
412 uport->cons->cflag = tty->termios.c_cflag; in uart_shutdown()
413 uport->cons->ispeed = tty->termios.c_ispeed; in uart_shutdown()
414 uport->cons->ospeed = tty->termios.c_ospeed; in uart_shutdown()
418 uart_port_dtr_rts(uport, false); in uart_shutdown()
697 void uart_xchar_out(struct uart_port *uport, int offset) in uart_xchar_out() argument
699 serial_port_out(uport, offset, uport->x_char); in uart_xchar_out()
700 uport->icount.tx++; in uart_xchar_out()
701 uport->x_char = 0; in uart_xchar_out()
792 struct uart_port *uport; in uart_get_info() local
802 uport = uart_port_check(state); in uart_get_info()
803 if (!uport) in uart_get_info()
806 retinfo->type = uport->type; in uart_get_info()
807 retinfo->line = uport->line; in uart_get_info()
808 retinfo->port = uport->iobase; in uart_get_info()
810 retinfo->port_high = (long) uport->iobase >> HIGH_BITS_OFFSET; in uart_get_info()
811 retinfo->irq = uport->irq; in uart_get_info()
812 retinfo->flags = (__force int)uport->flags; in uart_get_info()
813 retinfo->xmit_fifo_size = uport->fifosize; in uart_get_info()
814 retinfo->baud_base = uport->uartclk / 16; in uart_get_info()
819 retinfo->custom_divisor = uport->custom_divisor; in uart_get_info()
820 retinfo->hub6 = uport->hub6; in uart_get_info()
821 retinfo->io_type = uport->iotype; in uart_get_info()
822 retinfo->iomem_reg_shift = uport->regshift; in uart_get_info()
823 retinfo->iomem_base = (void *)(unsigned long)uport->mapbase; in uart_get_info()
837 static int uart_change_port(struct uart_port *uport, in uart_change_port() argument
845 old_iobase = uport->iobase; in uart_change_port()
846 old_mapbase = uport->mapbase; in uart_change_port()
847 old_type = uport->type; in uart_change_port()
848 old_hub6 = uport->hub6; in uart_change_port()
849 old_iotype = uport->iotype; in uart_change_port()
850 old_shift = uport->regshift; in uart_change_port()
852 if (old_type != PORT_UNKNOWN && uport->ops->release_port) in uart_change_port()
853 uport->ops->release_port(uport); in uart_change_port()
855 uport->iobase = new_port; in uart_change_port()
856 uport->type = new_info->type; in uart_change_port()
857 uport->hub6 = new_info->hub6; in uart_change_port()
858 uport->iotype = new_info->io_type; in uart_change_port()
859 uport->regshift = new_info->iomem_reg_shift; in uart_change_port()
860 uport->mapbase = (unsigned long)new_info->iomem_base; in uart_change_port()
862 if (uport->type == PORT_UNKNOWN || !uport->ops->request_port) in uart_change_port()
865 retval = uport->ops->request_port(uport); in uart_change_port()
873 uport->iobase = old_iobase; in uart_change_port()
874 uport->type = old_type; in uart_change_port()
875 uport->hub6 = old_hub6; in uart_change_port()
876 uport->iotype = old_iotype; in uart_change_port()
877 uport->regshift = old_shift; in uart_change_port()
878 uport->mapbase = old_mapbase; in uart_change_port()
883 retval = uport->ops->request_port(uport); in uart_change_port()
886 uport->type = PORT_UNKNOWN; in uart_change_port()
896 struct uart_port *uport = uart_port_check(state); in uart_set_info() local
903 if (!uport) in uart_set_info()
917 change_irq = !(uport->flags & UPF_FIXED_PORT) in uart_set_info()
918 && new_info->irq != uport->irq; in uart_set_info()
925 change_port = !(uport->flags & UPF_FIXED_PORT) in uart_set_info()
926 && (new_port != uport->iobase || in uart_set_info()
927 (unsigned long)new_info->iomem_base != uport->mapbase || in uart_set_info()
928 new_info->hub6 != uport->hub6 || in uart_set_info()
929 new_info->io_type != uport->iotype || in uart_set_info()
930 new_info->iomem_reg_shift != uport->regshift || in uart_set_info()
931 new_info->type != uport->type); in uart_set_info()
933 old_flags = uport->flags; in uart_set_info()
935 old_custom_divisor = uport->custom_divisor; in uart_set_info()
937 if (!(uport->flags & UPF_FIXED_PORT)) { in uart_set_info()
945 (new_info->baud_base != uport->uartclk / 16) || in uart_set_info()
949 new_info->xmit_fifo_size != uport->fifosize) || in uart_set_info()
952 uport->flags = ((uport->flags & ~UPF_USR_MASK) | in uart_set_info()
954 uport->custom_divisor = new_info->custom_divisor; in uart_set_info()
965 if (uport->ops->verify_port) { in uart_set_info()
966 retval = uport->ops->verify_port(uport, new_info); in uart_set_info()
988 retval = uart_change_port(uport, new_info, new_port); in uart_set_info()
994 uport->irq = new_info->irq; in uart_set_info()
995 if (!(uport->flags & UPF_FIXED_PORT)) in uart_set_info()
996 uport->uartclk = new_info->baud_base * 16; in uart_set_info()
997 uport->flags = (uport->flags & ~UPF_CHANGE_MASK) | in uart_set_info()
999 uport->custom_divisor = new_info->custom_divisor; in uart_set_info()
1003 uport->fifosize = new_info->xmit_fifo_size; in uart_set_info()
1006 if (uport->type == PORT_UNKNOWN) in uart_set_info()
1010 if (((old_flags ^ uport->flags) & UPF_SPD_MASK) || in uart_set_info()
1011 old_custom_divisor != uport->custom_divisor) { in uart_set_info()
1016 if (uport->flags & UPF_SPD_MASK) { in uart_set_info()
1017 dev_notice_ratelimited(uport->dev, in uart_set_info()
1067 struct uart_port *uport = uart_port_check(state); in uart_get_lsr_info() local
1070 result = uport->ops->tx_empty(uport); in uart_get_lsr_info()
1078 if (uport->x_char || in uart_get_lsr_info()
1080 !uart_tx_stopped(uport))) in uart_get_lsr_info()
1090 struct uart_port *uport; in uart_tiocmget() local
1095 uport = uart_port_check(state); in uart_tiocmget()
1096 if (!uport || tty_io_error(tty)) in uart_tiocmget()
1099 uart_port_lock_irq(uport); in uart_tiocmget()
1100 result = uport->mctrl; in uart_tiocmget()
1101 result |= uport->ops->get_mctrl(uport); in uart_tiocmget()
1102 uart_port_unlock_irq(uport); in uart_tiocmget()
1112 struct uart_port *uport; in uart_tiocmset() local
1116 uport = uart_port_check(state); in uart_tiocmset()
1117 if (!uport || tty_io_error(tty)) in uart_tiocmset()
1120 uart_update_mctrl(uport, set, clear); in uart_tiocmset()
1129 struct uart_port *uport; in uart_break_ctl() local
1133 uport = uart_port_check(state); in uart_break_ctl()
1134 if (!uport) in uart_break_ctl()
1137 if (uport->type != PORT_UNKNOWN && uport->ops->break_ctl) in uart_break_ctl()
1138 uport->ops->break_ctl(uport, break_state); in uart_break_ctl()
1146 struct uart_port *uport; in uart_do_autoconfig() local
1158 uport = uart_port_check(state); in uart_do_autoconfig()
1159 if (!uport) in uart_do_autoconfig()
1171 if (uport->type != PORT_UNKNOWN && uport->ops->release_port) in uart_do_autoconfig()
1172 uport->ops->release_port(uport); in uart_do_autoconfig()
1175 if (uport->flags & UPF_AUTO_IRQ) in uart_do_autoconfig()
1182 uport->ops->config_port(uport, flags); in uart_do_autoconfig()
1196 static void uart_enable_ms(struct uart_port *uport) in uart_enable_ms() argument
1201 if (uport->ops->enable_ms) in uart_enable_ms()
1202 uport->ops->enable_ms(uport); in uart_enable_ms()
1216 struct uart_port *uport; in uart_wait_modem_status() local
1225 uport = uart_port_ref(state); in uart_wait_modem_status()
1226 if (!uport) in uart_wait_modem_status()
1228 uart_port_lock_irq(uport); in uart_wait_modem_status()
1229 memcpy(&cprev, &uport->icount, sizeof(struct uart_icount)); in uart_wait_modem_status()
1230 uart_enable_ms(uport); in uart_wait_modem_status()
1231 uart_port_unlock_irq(uport); in uart_wait_modem_status()
1235 uart_port_lock_irq(uport); in uart_wait_modem_status()
1236 memcpy(&cnow, &uport->icount, sizeof(struct uart_icount)); in uart_wait_modem_status()
1237 uart_port_unlock_irq(uport); in uart_wait_modem_status()
1261 uart_port_deref(uport); in uart_wait_modem_status()
1277 struct uart_port *uport; in uart_get_icount() local
1279 uport = uart_port_ref(state); in uart_get_icount()
1280 if (!uport) in uart_get_icount()
1282 uart_port_lock_irq(uport); in uart_get_icount()
1283 memcpy(&cnow, &uport->icount, sizeof(struct uart_icount)); in uart_get_icount()
1284 uart_port_unlock_irq(uport); in uart_get_icount()
1285 uart_port_deref(uport); in uart_get_icount()
1577 struct uart_port *uport; in uart_ioctl() local
1618 uport = uart_port_check(state); in uart_ioctl()
1620 if (!uport || tty_io_error(tty)) { in uart_ioctl()
1636 ret = uart_get_rs485_config(uport, uarg); in uart_ioctl()
1640 ret = uart_set_rs485_config(tty, uport, uarg); in uart_ioctl()
1651 if (uport->ops->ioctl) in uart_ioctl()
1652 ret = uport->ops->ioctl(uport, cmd, arg); in uart_ioctl()
1666 struct uart_port *uport; in uart_set_ldisc() local
1673 uport = uart_port_check(state); in uart_set_ldisc()
1674 if (uport && uport->ops->set_ldisc) in uart_set_ldisc()
1675 uport->ops->set_ldisc(uport, &tty->termios); in uart_set_ldisc()
1683 struct uart_port *uport; in uart_set_termios() local
1690 uport = uart_port_check(state); in uart_set_termios()
1691 if (!uport) in uart_set_termios()
1698 if (uport->flags & UPF_SOFT_FLOW) { in uart_set_termios()
1724 uart_clear_mctrl(uport, TIOCM_RTS | TIOCM_DTR); in uart_set_termios()
1731 uart_set_mctrl(uport, mask); in uart_set_termios()
1764 struct uart_port *uport = uart_port_check(state); in uart_tty_port_shutdown() local
1770 if (WARN(!uport, "detached port still initialized!\n")) in uart_tty_port_shutdown()
1773 uart_port_lock_irq(uport); in uart_tty_port_shutdown()
1774 uport->ops->stop_rx(uport); in uart_tty_port_shutdown()
1775 uart_port_unlock_irq(uport); in uart_tty_port_shutdown()
1777 serial_base_port_shutdown(uport); in uart_tty_port_shutdown()
1864 struct uart_port *uport; in uart_hangup() local
1870 uport = uart_port_check(state); in uart_hangup()
1871 WARN(!uport, "hangup of detached port!\n"); in uart_hangup()
1881 if (uport && !uart_console(uport)) in uart_hangup()
1893 struct uart_port *uport = uart_port_check(state); in uart_port_shutdown() local
1904 if (uport) { in uart_port_shutdown()
1906 uport->ops->shutdown(uport); in uart_port_shutdown()
1909 synchronize_irq(uport->irq); in uart_port_shutdown()
1916 struct uart_port *uport; in uart_carrier_raised() local
1919 uport = uart_port_ref(state); in uart_carrier_raised()
1926 if (WARN_ON(!uport)) in uart_carrier_raised()
1928 uart_port_lock_irq(uport); in uart_carrier_raised()
1929 uart_enable_ms(uport); in uart_carrier_raised()
1930 mctrl = uport->ops->get_mctrl(uport); in uart_carrier_raised()
1931 uart_port_unlock_irq(uport); in uart_carrier_raised()
1932 uart_port_deref(uport); in uart_carrier_raised()
1940 struct uart_port *uport; in uart_dtr_rts() local
1942 uport = uart_port_ref(state); in uart_dtr_rts()
1943 if (!uport) in uart_dtr_rts()
1945 uart_port_dtr_rts(uport, active); in uart_dtr_rts()
1946 uart_port_deref(uport); in uart_dtr_rts()
1984 struct uart_port *uport; in uart_port_activate() local
1987 uport = uart_port_check(state); in uart_port_activate()
1988 if (!uport || uport->flags & UPF_DEAD) in uart_port_activate()
2020 struct uart_port *uport; in uart_line_info() local
2027 uport = uart_port_check(state); in uart_line_info()
2028 if (!uport) in uart_line_info()
2031 mmio = uport->iotype >= UPIO_MEM; in uart_line_info()
2033 uport->line, uart_type(uport), in uart_line_info()
2035 mmio ? (unsigned long long)uport->mapbase in uart_line_info()
2036 : (unsigned long long)uport->iobase, in uart_line_info()
2037 uport->irq); in uart_line_info()
2039 if (uport->type == PORT_UNKNOWN) { in uart_line_info()
2048 uart_port_lock_irq(uport); in uart_line_info()
2049 status = uport->ops->get_mctrl(uport); in uart_line_info()
2050 uart_port_unlock_irq(uport); in uart_line_info()
2055 uport->icount.tx, uport->icount.rx); in uart_line_info()
2056 if (uport->icount.frame) in uart_line_info()
2057 seq_printf(m, " fe:%d", uport->icount.frame); in uart_line_info()
2058 if (uport->icount.parity) in uart_line_info()
2059 seq_printf(m, " pe:%d", uport->icount.parity); in uart_line_info()
2060 if (uport->icount.brk) in uart_line_info()
2061 seq_printf(m, " brk:%d", uport->icount.brk); in uart_line_info()
2062 if (uport->icount.overrun) in uart_line_info()
2063 seq_printf(m, " oe:%d", uport->icount.overrun); in uart_line_info()
2064 if (uport->icount.buf_overrun) in uart_line_info()
2065 seq_printf(m, " bo:%d", uport->icount.buf_overrun); in uart_line_info()
2068 if (uport->mctrl & (bit)) \ in uart_line_info()
2361 int uart_suspend_port(struct uart_driver *drv, struct uart_port *uport) in uart_suspend_port() argument
2363 struct uart_state *state = drv->state + uport->line; in uart_suspend_port()
2366 struct uart_match match = {uport, drv}; in uart_suspend_port()
2370 tty_dev = device_find_child(&uport->port_dev->dev, &match, serial_match_port); in uart_suspend_port()
2372 enable_irq_wake(uport->irq); in uart_suspend_port()
2384 if (!console_suspend_enabled && uart_console(uport)) { in uart_suspend_port()
2385 if (uport->ops->start_rx) { in uart_suspend_port()
2386 uart_port_lock_irq(uport); in uart_suspend_port()
2387 uport->ops->stop_rx(uport); in uart_suspend_port()
2388 uart_port_unlock_irq(uport); in uart_suspend_port()
2390 device_set_awake_path(uport->dev); in uart_suspend_port()
2394 uport->suspended = 1; in uart_suspend_port()
2397 const struct uart_ops *ops = uport->ops; in uart_suspend_port()
2404 uart_port_lock_irq(uport); in uart_suspend_port()
2405 ops->stop_tx(uport); in uart_suspend_port()
2406 if (!(uport->rs485.flags & SER_RS485_ENABLED)) in uart_suspend_port()
2407 ops->set_mctrl(uport, 0); in uart_suspend_port()
2409 mctrl = uport->mctrl; in uart_suspend_port()
2410 uport->mctrl = 0; in uart_suspend_port()
2411 ops->stop_rx(uport); in uart_suspend_port()
2412 uart_port_unlock_irq(uport); in uart_suspend_port()
2417 for (tries = 3; !ops->tx_empty(uport) && tries; tries--) in uart_suspend_port()
2420 dev_err(uport->dev, "%s: Unable to drain transmitter\n", in uart_suspend_port()
2421 uport->name); in uart_suspend_port()
2423 ops->shutdown(uport); in uart_suspend_port()
2424 uport->mctrl = mctrl; in uart_suspend_port()
2430 if (uart_console(uport)) in uart_suspend_port()
2431 console_suspend(uport->cons); in uart_suspend_port()
2439 int uart_resume_port(struct uart_driver *drv, struct uart_port *uport) in uart_resume_port() argument
2441 struct uart_state *state = drv->state + uport->line; in uart_resume_port()
2444 struct uart_match match = {uport, drv}; in uart_resume_port()
2449 tty_dev = device_find_child(&uport->port_dev->dev, &match, serial_match_port); in uart_resume_port()
2450 if (!uport->suspended && device_may_wakeup(tty_dev)) { in uart_resume_port()
2451 if (irqd_is_wakeup_set(irq_get_irq_data((uport->irq)))) in uart_resume_port()
2452 disable_irq_wake(uport->irq); in uart_resume_port()
2457 uport->suspended = 0; in uart_resume_port()
2462 if (uart_console(uport)) { in uart_resume_port()
2467 termios.c_cflag = uport->cons->cflag; in uart_resume_port()
2468 termios.c_ispeed = uport->cons->ispeed; in uart_resume_port()
2469 termios.c_ospeed = uport->cons->ospeed; in uart_resume_port()
2479 uport->ops->set_termios(uport, &termios, NULL); in uart_resume_port()
2480 if (!console_suspend_enabled && uport->ops->start_rx) { in uart_resume_port()
2481 uart_port_lock_irq(uport); in uart_resume_port()
2482 uport->ops->start_rx(uport); in uart_resume_port()
2483 uart_port_unlock_irq(uport); in uart_resume_port()
2486 console_resume(uport->cons); in uart_resume_port()
2490 const struct uart_ops *ops = uport->ops; in uart_resume_port()
2494 uart_port_lock_irq(uport); in uart_resume_port()
2495 if (!(uport->rs485.flags & SER_RS485_ENABLED)) in uart_resume_port()
2496 ops->set_mctrl(uport, 0); in uart_resume_port()
2497 uart_port_unlock_irq(uport); in uart_resume_port()
2498 if (console_suspend_enabled || !uart_console(uport)) { in uart_resume_port()
2502 ret = ops->startup(uport); in uart_resume_port()
2506 uart_rs485_config(uport); in uart_resume_port()
2507 uart_port_lock_irq(uport); in uart_resume_port()
2508 if (!(uport->rs485.flags & SER_RS485_ENABLED)) in uart_resume_port()
2509 ops->set_mctrl(uport, uport->mctrl); in uart_resume_port()
2510 ops->start_tx(uport); in uart_resume_port()
2511 uart_port_unlock_irq(uport); in uart_resume_port()
3022 struct uart_port *uport; in console_show() local
3026 uport = uart_port_check(state); in console_show()
3027 if (uport) in console_show()
3028 console = uart_console_registered(uport); in console_show()
3039 struct uart_port *uport; in console_store() local
3048 uport = uart_port_check(state); in console_store()
3049 if (!uport) in console_store()
3052 oldconsole = uart_console_registered(uport); in console_store()
3054 ret = unregister_console(uport->cons); in console_store()
3058 if (!uart_console(uport)) in console_store()
3061 uport->console_reinit = 1; in console_store()
3062 register_console(uport->cons); in console_store()
3117 static int serial_core_add_one_port(struct uart_driver *drv, struct uart_port *uport) in serial_core_add_one_port() argument
3124 if (uport->line >= drv->nr) in serial_core_add_one_port()
3127 state = drv->state + uport->line; in serial_core_add_one_port()
3137 state->uart_port = uport; in serial_core_add_one_port()
3138 uport->state = state; in serial_core_add_one_port()
3144 if (!uart_console_registered(uport)) in serial_core_add_one_port()
3145 uart_port_spin_lock_init(uport); in serial_core_add_one_port()
3148 uart_port_set_cons(uport, drv->cons); in serial_core_add_one_port()
3149 uport->minor = drv->tty_driver->minor_start + uport->line; in serial_core_add_one_port()
3150 uport->name = kasprintf(GFP_KERNEL, "%s%d", drv->dev_name, in serial_core_add_one_port()
3151 drv->tty_driver->name_base + uport->line); in serial_core_add_one_port()
3152 if (!uport->name) in serial_core_add_one_port()
3155 if (uport->cons && uport->dev) in serial_core_add_one_port()
3156 of_console_check(uport->dev->of_node, uport->cons->name, uport->line); in serial_core_add_one_port()
3158 uart_configure_port(drv, state, uport); in serial_core_add_one_port()
3160 port->console = uart_console(uport); in serial_core_add_one_port()
3163 if (uport->attr_group) in serial_core_add_one_port()
3166 uport->tty_groups = kcalloc(num_groups, sizeof(*uport->tty_groups), in serial_core_add_one_port()
3168 if (!uport->tty_groups) in serial_core_add_one_port()
3171 uport->tty_groups[0] = &tty_dev_attr_group; in serial_core_add_one_port()
3172 if (uport->attr_group) in serial_core_add_one_port()
3173 uport->tty_groups[1] = uport->attr_group; in serial_core_add_one_port()
3176 uport->flags &= ~UPF_DEAD; in serial_core_add_one_port()
3183 uport->line, uport->dev, &uport->port_dev->dev, port, in serial_core_add_one_port()
3184 uport->tty_groups); in serial_core_add_one_port()
3188 uport->flags |= UPF_DEAD; in serial_core_add_one_port()
3189 dev_err(uport->dev, "Cannot register tty device on line %d\n", in serial_core_add_one_port()
3190 uport->line); in serial_core_add_one_port()
3208 struct uart_port *uport) in serial_core_remove_one_port() argument
3210 struct uart_state *state = drv->state + uport->line; in serial_core_remove_one_port()
3217 if (uart_port != uport) in serial_core_remove_one_port()
3218 dev_alert(uport->dev, "Removing wrong port: %p != %p\n", in serial_core_remove_one_port()
3219 uart_port, uport); in serial_core_remove_one_port()
3230 tty_port_unregister_device(port, drv->tty_driver, uport->line); in serial_core_remove_one_port()
3241 if (uart_console(uport)) in serial_core_remove_one_port()
3242 unregister_console(uport->cons); in serial_core_remove_one_port()
3247 if (uport->type != PORT_UNKNOWN && uport->ops->release_port) in serial_core_remove_one_port()
3248 uport->ops->release_port(uport); in serial_core_remove_one_port()
3249 kfree(uport->tty_groups); in serial_core_remove_one_port()
3250 kfree(uport->name); in serial_core_remove_one_port()
3255 uport->type = PORT_UNKNOWN; in serial_core_remove_one_port()
3256 uport->port_dev = NULL; in serial_core_remove_one_port()
3438 void uart_handle_dcd_change(struct uart_port *uport, bool active) in uart_handle_dcd_change() argument
3440 struct tty_port *port = &uport->state->port; in uart_handle_dcd_change()
3444 lockdep_assert_held_once(&uport->lock); in uart_handle_dcd_change()
3455 uport->icount.dcd++; in uart_handle_dcd_change()
3457 if (uart_dcd_enabled(uport)) { in uart_handle_dcd_change()
3473 void uart_handle_cts_change(struct uart_port *uport, bool active) in uart_handle_cts_change() argument
3475 lockdep_assert_held_once(&uport->lock); in uart_handle_cts_change()
3477 uport->icount.cts++; in uart_handle_cts_change()
3479 if (uart_softcts_mode(uport)) { in uart_handle_cts_change()
3480 if (uport->hw_stopped) { in uart_handle_cts_change()
3482 uport->hw_stopped = false; in uart_handle_cts_change()
3483 uport->ops->start_tx(uport); in uart_handle_cts_change()
3484 uart_write_wakeup(uport); in uart_handle_cts_change()
3488 uport->hw_stopped = true; in uart_handle_cts_change()
3489 uport->ops->stop_tx(uport); in uart_handle_cts_change()