Lines Matching refs:uport
109 #define to_sport(uport) container_of(uport, struct sbd_port, port) argument
241 static unsigned int sbd_tx_empty(struct uart_port *uport) in sbd_tx_empty() argument
243 struct sbd_port *sport = to_sport(uport); in sbd_tx_empty()
248 static unsigned int sbd_get_mctrl(struct uart_port *uport) in sbd_get_mctrl() argument
250 struct sbd_port *sport = to_sport(uport); in sbd_get_mctrl()
254 status >>= (uport->line) % 2; in sbd_get_mctrl()
262 static void sbd_set_mctrl(struct uart_port *uport, unsigned int mctrl) in sbd_set_mctrl() argument
264 struct sbd_port *sport = to_sport(uport); in sbd_set_mctrl()
275 clr <<= (uport->line) % 2; in sbd_set_mctrl()
276 set <<= (uport->line) % 2; in sbd_set_mctrl()
290 static void sbd_stop_tx(struct uart_port *uport) in sbd_stop_tx() argument
292 struct sbd_port *sport = to_sport(uport); in sbd_stop_tx()
298 static void sbd_start_tx(struct uart_port *uport) in sbd_start_tx() argument
300 struct sbd_port *sport = to_sport(uport); in sbd_start_tx()
304 mask = read_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2)); in sbd_start_tx()
306 write_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2), mask); in sbd_start_tx()
313 static void sbd_stop_rx(struct uart_port *uport) in sbd_stop_rx() argument
315 struct sbd_port *sport = to_sport(uport); in sbd_stop_rx()
317 write_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2), 0); in sbd_stop_rx()
320 static void sbd_enable_ms(struct uart_port *uport) in sbd_enable_ms() argument
322 struct sbd_port *sport = to_sport(uport); in sbd_enable_ms()
328 static void sbd_break_ctl(struct uart_port *uport, int break_state) in sbd_break_ctl() argument
330 struct sbd_port *sport = to_sport(uport); in sbd_break_ctl()
341 struct uart_port *uport = &sport->port; in sbd_receive_chars() local
355 icount = &uport->icount; in sbd_receive_chars()
363 if (uart_handle_break(uport)) in sbd_receive_chars()
372 status &= uport->read_status_mask; in sbd_receive_chars()
381 if (uart_handle_sysrq_char(uport, ch)) in sbd_receive_chars()
384 uart_insert_char(uport, status, M_DUART_OVRUN_ERR, ch, flag); in sbd_receive_chars()
387 tty_flip_buffer_push(&uport->state->port); in sbd_receive_chars()
392 struct uart_port *uport = &sport->port; in sbd_transmit_chars() local
421 mask = read_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2)); in sbd_transmit_chars()
423 write_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2), mask); in sbd_transmit_chars()
429 struct uart_port *uport = &sport->port; in sbd_status_handle() local
432 delta = read_sbdshr(sport, R_DUART_INCHREG((uport->line) % 2)); in sbd_status_handle()
433 delta >>= (uport->line) % 2; in sbd_status_handle()
436 uart_handle_cts_change(uport, !(delta & M_DUART_IN_PIN0_VAL)); in sbd_status_handle()
439 uport->icount.dsr++; in sbd_status_handle()
443 wake_up_interruptible(&uport->state->port.delta_msr_wait); in sbd_status_handle()
449 struct uart_port *uport = &sport->port; in sbd_interrupt() local
456 R_DUART_ISRREG((uport->line) % 2)); in sbd_interrupt()
458 R_DUART_IMRREG((uport->line) % 2)); in sbd_interrupt()
477 static int sbd_startup(struct uart_port *uport) in sbd_startup() argument
479 struct sbd_port *sport = to_sport(uport); in sbd_startup()
493 read_sbdshr(sport, R_DUART_INCHREG((uport->line) % 2)); in sbd_startup()
505 write_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2), in sbd_startup()
511 static void sbd_shutdown(struct uart_port *uport) in sbd_shutdown() argument
513 struct sbd_port *sport = to_sport(uport); in sbd_shutdown()
523 struct uart_port *uport = &sport->port; in sbd_init_port() local
537 write_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2), 0); in sbd_init_port()
542 static void sbd_set_termios(struct uart_port *uport, struct ktermios *termios, in sbd_set_termios() argument
545 struct sbd_port *sport = to_sport(uport); in sbd_set_termios()
587 baud = uart_get_baud_rate(uport, termios, old_termios, 1200, 5000000); in sbd_set_termios()
593 uart_update_timeout(uport, termios->c_cflag, baud); in sbd_set_termios()
595 uport->read_status_mask = M_DUART_OVRUN_ERR; in sbd_set_termios()
597 uport->read_status_mask |= M_DUART_FRM_ERR | in sbd_set_termios()
600 uport->read_status_mask |= M_DUART_RCVD_BRK; in sbd_set_termios()
602 uport->ignore_status_mask = 0; in sbd_set_termios()
604 uport->ignore_status_mask |= M_DUART_FRM_ERR | in sbd_set_termios()
607 uport->ignore_status_mask |= M_DUART_RCVD_BRK; in sbd_set_termios()
609 uport->ignore_status_mask |= M_DUART_OVRUN_ERR; in sbd_set_termios()
622 spin_lock(&uport->lock); in sbd_set_termios()
644 spin_unlock(&uport->lock); in sbd_set_termios()
648 static const char *sbd_type(struct uart_port *uport) in sbd_type() argument
653 static void sbd_release_port(struct uart_port *uport) in sbd_release_port() argument
655 struct sbd_port *sport = to_sport(uport); in sbd_release_port()
661 iounmap(uport->membase); in sbd_release_port()
662 uport->membase = NULL; in sbd_release_port()
667 release_mem_region(uport->mapbase, DUART_CHANREG_SPACING); in sbd_release_port()
670 static int sbd_map_port(struct uart_port *uport) in sbd_map_port() argument
673 struct sbd_port *sport = to_sport(uport); in sbd_map_port()
676 if (!uport->membase) in sbd_map_port()
677 uport->membase = ioremap_nocache(uport->mapbase, in sbd_map_port()
679 if (!uport->membase) { in sbd_map_port()
689 iounmap(uport->membase); in sbd_map_port()
690 uport->membase = NULL; in sbd_map_port()
697 static int sbd_request_port(struct uart_port *uport) in sbd_request_port() argument
700 struct sbd_duart *duart = to_sport(uport)->duart; in sbd_request_port()
704 if (!request_mem_region(uport->mapbase, DUART_CHANREG_SPACING, in sbd_request_port()
719 ret = sbd_map_port(uport); in sbd_request_port()
728 release_mem_region(uport->mapbase, DUART_CHANREG_SPACING); in sbd_request_port()
734 static void sbd_config_port(struct uart_port *uport, int flags) in sbd_config_port() argument
736 struct sbd_port *sport = to_sport(uport); in sbd_config_port()
739 if (sbd_request_port(uport)) in sbd_config_port()
742 uport->type = PORT_SB1250_DUART; in sbd_config_port()
748 static int sbd_verify_port(struct uart_port *uport, struct serial_struct *ser) in sbd_verify_port() argument
754 if (ser->irq != uport->irq) in sbd_verify_port()
756 if (ser->baud_base != uport->uartclk / 16) in sbd_verify_port()
812 struct uart_port *uport = &sport->port; in sbd_probe_duarts() local
816 uport->irq = SBD_INT(line); in sbd_probe_duarts()
817 uport->uartclk = 100000000 / 20 * 16; in sbd_probe_duarts()
818 uport->fifosize = 16; in sbd_probe_duarts()
819 uport->iotype = UPIO_MEM; in sbd_probe_duarts()
820 uport->flags = UPF_BOOT_AUTOCONF; in sbd_probe_duarts()
821 uport->ops = &sbd_ops; in sbd_probe_duarts()
822 uport->line = line; in sbd_probe_duarts()
823 uport->mapbase = SBD_CHANREGS(line); in sbd_probe_duarts()
835 static void sbd_console_putchar(struct uart_port *uport, int ch) in sbd_console_putchar() argument
837 struct sbd_port *sport = to_sport(uport); in sbd_console_putchar()
849 struct uart_port *uport = &sport->port; in sbd_console_write() local
854 spin_lock_irqsave(&uport->lock, flags); in sbd_console_write()
855 mask = read_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2)); in sbd_console_write()
856 write_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2), in sbd_console_write()
859 spin_unlock_irqrestore(&uport->lock, flags); in sbd_console_write()
864 spin_lock_irqsave(&uport->lock, flags); in sbd_console_write()
868 write_sbdshr(sport, R_DUART_IMRREG((uport->line) % 2), mask); in sbd_console_write()
869 spin_unlock_irqrestore(&uport->lock, flags); in sbd_console_write()
877 struct uart_port *uport = &sport->port; in sbd_console_setup() local
887 ret = sbd_map_port(uport); in sbd_console_setup()
895 return uart_set_options(uport, co, baud, parity, bits, flow); in sbd_console_setup()
949 struct uart_port *uport = &sport->port; in sbd_init() local
952 uart_add_one_port(&sbd_reg, uport); in sbd_init()
966 struct uart_port *uport = &sport->port; in sbd_exit() local
969 uart_remove_one_port(&sbd_reg, uport); in sbd_exit()