Lines Matching refs:port
75 #define RBASE(port, reg) (port->membase + reg) argument
103 struct uart_port port; member
107 #define to_arc_port(uport) container_of(uport, struct arc_uart_port, port)
129 static void arc_serial_stop_rx(struct uart_port *port) in arc_serial_stop_rx() argument
131 UART_RX_IRQ_DISABLE(port); in arc_serial_stop_rx()
134 static void arc_serial_stop_tx(struct uart_port *port) in arc_serial_stop_tx() argument
136 while (!(UART_GET_STATUS(port) & TXEMPTY)) in arc_serial_stop_tx()
139 UART_TX_IRQ_DISABLE(port); in arc_serial_stop_tx()
145 static unsigned int arc_serial_tx_empty(struct uart_port *port) in arc_serial_tx_empty() argument
149 stat = UART_GET_STATUS(port); in arc_serial_tx_empty()
163 static void arc_serial_tx_chars(struct uart_port *port) in arc_serial_tx_chars() argument
165 struct circ_buf *xmit = &port->state->xmit; in arc_serial_tx_chars()
169 if (unlikely(port->x_char)) { in arc_serial_tx_chars()
170 UART_SET_DATA(port, port->x_char); in arc_serial_tx_chars()
171 port->icount.tx++; in arc_serial_tx_chars()
172 port->x_char = 0; in arc_serial_tx_chars()
177 port->icount.tx++; in arc_serial_tx_chars()
178 while (!(UART_GET_STATUS(port) & TXEMPTY)) in arc_serial_tx_chars()
180 UART_SET_DATA(port, ch); in arc_serial_tx_chars()
189 uart_write_wakeup(port); in arc_serial_tx_chars()
192 UART_TX_IRQ_ENABLE(port); in arc_serial_tx_chars()
199 static void arc_serial_start_tx(struct uart_port *port) in arc_serial_start_tx() argument
201 arc_serial_tx_chars(port); in arc_serial_start_tx()
204 static void arc_serial_rx_chars(struct uart_port *port, unsigned int status) in arc_serial_rx_chars() argument
224 port->icount.overrun++; in arc_serial_rx_chars()
226 UART_CLR_STATUS(port, RXOERR); in arc_serial_rx_chars()
230 port->icount.frame++; in arc_serial_rx_chars()
232 UART_CLR_STATUS(port, RXFERR); in arc_serial_rx_chars()
240 ch = UART_GET_DATA(port); in arc_serial_rx_chars()
241 port->icount.rx++; in arc_serial_rx_chars()
243 if (!(uart_handle_sysrq_char(port, ch))) in arc_serial_rx_chars()
244 uart_insert_char(port, status, RXOERR, ch, flg); in arc_serial_rx_chars()
246 spin_unlock(&port->lock); in arc_serial_rx_chars()
247 tty_flip_buffer_push(&port->state->port); in arc_serial_rx_chars()
248 spin_lock(&port->lock); in arc_serial_rx_chars()
249 } while (!((status = UART_GET_STATUS(port)) & RXEMPTY)); in arc_serial_rx_chars()
282 struct uart_port *port = dev_id; in arc_serial_isr() local
285 status = UART_GET_STATUS(port); in arc_serial_isr()
295 spin_lock(&port->lock); in arc_serial_isr()
296 arc_serial_rx_chars(port, status); in arc_serial_isr()
297 spin_unlock(&port->lock); in arc_serial_isr()
305 UART_TX_IRQ_DISABLE(port); in arc_serial_isr()
307 spin_lock(&port->lock); in arc_serial_isr()
309 if (!uart_tx_stopped(port)) in arc_serial_isr()
310 arc_serial_tx_chars(port); in arc_serial_isr()
312 spin_unlock(&port->lock); in arc_serial_isr()
318 static unsigned int arc_serial_get_mctrl(struct uart_port *port) in arc_serial_get_mctrl() argument
330 static void arc_serial_set_mctrl(struct uart_port *port, unsigned int mctrl) in arc_serial_set_mctrl() argument
335 static void arc_serial_break_ctl(struct uart_port *port, int break_state) in arc_serial_break_ctl() argument
340 static int arc_serial_startup(struct uart_port *port) in arc_serial_startup() argument
343 UART_ALL_IRQ_DISABLE(port); in arc_serial_startup()
345 if (request_irq(port->irq, arc_serial_isr, 0, "arc uart rx-tx", port)) { in arc_serial_startup()
346 dev_warn(port->dev, "Unable to attach ARC UART intr\n"); in arc_serial_startup()
350 UART_RX_IRQ_ENABLE(port); /* Only Rx IRQ enabled to begin with */ in arc_serial_startup()
356 static void arc_serial_shutdown(struct uart_port *port) in arc_serial_shutdown() argument
358 free_irq(port->irq, port); in arc_serial_shutdown()
362 arc_serial_set_termios(struct uart_port *port, struct ktermios *new, in arc_serial_set_termios() argument
365 struct arc_uart_port *uart = to_arc_port(port); in arc_serial_set_termios()
376 baud = uart_get_baud_rate(port, new, old, 0, 460800); in arc_serial_set_termios()
378 hw_val = port->uartclk / (uart->baud * 4) - 1; in arc_serial_set_termios()
382 spin_lock_irqsave(&port->lock, flags); in arc_serial_set_termios()
384 UART_ALL_IRQ_DISABLE(port); in arc_serial_set_termios()
386 UART_SET_BAUDL(port, uartl); in arc_serial_set_termios()
387 UART_SET_BAUDH(port, uarth); in arc_serial_set_termios()
389 UART_RX_IRQ_ENABLE(port); in arc_serial_set_termios()
405 uart_update_timeout(port, new->c_cflag, baud); in arc_serial_set_termios()
407 spin_unlock_irqrestore(&port->lock, flags); in arc_serial_set_termios()
410 static const char *arc_serial_type(struct uart_port *port) in arc_serial_type() argument
412 return port->type == PORT_ARC ? DRIVER_NAME : NULL; in arc_serial_type()
415 static void arc_serial_release_port(struct uart_port *port) in arc_serial_release_port() argument
419 static int arc_serial_request_port(struct uart_port *port) in arc_serial_request_port() argument
428 arc_serial_verify_port(struct uart_port *port, struct serial_struct *ser) in arc_serial_verify_port() argument
430 if (port->type != PORT_UNKNOWN && ser->type != PORT_ARC) in arc_serial_verify_port()
439 static void arc_serial_config_port(struct uart_port *port, int flags) in arc_serial_config_port() argument
442 port->type = PORT_ARC; in arc_serial_config_port()
447 static void arc_serial_poll_putchar(struct uart_port *port, unsigned char chr) in arc_serial_poll_putchar() argument
449 while (!(UART_GET_STATUS(port) & TXEMPTY)) in arc_serial_poll_putchar()
452 UART_SET_DATA(port, chr); in arc_serial_poll_putchar()
455 static int arc_serial_poll_getchar(struct uart_port *port) in arc_serial_poll_getchar() argument
459 while (!(UART_GET_STATUS(port) & RXEMPTY)) in arc_serial_poll_getchar()
462 chr = UART_GET_DATA(port); in arc_serial_poll_getchar()
493 struct uart_port *port; in arc_serial_console_setup() local
506 port = &arc_uart_ports[co->index].port; in arc_serial_console_setup()
507 if (!port->membase) in arc_serial_console_setup()
517 return uart_set_options(port, co, baud, parity, bits, flow); in arc_serial_console_setup()
520 static void arc_serial_console_putchar(struct uart_port *port, int ch) in arc_serial_console_putchar() argument
522 while (!(UART_GET_STATUS(port) & TXEMPTY)) in arc_serial_console_putchar()
525 UART_SET_DATA(port, (unsigned char)ch); in arc_serial_console_putchar()
534 struct uart_port *port = &arc_uart_ports[co->index].port; in arc_serial_console_write() local
537 spin_lock_irqsave(&port->lock, flags); in arc_serial_console_write()
538 uart_console_write(port, s, count, arc_serial_console_putchar); in arc_serial_console_write()
539 spin_unlock_irqrestore(&port->lock, flags); in arc_serial_console_write()
557 uart_console_write(&dev->port, s, n, arc_serial_console_putchar); in arc_early_serial_write()
563 struct uart_port *port = &dev->port; in arc_early_console_setup() local
566 if (!dev->port.membase) in arc_early_console_setup()
569 hw_val = port->uartclk / (dev->baud * 4) - 1; in arc_early_console_setup()
573 UART_SET_BAUDL(port, l); in arc_early_console_setup()
574 UART_SET_BAUDH(port, h); in arc_early_console_setup()
588 struct uart_port *port; in arc_serial_probe() local
601 port = &uart->port; in arc_serial_probe()
607 port->uartclk = val; in arc_serial_probe()
615 port->membase = of_iomap(np, 0); in arc_serial_probe()
616 if (!port->membase) in arc_serial_probe()
620 port->irq = irq_of_parse_and_map(np, 0); in arc_serial_probe()
622 port->dev = &pdev->dev; in arc_serial_probe()
623 port->iotype = UPIO_MEM; in arc_serial_probe()
624 port->flags = UPF_BOOT_AUTOCONF; in arc_serial_probe()
625 port->line = dev_id; in arc_serial_probe()
626 port->ops = &arc_serial_pops; in arc_serial_probe()
628 port->fifosize = ARC_UART_TX_FIFO_SIZE; in arc_serial_probe()
634 port->ignore_status_mask = 0; in arc_serial_probe()
636 return uart_add_one_port(&arc_uart_driver, &arc_uart_ports[dev_id].port); in arc_serial_probe()