Lines Matching refs:port
108 struct uart_port port; member
122 void (*pm)(struct uart_port *port,
226 return __sio_in(up->port.iobase + offset); in sio_in()
231 __sio_out(value, up->port.iobase + offset); in sio_out()
250 static void m32r_sio_stop_tx(struct uart_port *port) in m32r_sio_stop_tx() argument
253 container_of(port, struct uart_sio_port, port); in m32r_sio_stop_tx()
261 static void m32r_sio_start_tx(struct uart_port *port) in m32r_sio_start_tx() argument
265 container_of(port, struct uart_sio_port, port); in m32r_sio_start_tx()
266 struct circ_buf *xmit = &up->port.state->xmit; in m32r_sio_start_tx()
274 up->port.icount.tx++; in m32r_sio_start_tx()
280 container_of(port, struct uart_sio_port, port); in m32r_sio_start_tx()
289 static void m32r_sio_stop_rx(struct uart_port *port) in m32r_sio_stop_rx() argument
292 container_of(port, struct uart_sio_port, port); in m32r_sio_stop_rx()
295 up->port.read_status_mask &= ~UART_LSR_DR; in m32r_sio_stop_rx()
299 static void m32r_sio_enable_ms(struct uart_port *port) in m32r_sio_enable_ms() argument
302 container_of(port, struct uart_sio_port, port); in m32r_sio_enable_ms()
310 struct tty_port *port = &up->port.state->port; in receive_chars() local
318 up->port.icount.rx++; in receive_chars()
327 up->port.icount.brk++; in receive_chars()
334 if (uart_handle_break(&up->port)) in receive_chars()
337 up->port.icount.parity++; in receive_chars()
339 up->port.icount.frame++; in receive_chars()
341 up->port.icount.overrun++; in receive_chars()
346 *status &= up->port.read_status_mask; in receive_chars()
348 if (up->port.line == up->port.cons->index) { in receive_chars()
362 if (uart_handle_sysrq_char(&up->port, ch)) in receive_chars()
364 if ((*status & up->port.ignore_status_mask) == 0) in receive_chars()
365 tty_insert_flip_char(port, ch, flag); in receive_chars()
373 tty_insert_flip_char(port, 0, TTY_OVERRUN); in receive_chars()
379 spin_unlock(&up->port.lock); in receive_chars()
380 tty_flip_buffer_push(port); in receive_chars()
381 spin_lock(&up->port.lock); in receive_chars()
386 struct circ_buf *xmit = &up->port.state->xmit; in transmit_chars()
389 if (up->port.x_char) { in transmit_chars()
391 serial_out(up, UART_TX, up->port.x_char); in transmit_chars()
393 up->port.icount.tx++; in transmit_chars()
394 up->port.x_char = 0; in transmit_chars()
397 if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) { in transmit_chars()
398 m32r_sio_stop_tx(&up->port); in transmit_chars()
402 count = up->port.fifosize; in transmit_chars()
406 up->port.icount.tx++; in transmit_chars()
414 uart_write_wakeup(&up->port); in transmit_chars()
419 m32r_sio_stop_tx(&up->port); in transmit_chars()
477 spin_lock(&up->port.lock); in m32r_sio_interrupt()
479 spin_unlock(&up->port.lock); in m32r_sio_interrupt()
526 struct irq_info *i = irq_lists + up->port.irq; in serial_link_irq_chain()
541 ret = request_irq(up->port.irq, m32r_sio_interrupt, in serial_link_irq_chain()
543 ret |= request_irq(up->port.irq + 1, m32r_sio_interrupt, in serial_link_irq_chain()
554 struct irq_info *i = irq_lists + up->port.irq; in serial_unlink_irq_chain()
559 free_irq(up->port.irq, i); in serial_unlink_irq_chain()
560 free_irq(up->port.irq + 1, i); in serial_unlink_irq_chain()
577 spin_lock(&up->port.lock); in m32r_sio_timeout()
579 spin_unlock(&up->port.lock); in m32r_sio_timeout()
582 timeout = up->port.timeout; in m32r_sio_timeout()
587 static unsigned int m32r_sio_tx_empty(struct uart_port *port) in m32r_sio_tx_empty() argument
590 container_of(port, struct uart_sio_port, port); in m32r_sio_tx_empty()
594 spin_lock_irqsave(&up->port.lock, flags); in m32r_sio_tx_empty()
596 spin_unlock_irqrestore(&up->port.lock, flags); in m32r_sio_tx_empty()
601 static unsigned int m32r_sio_get_mctrl(struct uart_port *port) in m32r_sio_get_mctrl() argument
606 static void m32r_sio_set_mctrl(struct uart_port *port, unsigned int mctrl) in m32r_sio_set_mctrl() argument
611 static void m32r_sio_break_ctl(struct uart_port *port, int break_state) in m32r_sio_break_ctl() argument
616 static int m32r_sio_startup(struct uart_port *port) in m32r_sio_startup() argument
619 container_of(port, struct uart_sio_port, port); in m32r_sio_startup()
629 if (!up->port.irq) { in m32r_sio_startup()
630 unsigned int timeout = up->port.timeout; in m32r_sio_startup()
660 static void m32r_sio_shutdown(struct uart_port *port) in m32r_sio_shutdown() argument
663 container_of(port, struct uart_sio_port, port); in m32r_sio_shutdown()
677 if (!up->port.irq) in m32r_sio_shutdown()
683 static unsigned int m32r_sio_get_divisor(struct uart_port *port, in m32r_sio_get_divisor() argument
686 return uart_get_divisor(port, baud); in m32r_sio_get_divisor()
689 static void m32r_sio_set_termios(struct uart_port *port, in m32r_sio_set_termios() argument
693 container_of(port, struct uart_sio_port, port); in m32r_sio_set_termios()
729 baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/4); in m32r_sio_set_termios()
731 baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16); in m32r_sio_set_termios()
733 quot = m32r_sio_get_divisor(port, baud); in m32r_sio_set_termios()
739 spin_lock_irqsave(&up->port.lock, flags); in m32r_sio_set_termios()
746 uart_update_timeout(port, termios->c_cflag, baud); in m32r_sio_set_termios()
748 up->port.read_status_mask = UART_LSR_OE | UART_LSR_THRE | UART_LSR_DR; in m32r_sio_set_termios()
750 up->port.read_status_mask |= UART_LSR_FE | UART_LSR_PE; in m32r_sio_set_termios()
752 up->port.read_status_mask |= UART_LSR_BI; in m32r_sio_set_termios()
757 up->port.ignore_status_mask = 0; in m32r_sio_set_termios()
759 up->port.ignore_status_mask |= UART_LSR_PE | UART_LSR_FE; in m32r_sio_set_termios()
761 up->port.ignore_status_mask |= UART_LSR_BI; in m32r_sio_set_termios()
767 up->port.ignore_status_mask |= UART_LSR_OE; in m32r_sio_set_termios()
774 up->port.ignore_status_mask |= UART_LSR_DR; in m32r_sio_set_termios()
780 if (UART_ENABLE_MS(&up->port, termios->c_cflag)) in m32r_sio_set_termios()
786 spin_unlock_irqrestore(&up->port.lock, flags); in m32r_sio_set_termios()
789 static void m32r_sio_pm(struct uart_port *port, unsigned int state, in m32r_sio_pm() argument
793 container_of(port, struct uart_sio_port, port); in m32r_sio_pm()
796 up->pm(port, state, oldstate); in m32r_sio_pm()
807 unsigned int size = 8 << up->port.regshift; in m32r_sio_request_std_resource()
813 switch (up->port.iotype) { in m32r_sio_request_std_resource()
815 if (up->port.mapbase) { in m32r_sio_request_std_resource()
817 *res = request_mem_region(up->port.mapbase, size, "serial"); in m32r_sio_request_std_resource()
819 start = up->port.mapbase; in m32r_sio_request_std_resource()
828 *res = request_region(up->port.iobase, size, "serial"); in m32r_sio_request_std_resource()
836 static void m32r_sio_release_port(struct uart_port *port) in m32r_sio_release_port() argument
839 container_of(port, struct uart_sio_port, port); in m32r_sio_release_port()
842 size <<= up->port.regshift; in m32r_sio_release_port()
844 switch (up->port.iotype) { in m32r_sio_release_port()
846 if (up->port.mapbase) { in m32r_sio_release_port()
850 iounmap(up->port.membase); in m32r_sio_release_port()
851 up->port.membase = NULL; in m32r_sio_release_port()
853 start = up->port.mapbase; in m32r_sio_release_port()
857 release_mem_region(start, 8 << up->port.regshift); in m32r_sio_release_port()
862 start = up->port.iobase; in m32r_sio_release_port()
866 release_region(start + offset, 8 << up->port.regshift); in m32r_sio_release_port()
874 static int m32r_sio_request_port(struct uart_port *port) in m32r_sio_request_port() argument
877 container_of(port, struct uart_sio_port, port); in m32r_sio_request_port()
886 if (ret == 0 && up->port.flags & UPF_IOREMAP) { in m32r_sio_request_port()
889 up->port.membase = ioremap(up->port.mapbase, size); in m32r_sio_request_port()
890 if (!up->port.membase) in m32r_sio_request_port()
902 static void m32r_sio_config_port(struct uart_port *port, int unused) in m32r_sio_config_port() argument
905 container_of(port, struct uart_sio_port, port); in m32r_sio_config_port()
908 spin_lock_irqsave(&up->port.lock, flags); in m32r_sio_config_port()
910 up->port.fifosize = 1; in m32r_sio_config_port()
912 spin_unlock_irqrestore(&up->port.lock, flags); in m32r_sio_config_port()
916 m32r_sio_verify_port(struct uart_port *port, struct serial_struct *ser) in m32r_sio_verify_port() argument
956 up->port.iobase = old_serial_port[i].port; in m32r_sio_init_ports()
957 up->port.irq = irq_canonicalize(old_serial_port[i].irq); in m32r_sio_init_ports()
958 up->port.uartclk = old_serial_port[i].baud_base * 16; in m32r_sio_init_ports()
959 up->port.flags = old_serial_port[i].flags; in m32r_sio_init_ports()
960 up->port.membase = old_serial_port[i].iomem_base; in m32r_sio_init_ports()
961 up->port.iotype = old_serial_port[i].io_type; in m32r_sio_init_ports()
962 up->port.regshift = old_serial_port[i].iomem_reg_shift; in m32r_sio_init_ports()
963 up->port.ops = &m32r_sio_pops; in m32r_sio_init_ports()
976 up->port.line = i; in m32r_sio_register_ports()
977 up->port.ops = &m32r_sio_pops; in m32r_sio_register_ports()
984 uart_add_one_port(drv, &up->port); in m32r_sio_register_ports()
1007 if (up->port.flags & UPF_CONS_FLOW) { in wait_for_xmitr()
1014 static void m32r_sio_console_putchar(struct uart_port *port, int ch) in m32r_sio_console_putchar() argument
1017 container_of(port, struct uart_sio_port, port); in m32r_sio_console_putchar()
1041 uart_console_write(&up->port, s, count, m32r_sio_console_putchar); in m32r_sio_console_write()
1053 struct uart_port *port; in m32r_sio_console_setup() local
1066 port = &m32r_sio_ports[co->index].port; in m32r_sio_console_setup()
1071 spin_lock_init(&port->lock); in m32r_sio_console_setup()
1076 return uart_set_options(port, co, baud, parity, bits, flow); in m32r_sio_console_setup()
1123 uart_suspend_port(&m32r_sio_reg, &m32r_sio_ports[line].port); in m32r_sio_suspend_port()
1134 uart_resume_port(&m32r_sio_reg, &m32r_sio_ports[line].port); in m32r_sio_resume_port()
1158 uart_remove_one_port(&m32r_sio_reg, &m32r_sio_ports[i].port); in m32r_sio_exit()