Lines Matching refs:port

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