Lines Matching refs:uport

100 #define to_sport(uport) container_of(uport, struct sbd_port, port)  argument
232 static unsigned int sbd_tx_empty(struct uart_port *uport) in sbd_tx_empty() argument
234 struct sbd_port *sport = to_sport(uport); in sbd_tx_empty()
239 static unsigned int sbd_get_mctrl(struct uart_port *uport) in sbd_get_mctrl() argument
241 struct sbd_port *sport = to_sport(uport); in sbd_get_mctrl()
245 status >>= (uport->line) % 2; in sbd_get_mctrl()
253 static void sbd_set_mctrl(struct uart_port *uport, unsigned int mctrl) in sbd_set_mctrl() argument
255 struct sbd_port *sport = to_sport(uport); in sbd_set_mctrl()
266 clr <<= (uport->line) % 2; in sbd_set_mctrl()
267 set <<= (uport->line) % 2; in sbd_set_mctrl()
281 static void sbd_stop_tx(struct uart_port *uport) in sbd_stop_tx() argument
283 struct sbd_port *sport = to_sport(uport); in sbd_stop_tx()
289 static void sbd_start_tx(struct uart_port *uport) in sbd_start_tx() argument
291 struct sbd_port *sport = to_sport(uport); in sbd_start_tx()
295 mask = read_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2)); in sbd_start_tx()
297 write_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2), mask); in sbd_start_tx()
304 static void sbd_stop_rx(struct uart_port *uport) in sbd_stop_rx() argument
306 struct sbd_port *sport = to_sport(uport); in sbd_stop_rx()
308 write_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2), 0); in sbd_stop_rx()
311 static void sbd_enable_ms(struct uart_port *uport) in sbd_enable_ms() argument
313 struct sbd_port *sport = to_sport(uport); in sbd_enable_ms()
319 static void sbd_break_ctl(struct uart_port *uport, int break_state) in sbd_break_ctl() argument
321 struct sbd_port *sport = to_sport(uport); in sbd_break_ctl()
332 struct uart_port *uport = &sport->port; in sbd_receive_chars() local
346 icount = &uport->icount; in sbd_receive_chars()
354 if (uart_handle_break(uport)) in sbd_receive_chars()
363 status &= uport->read_status_mask; in sbd_receive_chars()
372 if (uart_handle_sysrq_char(uport, ch)) in sbd_receive_chars()
375 uart_insert_char(uport, status, M_DUART_OVRUN_ERR, ch, flag); in sbd_receive_chars()
378 tty_flip_buffer_push(&uport->state->port); in sbd_receive_chars()
383 struct uart_port *uport = &sport->port; in sbd_transmit_chars() local
411 mask = read_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2)); in sbd_transmit_chars()
413 write_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2), mask); in sbd_transmit_chars()
419 struct uart_port *uport = &sport->port; in sbd_status_handle() local
422 delta = read_sbdshr(sport, R_DUART_INCHREG((uport->line) % 2)); in sbd_status_handle()
423 delta >>= (uport->line) % 2; in sbd_status_handle()
426 uart_handle_cts_change(uport, !(delta & M_DUART_IN_PIN0_VAL)); in sbd_status_handle()
429 uport->icount.dsr++; in sbd_status_handle()
433 wake_up_interruptible(&uport->state->port.delta_msr_wait); in sbd_status_handle()
439 struct uart_port *uport = &sport->port; in sbd_interrupt() local
446 R_DUART_ISRREG((uport->line) % 2)); in sbd_interrupt()
448 R_DUART_IMRREG((uport->line) % 2)); in sbd_interrupt()
467 static int sbd_startup(struct uart_port *uport) in sbd_startup() argument
469 struct sbd_port *sport = to_sport(uport); in sbd_startup()
483 read_sbdshr(sport, R_DUART_INCHREG((uport->line) % 2)); in sbd_startup()
495 write_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2), in sbd_startup()
501 static void sbd_shutdown(struct uart_port *uport) in sbd_shutdown() argument
503 struct sbd_port *sport = to_sport(uport); in sbd_shutdown()
513 struct uart_port *uport = &sport->port; in sbd_init_port() local
527 write_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2), 0); in sbd_init_port()
532 static void sbd_set_termios(struct uart_port *uport, struct ktermios *termios, in sbd_set_termios() argument
535 struct sbd_port *sport = to_sport(uport); in sbd_set_termios()
577 baud = uart_get_baud_rate(uport, termios, old_termios, 1200, 5000000); in sbd_set_termios()
583 uart_update_timeout(uport, termios->c_cflag, baud); in sbd_set_termios()
585 uport->read_status_mask = M_DUART_OVRUN_ERR; in sbd_set_termios()
587 uport->read_status_mask |= M_DUART_FRM_ERR | in sbd_set_termios()
590 uport->read_status_mask |= M_DUART_RCVD_BRK; in sbd_set_termios()
592 uport->ignore_status_mask = 0; in sbd_set_termios()
594 uport->ignore_status_mask |= M_DUART_FRM_ERR | in sbd_set_termios()
597 uport->ignore_status_mask |= M_DUART_RCVD_BRK; in sbd_set_termios()
599 uport->ignore_status_mask |= M_DUART_OVRUN_ERR; in sbd_set_termios()
612 spin_lock(&uport->lock); in sbd_set_termios()
634 spin_unlock(&uport->lock); in sbd_set_termios()
638 static const char *sbd_type(struct uart_port *uport) in sbd_type() argument
643 static void sbd_release_port(struct uart_port *uport) in sbd_release_port() argument
645 struct sbd_port *sport = to_sport(uport); in sbd_release_port()
650 iounmap(uport->membase); in sbd_release_port()
651 uport->membase = NULL; in sbd_release_port()
655 release_mem_region(uport->mapbase, DUART_CHANREG_SPACING); in sbd_release_port()
658 static int sbd_map_port(struct uart_port *uport) in sbd_map_port() argument
661 struct sbd_port *sport = to_sport(uport); in sbd_map_port()
664 if (!uport->membase) in sbd_map_port()
665 uport->membase = ioremap(uport->mapbase, in sbd_map_port()
667 if (!uport->membase) { in sbd_map_port()
677 iounmap(uport->membase); in sbd_map_port()
678 uport->membase = NULL; in sbd_map_port()
685 static int sbd_request_port(struct uart_port *uport) in sbd_request_port() argument
688 struct sbd_duart *duart = to_sport(uport)->duart; in sbd_request_port()
691 if (!request_mem_region(uport->mapbase, DUART_CHANREG_SPACING, in sbd_request_port()
706 ret = sbd_map_port(uport); in sbd_request_port()
714 release_mem_region(uport->mapbase, DUART_CHANREG_SPACING); in sbd_request_port()
720 static void sbd_config_port(struct uart_port *uport, int flags) in sbd_config_port() argument
722 struct sbd_port *sport = to_sport(uport); in sbd_config_port()
725 if (sbd_request_port(uport)) in sbd_config_port()
728 uport->type = PORT_SB1250_DUART; in sbd_config_port()
734 static int sbd_verify_port(struct uart_port *uport, struct serial_struct *ser) in sbd_verify_port() argument
740 if (ser->irq != uport->irq) in sbd_verify_port()
742 if (ser->baud_base != uport->uartclk / 16) in sbd_verify_port()
798 struct uart_port *uport = &sport->port; in sbd_probe_duarts() local
802 uport->irq = SBD_INT(line); in sbd_probe_duarts()
803 uport->uartclk = 100000000 / 20 * 16; in sbd_probe_duarts()
804 uport->fifosize = 16; in sbd_probe_duarts()
805 uport->iotype = UPIO_MEM; in sbd_probe_duarts()
806 uport->flags = UPF_BOOT_AUTOCONF; in sbd_probe_duarts()
807 uport->ops = &sbd_ops; in sbd_probe_duarts()
808 uport->line = line; in sbd_probe_duarts()
809 uport->mapbase = SBD_CHANREGS(line); in sbd_probe_duarts()
810 uport->has_sysrq = IS_ENABLED(CONFIG_SERIAL_SB1250_DUART_CONSOLE); in sbd_probe_duarts()
822 static void sbd_console_putchar(struct uart_port *uport, unsigned char ch) in sbd_console_putchar() argument
824 struct sbd_port *sport = to_sport(uport); in sbd_console_putchar()
836 struct uart_port *uport = &sport->port; in sbd_console_write() local
841 spin_lock_irqsave(&uport->lock, flags); in sbd_console_write()
842 mask = read_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2)); in sbd_console_write()
843 write_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2), in sbd_console_write()
846 spin_unlock_irqrestore(&uport->lock, flags); in sbd_console_write()
851 spin_lock_irqsave(&uport->lock, flags); in sbd_console_write()
855 write_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2), mask); in sbd_console_write()
856 spin_unlock_irqrestore(&uport->lock, flags); in sbd_console_write()
864 struct uart_port *uport = &sport->port; in sbd_console_setup() local
874 ret = sbd_map_port(uport); in sbd_console_setup()
882 return uart_set_options(uport, co, baud, parity, bits, flow); in sbd_console_setup()
936 struct uart_port *uport = &sport->port; in sbd_init() local
939 uart_add_one_port(&sbd_reg, uport); in sbd_init()
953 struct uart_port *uport = &sport->port; in sbd_exit() local
956 uart_remove_one_port(&sbd_reg, uport); in sbd_exit()