Lines Matching refs:port
26 struct uart_port port; member
43 static void cris_serial_port_init(struct uart_port *port, int line);
44 static void etraxfs_uart_stop_rx(struct uart_port *port);
45 static inline void etraxfs_uart_start_tx_bottom(struct uart_port *port);
92 struct uart_port *port; in cris_console_setup() local
100 port = &etraxfs_uart_ports[co->index]->port; in cris_console_setup()
101 console_port = port; in cris_console_setup()
108 cris_serial_port_init(port, co->index); in cris_console_setup()
109 uart_set_options(port, co, baud, parity, bits, flow); in cris_console_setup()
191 static void etraxfs_uart_send_xchar(struct uart_port *port, char ch) in etraxfs_uart_send_xchar() argument
193 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_send_xchar()
207 spin_lock_irqsave(&port->lock, flags); in etraxfs_uart_send_xchar()
209 spin_unlock_irqrestore(&port->lock, flags); in etraxfs_uart_send_xchar()
210 spin_lock_irqsave(&port->lock, flags); in etraxfs_uart_send_xchar()
232 up->port.icount.tx++; in etraxfs_uart_send_xchar()
264 spin_unlock_irqrestore(&port->lock, flags); in etraxfs_uart_send_xchar()
271 static void etraxfs_uart_start_tx(struct uart_port *port) in etraxfs_uart_start_tx() argument
273 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_start_tx()
282 etraxfs_uart_start_tx_bottom(port); in etraxfs_uart_start_tx()
285 static inline void etraxfs_uart_start_tx_bottom(struct uart_port *port) in etraxfs_uart_start_tx_bottom() argument
287 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_start_tx_bottom()
310 static void etraxfs_uart_stop_tx(struct uart_port *port) in etraxfs_uart_stop_tx() argument
312 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_stop_tx()
358 static void etraxfs_uart_stop_rx(struct uart_port *port) in etraxfs_uart_stop_rx() argument
360 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_stop_rx()
368 static unsigned int etraxfs_uart_tx_empty(struct uart_port *port) in etraxfs_uart_tx_empty() argument
370 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_tx_empty()
375 spin_lock_irqsave(&up->port.lock, flags); in etraxfs_uart_tx_empty()
380 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_tx_empty()
383 static unsigned int etraxfs_uart_get_mctrl(struct uart_port *port) in etraxfs_uart_get_mctrl() argument
385 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_get_mctrl()
396 static void etraxfs_uart_set_mctrl(struct uart_port *port, unsigned int mctrl) in etraxfs_uart_set_mctrl() argument
398 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_set_mctrl()
404 static void etraxfs_uart_break_ctl(struct uart_port *port, int break_state) in etraxfs_uart_break_ctl() argument
406 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_break_ctl()
412 spin_lock_irqsave(&up->port.lock, flags); in etraxfs_uart_break_ctl()
444 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_break_ctl()
451 struct circ_buf *xmit = &up->port.state->xmit; in transmit_chars_no_dma()
457 if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) { in transmit_chars_no_dma()
478 up->port.icount.tx++; in transmit_chars_no_dma()
485 uart_write_wakeup(&up->port); in transmit_chars_no_dma()
492 struct tty_port *port; in receive_chars_no_dma() local
499 icount = &up->port.icount; in receive_chars_no_dma()
500 port = &up->port.state->port; in receive_chars_no_dma()
532 if (!tty_insert_flip_char(port, stat_din.data, flag)) in receive_chars_no_dma()
536 spin_unlock(&up->port.lock); in receive_chars_no_dma()
537 tty_flip_buffer_push(port); in receive_chars_no_dma()
538 spin_lock(&up->port.lock); in receive_chars_no_dma()
548 spin_lock(&up->port.lock); in ser_interrupt()
571 spin_unlock(&up->port.lock); in ser_interrupt()
576 static int etraxfs_uart_get_poll_char(struct uart_port *port) in etraxfs_uart_get_poll_char() argument
580 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_get_poll_char()
593 static void etraxfs_uart_put_poll_char(struct uart_port *port, in etraxfs_uart_put_poll_char() argument
597 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_put_poll_char()
606 static int etraxfs_uart_startup(struct uart_port *port) in etraxfs_uart_startup() argument
608 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_startup()
614 if (request_irq(etraxfs_uart_ports[port->line]->irq, ser_interrupt, in etraxfs_uart_startup()
615 0, DRV_NAME, etraxfs_uart_ports[port->line])) in etraxfs_uart_startup()
616 panic("irq ser%d", port->line); in etraxfs_uart_startup()
618 spin_lock_irqsave(&up->port.lock, flags); in etraxfs_uart_startup()
622 etraxfs_uart_set_mctrl(&up->port, up->port.mctrl); in etraxfs_uart_startup()
624 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_startup()
629 static void etraxfs_uart_shutdown(struct uart_port *port) in etraxfs_uart_shutdown() argument
631 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_shutdown()
634 spin_lock_irqsave(&up->port.lock, flags); in etraxfs_uart_shutdown()
636 etraxfs_uart_stop_tx(port); in etraxfs_uart_shutdown()
637 etraxfs_uart_stop_rx(port); in etraxfs_uart_shutdown()
639 free_irq(etraxfs_uart_ports[port->line]->irq, in etraxfs_uart_shutdown()
640 etraxfs_uart_ports[port->line]); in etraxfs_uart_shutdown()
642 etraxfs_uart_set_mctrl(&up->port, up->port.mctrl); in etraxfs_uart_shutdown()
644 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_shutdown()
649 etraxfs_uart_set_termios(struct uart_port *port, struct ktermios *termios, in etraxfs_uart_set_termios() argument
652 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_set_termios()
706 if ((port != console_port) || old) in etraxfs_uart_set_termios()
707 baud = uart_get_baud_rate(port, termios, old, 0, in etraxfs_uart_set_termios()
708 port->uartclk / 8); in etraxfs_uart_set_termios()
760 spin_lock_irqsave(&port->lock, flags); in etraxfs_uart_set_termios()
766 uart_update_timeout(port, termios->c_cflag, port->uartclk/8); in etraxfs_uart_set_termios()
778 if (up->port.state && up->port.state->port.tty && in etraxfs_uart_set_termios()
779 (up->port.state->port.tty->termios.c_iflag & IXON)) { in etraxfs_uart_set_termios()
780 xoff.chr = STOP_CHAR(up->port.state->port.tty); in etraxfs_uart_set_termios()
794 etraxfs_uart_set_mctrl(&up->port, up->port.mctrl); in etraxfs_uart_set_termios()
795 spin_unlock_irqrestore(&up->port.lock, flags); in etraxfs_uart_set_termios()
799 etraxfs_uart_type(struct uart_port *port) in etraxfs_uart_type() argument
804 static void etraxfs_uart_release_port(struct uart_port *port) in etraxfs_uart_release_port() argument
808 static int etraxfs_uart_request_port(struct uart_port *port) in etraxfs_uart_request_port() argument
813 static void etraxfs_uart_config_port(struct uart_port *port, int flags) in etraxfs_uart_config_port() argument
815 struct uart_cris_port *up = (struct uart_cris_port *)port; in etraxfs_uart_config_port()
817 up->port.type = PORT_CRIS; in etraxfs_uart_config_port()
842 static void cris_serial_port_init(struct uart_port *port, int line) in cris_serial_port_init() argument
844 struct uart_cris_port *up = (struct uart_cris_port *)port; in cris_serial_port_init()
849 port->line = line; in cris_serial_port_init()
850 spin_lock_init(&port->lock); in cris_serial_port_init()
851 port->ops = &etraxfs_uart_pops; in cris_serial_port_init()
852 port->irq = up->irq; in cris_serial_port_init()
853 port->iobase = (unsigned long) up->regi_ser; in cris_serial_port_init()
854 port->uartclk = 29493000; in cris_serial_port_init()
865 port->fifosize = 255; in cris_serial_port_init()
866 port->flags = UPF_BOOT_AUTOCONF; in cris_serial_port_init()
895 up->port.dev = &pdev->dev; in etraxfs_uart_probe()
901 cris_serial_port_init(&up->port, dev_id); in etraxfs_uart_probe()
904 platform_set_drvdata(pdev, &up->port); in etraxfs_uart_probe()
905 uart_add_one_port(&etraxfs_uart_driver, &up->port); in etraxfs_uart_probe()
912 struct uart_port *port; in etraxfs_uart_remove() local
914 port = platform_get_drvdata(pdev); in etraxfs_uart_remove()
915 uart_remove_one_port(&etraxfs_uart_driver, port); in etraxfs_uart_remove()
916 etraxfs_uart_ports[port->line] = NULL; in etraxfs_uart_remove()