8250_port.c uses port->mutex to mutually exclude ->fcr changes serial core: mutually excluded operations guaranteed by port->mutex ->config_port() ->set_termios() uart_configure_port() uart_resume_port() uart_suspend_port() uart_open() => uart_startup() => uart_port_startup uart_hangup() => uart_shutdown() ** too much coverage ** uart_close() => uart_shutdown() ** see uart_close.analysis ** uart_break_ctl() uart_tiocmset() uart_tiocmget() uart_add_one_port() ** most of this including tty_port_register_device_attr ** /* ioctls */ uart_get_info() // TIOCGSERIAL uart_set_info() // TIOCSSERIAL uart_do_autoconfig() // TIOCSERCONFIG uart_get_lsr_info() // TIOCSERGETLSR uart_get_rs485_config // TIOCGRS485 uart_set_rs485_config // TIOCSRS485 // any serial driver ioctl uart_change_pm() link/unlink uart_state <=> uart_port access to uart_port->flags tty_port_tty_set() for uart == incidental TODO TIOCMIWAIT handling is messy; simplify