Lines Matching refs:port

68 #define RBASE(port, reg)      (port->membase + reg)
96 struct uart_port port;
100 #define to_arc_port(uport) container_of(uport, struct arc_uart_port, port)
122 static void arc_serial_stop_rx(struct uart_port *port)
124 UART_RX_IRQ_DISABLE(port);
127 static void arc_serial_stop_tx(struct uart_port *port)
129 while (!(UART_GET_STATUS(port) & TXEMPTY))
132 UART_TX_IRQ_DISABLE(port);
138 static unsigned int arc_serial_tx_empty(struct uart_port *port)
142 stat = UART_GET_STATUS(port);
156 static void arc_serial_tx_chars(struct uart_port *port)
158 struct circ_buf *xmit = &port->state->xmit;
162 if (unlikely(port->x_char)) {
163 UART_SET_DATA(port, port->x_char);
164 port->icount.tx++;
165 port->x_char = 0;
169 uart_xmit_advance(port, 1);
170 while (!(UART_GET_STATUS(port) & TXEMPTY))
172 UART_SET_DATA(port, ch);
181 uart_write_wakeup(port);
184 UART_TX_IRQ_ENABLE(port);
188 * port is locked and interrupts are disabled
189 * uart_start( ) calls us under the port spinlock irqsave
191 static void arc_serial_start_tx(struct uart_port *port)
193 arc_serial_tx_chars(port);
196 static void arc_serial_rx_chars(struct uart_port *port, unsigned int status)
215 port->icount.overrun++;
217 UART_CLR_STATUS(port, RXOERR);
221 port->icount.frame++;
223 UART_CLR_STATUS(port, RXFERR);
229 ch = UART_GET_DATA(port);
230 port->icount.rx++;
232 if (!(uart_handle_sysrq_char(port, ch)))
233 uart_insert_char(port, status, RXOERR, ch, flg);
235 tty_flip_buffer_push(&port->state->port);
236 } while (!((status = UART_GET_STATUS(port)) & RXEMPTY));
269 struct uart_port *port = dev_id;
272 status = UART_GET_STATUS(port);
282 spin_lock(&port->lock);
283 arc_serial_rx_chars(port, status);
284 spin_unlock(&port->lock);
292 UART_TX_IRQ_DISABLE(port);
294 spin_lock(&port->lock);
296 if (!uart_tx_stopped(port))
297 arc_serial_tx_chars(port);
299 spin_unlock(&port->lock);
305 static unsigned int arc_serial_get_mctrl(struct uart_port *port)
317 static void arc_serial_set_mctrl(struct uart_port *port, unsigned int mctrl)
322 static void arc_serial_break_ctl(struct uart_port *port, int break_state)
327 static int arc_serial_startup(struct uart_port *port)
330 UART_ALL_IRQ_DISABLE(port);
332 if (request_irq(port->irq, arc_serial_isr, 0, "arc uart rx-tx", port)) {
333 dev_warn(port->dev, "Unable to attach ARC UART intr\n");
337 UART_RX_IRQ_ENABLE(port); /* Only Rx IRQ enabled to begin with */
343 static void arc_serial_shutdown(struct uart_port *port)
345 free_irq(port->irq, port);
349 arc_serial_set_termios(struct uart_port *port, struct ktermios *new,
352 struct arc_uart_port *uart = to_arc_port(port);
363 baud = uart_get_baud_rate(port, new, old, 0, 460800);
365 hw_val = port->uartclk / (uart->baud * 4) - 1;
369 spin_lock_irqsave(&port->lock, flags);
371 UART_ALL_IRQ_DISABLE(port);
373 UART_SET_BAUDL(port, uartl);
374 UART_SET_BAUDH(port, uarth);
376 UART_RX_IRQ_ENABLE(port);
392 uart_update_timeout(port, new->c_cflag, baud);
394 spin_unlock_irqrestore(&port->lock, flags);
397 static const char *arc_serial_type(struct uart_port *port)
399 return port->type == PORT_ARC ? DRIVER_NAME : NULL;
402 static void arc_serial_release_port(struct uart_port *port)
406 static int arc_serial_request_port(struct uart_port *port)
415 arc_serial_verify_port(struct uart_port *port, struct serial_struct *ser)
417 if (port->type != PORT_UNKNOWN && ser->type != PORT_ARC)
424 * Configure/autoconfigure the port.
426 static void arc_serial_config_port(struct uart_port *port, int flags)
429 port->type = PORT_ARC;
434 static void arc_serial_poll_putchar(struct uart_port *port, unsigned char chr)
436 while (!(UART_GET_STATUS(port) & TXEMPTY))
439 UART_SET_DATA(port, chr);
442 static int arc_serial_poll_getchar(struct uart_port *port)
446 while (!(UART_GET_STATUS(port) & RXEMPTY))
449 chr = UART_GET_DATA(port);
480 struct uart_port *port;
490 * The uart port backing the console (e.g. ttyARC1) might not have been
491 * init yet. If so, defer the console setup to after the port.
493 port = &arc_uart_ports[co->index].port;
494 if (!port->membase)
501 * Serial core will call port->ops->set_termios( )
504 return uart_set_options(port, co, baud, parity, bits, flow);
507 static void arc_serial_console_putchar(struct uart_port *port, unsigned char ch)
509 while (!(UART_GET_STATUS(port) & TXEMPTY))
512 UART_SET_DATA(port, (unsigned char)ch);
521 struct uart_port *port = &arc_uart_ports[co->index].port;
524 spin_lock_irqsave(&port->lock, flags);
525 uart_console_write(port, s, count, arc_serial_console_putchar);
526 spin_unlock_irqrestore(&port->lock, flags);
544 uart_console_write(&dev->port, s, n, arc_serial_console_putchar);
550 struct uart_port *port = &dev->port;
553 if (!dev->port.membase)
556 hw_val = port->uartclk / (dev->baud * 4) - 1;
560 UART_SET_BAUDL(port, l);
561 UART_SET_BAUDH(port, h);
574 struct uart_port *port;
592 port = &uart->port;
598 port->uartclk = val;
606 port->membase = devm_platform_ioremap_resource(pdev, 0);
607 if (IS_ERR(port->membase)) {
609 return PTR_ERR(port->membase);
612 port->irq = irq_of_parse_and_map(np, 0);
614 port->dev = &pdev->dev;
615 port->iotype = UPIO_MEM;
616 port->flags = UPF_BOOT_AUTOCONF;
617 port->line = dev_id;
618 port->ops = &arc_serial_pops;
619 port->has_sysrq = IS_ENABLED(CONFIG_SERIAL_ARC_CONSOLE);
621 port->fifosize = ARC_UART_TX_FIFO_SIZE;
627 port->ignore_status_mask = 0;
629 return uart_add_one_port(&arc_uart_driver, &arc_uart_ports[dev_id].port);