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;
170 port->icount.tx++;
171 while (!(UART_GET_STATUS(port) & TXEMPTY))
173 UART_SET_DATA(port, ch);
182 uart_write_wakeup(port);
185 UART_TX_IRQ_ENABLE(port);
189 * port is locked and interrupts are disabled
190 * uart_start( ) calls us under the port spinlock irqsave
192 static void arc_serial_start_tx(struct uart_port *port)
194 arc_serial_tx_chars(port);
197 static void arc_serial_rx_chars(struct uart_port *port, unsigned int status)
217 port->icount.overrun++;
219 UART_CLR_STATUS(port, RXOERR);
223 port->icount.frame++;
225 UART_CLR_STATUS(port, RXFERR);
233 ch = UART_GET_DATA(port);
234 port->icount.rx++;
236 if (!(uart_handle_sysrq_char(port, ch)))
237 uart_insert_char(port, status, RXOERR, ch, flg);
239 spin_unlock(&port->lock);
240 tty_flip_buffer_push(&port->state->port);
241 spin_lock(&port->lock);
242 } while (!((status = UART_GET_STATUS(port)) & RXEMPTY));
275 struct uart_port *port = dev_id;
278 status = UART_GET_STATUS(port);
288 spin_lock(&port->lock);
289 arc_serial_rx_chars(port, status);
290 spin_unlock(&port->lock);
298 UART_TX_IRQ_DISABLE(port);
300 spin_lock(&port->lock);
302 if (!uart_tx_stopped(port))
303 arc_serial_tx_chars(port);
305 spin_unlock(&port->lock);
311 static unsigned int arc_serial_get_mctrl(struct uart_port *port)
323 static void arc_serial_set_mctrl(struct uart_port *port, unsigned int mctrl)
328 static void arc_serial_break_ctl(struct uart_port *port, int break_state)
333 static int arc_serial_startup(struct uart_port *port)
336 UART_ALL_IRQ_DISABLE(port);
338 if (request_irq(port->irq, arc_serial_isr, 0, "arc uart rx-tx", port)) {
339 dev_warn(port->dev, "Unable to attach ARC UART intr\n");
343 UART_RX_IRQ_ENABLE(port); /* Only Rx IRQ enabled to begin with */
349 static void arc_serial_shutdown(struct uart_port *port)
351 free_irq(port->irq, port);
355 arc_serial_set_termios(struct uart_port *port, struct ktermios *new,
358 struct arc_uart_port *uart = to_arc_port(port);
369 baud = uart_get_baud_rate(port, new, old, 0, 460800);
371 hw_val = port->uartclk / (uart->baud * 4) - 1;
375 spin_lock_irqsave(&port->lock, flags);
377 UART_ALL_IRQ_DISABLE(port);
379 UART_SET_BAUDL(port, uartl);
380 UART_SET_BAUDH(port, uarth);
382 UART_RX_IRQ_ENABLE(port);
398 uart_update_timeout(port, new->c_cflag, baud);
400 spin_unlock_irqrestore(&port->lock, flags);
403 static const char *arc_serial_type(struct uart_port *port)
405 return port->type == PORT_ARC ? DRIVER_NAME : NULL;
408 static void arc_serial_release_port(struct uart_port *port)
412 static int arc_serial_request_port(struct uart_port *port)
421 arc_serial_verify_port(struct uart_port *port, struct serial_struct *ser)
423 if (port->type != PORT_UNKNOWN && ser->type != PORT_ARC)
430 * Configure/autoconfigure the port.
432 static void arc_serial_config_port(struct uart_port *port, int flags)
435 port->type = PORT_ARC;
440 static void arc_serial_poll_putchar(struct uart_port *port, unsigned char chr)
442 while (!(UART_GET_STATUS(port) & TXEMPTY))
445 UART_SET_DATA(port, chr);
448 static int arc_serial_poll_getchar(struct uart_port *port)
452 while (!(UART_GET_STATUS(port) & RXEMPTY))
455 chr = UART_GET_DATA(port);
486 struct uart_port *port;
496 * The uart port backing the console (e.g. ttyARC1) might not have been
497 * init yet. If so, defer the console setup to after the port.
499 port = &arc_uart_ports[co->index].port;
500 if (!port->membase)
507 * Serial core will call port->ops->set_termios( )
510 return uart_set_options(port, co, baud, parity, bits, flow);
513 static void arc_serial_console_putchar(struct uart_port *port, int ch)
515 while (!(UART_GET_STATUS(port) & TXEMPTY))
518 UART_SET_DATA(port, (unsigned char)ch);
527 struct uart_port *port = &arc_uart_ports[co->index].port;
530 spin_lock_irqsave(&port->lock, flags);
531 uart_console_write(port, s, count, arc_serial_console_putchar);
532 spin_unlock_irqrestore(&port->lock, flags);
550 uart_console_write(&dev->port, s, n, arc_serial_console_putchar);
556 struct uart_port *port = &dev->port;
559 if (!dev->port.membase)
562 hw_val = port->uartclk / (dev->baud * 4) - 1;
566 UART_SET_BAUDL(port, l);
567 UART_SET_BAUDH(port, h);
580 struct uart_port *port;
598 port = &uart->port;
604 port->uartclk = val;
612 port->membase = devm_platform_ioremap_resource(pdev, 0);
613 if (IS_ERR(port->membase)) {
615 return PTR_ERR(port->membase);
618 port->irq = irq_of_parse_and_map(np, 0);
620 port->dev = &pdev->dev;
621 port->iotype = UPIO_MEM;
622 port->flags = UPF_BOOT_AUTOCONF;
623 port->line = dev_id;
624 port->ops = &arc_serial_pops;
625 port->has_sysrq = IS_ENABLED(CONFIG_SERIAL_ARC_CONSOLE);
627 port->fifosize = ARC_UART_TX_FIFO_SIZE;
633 port->ignore_status_mask = 0;
635 return uart_add_one_port(&arc_uart_driver, &arc_uart_ports[dev_id].port);