Lines Matching refs:port
52 struct uart_port port; /* Generic UART port */ member
114 struct tty_port *port = NULL; in receive_chars() local
121 if (up->port.state != NULL) /* Unopened serial console */ in receive_chars()
122 port = &up->port.state->port; in receive_chars()
139 return port; in receive_chars()
157 (up->port.line == up->port.cons->index)) in receive_chars()
164 up->port.icount.brk++; in receive_chars()
165 uart_handle_break(&up->port); in receive_chars()
173 up->port.icount.rx++; in receive_chars()
185 up->port.icount.brk++; in receive_chars()
192 if (uart_handle_break(&up->port)) in receive_chars()
195 up->port.icount.parity++; in receive_chars()
197 up->port.icount.frame++; in receive_chars()
199 up->port.icount.overrun++; in receive_chars()
204 stat->sreg.isr0 &= (up->port.read_status_mask & 0xff); in receive_chars()
205 stat->sreg.isr1 &= ((up->port.read_status_mask >> 8) & 0xff); in receive_chars()
215 if (uart_handle_sysrq_char(&up->port, ch) || !port) in receive_chars()
218 if ((stat->sreg.isr0 & (up->port.ignore_status_mask & 0xff)) == 0 && in receive_chars()
219 (stat->sreg.isr1 & ((up->port.ignore_status_mask >> 8) & 0xff)) == 0) in receive_chars()
220 tty_insert_flip_char(port, ch, flag); in receive_chars()
222 tty_insert_flip_char(port, 0, TTY_OVERRUN); in receive_chars()
228 return port; in receive_chars()
237 struct circ_buf *xmit = &up->port.state->xmit; in transmit_chars()
257 if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) { in transmit_chars()
269 for (i = 0; i < up->port.fifosize; i++) { in transmit_chars()
273 up->port.icount.tx++; in transmit_chars()
283 uart_write_wakeup(&up->port); in transmit_chars()
286 sunsab_stop_tx(&up->port); in transmit_chars()
293 uart_handle_dcd_change(&up->port, in check_status()
297 uart_handle_cts_change(&up->port, in check_status()
302 up->port.icount.dsr++; in check_status()
305 wake_up_interruptible(&up->port.state->port.delta_msr_wait); in check_status()
311 struct tty_port *port = NULL; in sunsab_interrupt() local
316 spin_lock_irqsave(&up->port.lock, flags); in sunsab_interrupt()
329 port = receive_chars(up, &status); in sunsab_interrupt()
337 spin_unlock_irqrestore(&up->port.lock, flags); in sunsab_interrupt()
339 if (port) in sunsab_interrupt()
340 tty_flip_buffer_push(port); in sunsab_interrupt()
346 static unsigned int sunsab_tx_empty(struct uart_port *port) in sunsab_tx_empty() argument
349 container_of(port, struct uart_sunsab_port, port); in sunsab_tx_empty()
362 static void sunsab_set_mctrl(struct uart_port *port, unsigned int mctrl) in sunsab_set_mctrl() argument
365 container_of(port, struct uart_sunsab_port, port); in sunsab_set_mctrl()
386 static unsigned int sunsab_get_mctrl(struct uart_port *port) in sunsab_get_mctrl() argument
389 container_of(port, struct uart_sunsab_port, port); in sunsab_get_mctrl()
408 static void sunsab_stop_tx(struct uart_port *port) in sunsab_stop_tx() argument
411 container_of(port, struct uart_sunsab_port, port); in sunsab_stop_tx()
437 static void sunsab_start_tx(struct uart_port *port) in sunsab_start_tx() argument
440 container_of(port, struct uart_sunsab_port, port); in sunsab_start_tx()
441 struct circ_buf *xmit = &up->port.state->xmit; in sunsab_start_tx()
444 if (uart_circ_empty(xmit) || uart_tx_stopped(port)) in sunsab_start_tx()
456 for (i = 0; i < up->port.fifosize; i++) { in sunsab_start_tx()
460 up->port.icount.tx++; in sunsab_start_tx()
471 static void sunsab_send_xchar(struct uart_port *port, char ch) in sunsab_send_xchar() argument
474 container_of(port, struct uart_sunsab_port, port); in sunsab_send_xchar()
480 spin_lock_irqsave(&up->port.lock, flags); in sunsab_send_xchar()
485 spin_unlock_irqrestore(&up->port.lock, flags); in sunsab_send_xchar()
489 static void sunsab_stop_rx(struct uart_port *port) in sunsab_stop_rx() argument
492 container_of(port, struct uart_sunsab_port, port); in sunsab_stop_rx()
499 static void sunsab_break_ctl(struct uart_port *port, int break_state) in sunsab_break_ctl() argument
502 container_of(port, struct uart_sunsab_port, port); in sunsab_break_ctl()
506 spin_lock_irqsave(&up->port.lock, flags); in sunsab_break_ctl()
519 spin_unlock_irqrestore(&up->port.lock, flags); in sunsab_break_ctl()
523 static int sunsab_startup(struct uart_port *port) in sunsab_startup() argument
526 container_of(port, struct uart_sunsab_port, port); in sunsab_startup()
529 int err = request_irq(up->port.irq, sunsab_interrupt, in sunsab_startup()
534 spin_lock_irqsave(&up->port.lock, flags); in sunsab_startup()
589 spin_unlock_irqrestore(&up->port.lock, flags); in sunsab_startup()
595 static void sunsab_shutdown(struct uart_port *port) in sunsab_shutdown() argument
598 container_of(port, struct uart_sunsab_port, port); in sunsab_shutdown()
601 spin_lock_irqsave(&up->port.lock, flags); in sunsab_shutdown()
635 spin_unlock_irqrestore(&up->port.lock, flags); in sunsab_shutdown()
636 free_irq(up->port.irq, up); in sunsab_shutdown()
732 up->port.read_status_mask = (SAB82532_ISR0_TCD | SAB82532_ISR0_TIME | in sunsab_convert_to_sab()
735 up->port.read_status_mask |= (SAB82532_ISR1_CSC | in sunsab_convert_to_sab()
739 up->port.read_status_mask |= (SAB82532_ISR0_PERR | in sunsab_convert_to_sab()
742 up->port.read_status_mask |= (SAB82532_ISR1_BRK << 8); in sunsab_convert_to_sab()
747 up->port.ignore_status_mask = 0; in sunsab_convert_to_sab()
749 up->port.ignore_status_mask |= (SAB82532_ISR0_PERR | in sunsab_convert_to_sab()
752 up->port.ignore_status_mask |= (SAB82532_ISR1_BRK << 8); in sunsab_convert_to_sab()
758 up->port.ignore_status_mask |= SAB82532_ISR0_RFO; in sunsab_convert_to_sab()
765 up->port.ignore_status_mask |= (SAB82532_ISR0_RPF | in sunsab_convert_to_sab()
768 uart_update_timeout(&up->port, cflag, in sunsab_convert_to_sab()
769 (up->port.uartclk / (16 * quot))); in sunsab_convert_to_sab()
781 static void sunsab_set_termios(struct uart_port *port, struct ktermios *termios, in sunsab_set_termios() argument
785 container_of(port, struct uart_sunsab_port, port); in sunsab_set_termios()
787 unsigned int baud = uart_get_baud_rate(port, termios, old, 0, 4000000); in sunsab_set_termios()
788 unsigned int quot = uart_get_divisor(port, baud); in sunsab_set_termios()
790 spin_lock_irqsave(&up->port.lock, flags); in sunsab_set_termios()
792 spin_unlock_irqrestore(&up->port.lock, flags); in sunsab_set_termios()
795 static const char *sunsab_type(struct uart_port *port) in sunsab_type() argument
797 struct uart_sunsab_port *up = (void *)port; in sunsab_type()
804 static void sunsab_release_port(struct uart_port *port) in sunsab_release_port() argument
808 static int sunsab_request_port(struct uart_port *port) in sunsab_request_port() argument
813 static void sunsab_config_port(struct uart_port *port, int flags) in sunsab_config_port() argument
817 static int sunsab_verify_port(struct uart_port *port, struct serial_struct *ser) in sunsab_verify_port() argument
852 static void sunsab_console_putchar(struct uart_port *port, int c) in sunsab_console_putchar() argument
855 container_of(port, struct uart_sunsab_port, port); in sunsab_console_putchar()
867 if (up->port.sysrq || oops_in_progress) in sunsab_console_write()
868 locked = spin_trylock_irqsave(&up->port.lock, flags); in sunsab_console_write()
870 spin_lock_irqsave(&up->port.lock, flags); in sunsab_console_write()
872 uart_console_write(&up->port, s, n, sunsab_console_putchar); in sunsab_console_write()
876 spin_unlock_irqrestore(&up->port.lock, flags); in sunsab_console_write()
891 if (up->port.type != PORT_SUNSAB) in sunsab_console_setup()
897 sunserial_console_termios(con, up->port.dev->of_node); in sunsab_console_setup()
918 spin_lock_init(&up->port.lock); in sunsab_console_setup()
923 sunsab_startup(&up->port); in sunsab_console_setup()
925 spin_lock_irqsave(&up->port.lock, flags); in sunsab_console_setup()
939 quot = uart_get_divisor(&up->port, baud); in sunsab_console_setup()
941 sunsab_set_mctrl(&up->port, TIOCM_DTR | TIOCM_RTS); in sunsab_console_setup()
943 spin_unlock_irqrestore(&up->port.lock, flags); in sunsab_console_setup()
972 up->port.line = line; in sunsab_init_one()
973 up->port.dev = &op->dev; in sunsab_init_one()
975 up->port.mapbase = op->resource[0].start + offset; in sunsab_init_one()
976 up->port.membase = of_ioremap(&op->resource[0], offset, in sunsab_init_one()
979 if (!up->port.membase) in sunsab_init_one()
981 up->regs = (union sab82532_async_regs __iomem *) up->port.membase; in sunsab_init_one()
983 up->port.irq = op->archdata.irqs[0]; in sunsab_init_one()
985 up->port.fifosize = SAB82532_XMIT_FIFO_SIZE; in sunsab_init_one()
986 up->port.iotype = UPIO_MEM; in sunsab_init_one()
990 up->port.ops = &sunsab_pops; in sunsab_init_one()
991 up->port.type = PORT_SUNSAB; in sunsab_init_one()
992 up->port.uartclk = SAB_BASE_BAUD; in sunsab_init_one()
997 if ((up->port.line & 0x1) == 0) { in sunsab_init_one()
1041 &sunsab_reg, up[0].port.line, in sab_probe()
1045 &sunsab_reg, up[1].port.line, in sab_probe()
1048 err = uart_add_one_port(&sunsab_reg, &up[0].port); in sab_probe()
1052 err = uart_add_one_port(&sunsab_reg, &up[1].port); in sab_probe()
1063 uart_remove_one_port(&sunsab_reg, &up[0].port); in sab_probe()
1066 up[1].port.membase, in sab_probe()
1070 up[0].port.membase, in sab_probe()
1080 uart_remove_one_port(&sunsab_reg, &up[1].port); in sab_remove()
1081 uart_remove_one_port(&sunsab_reg, &up[0].port); in sab_remove()
1083 up[1].port.membase, in sab_remove()
1086 up[0].port.membase, in sab_remove()