Lines Matching refs:port
120 return readl(up->port.membase + (reg << up->port.regshift)); in uart_read()
123 static void omap8250_set_mctrl(struct uart_port *port, unsigned int mctrl) in omap8250_set_mctrl() argument
125 struct uart_8250_port *up = up_to_u8250p(port); in omap8250_set_mctrl()
126 struct omap8250_priv *priv = up->port.private_data; in omap8250_set_mctrl()
129 serial8250_do_set_mctrl(port, mctrl); in omap8250_set_mctrl()
137 if ((mctrl & TIOCM_RTS) && (port->status & UPSTAT_AUTORTS)) in omap8250_set_mctrl()
177 dev_crit(up->port.dev, "Errata i202: timedout %x\n", in omap_8250_mdr1_errataset()
185 static void omap_8250_get_divisor(struct uart_port *port, unsigned int baud, in omap_8250_get_divisor() argument
188 unsigned int uartclk = port->uartclk; in omap_8250_get_divisor()
195 if (baud == 38400 && (port->flags & UPF_SPD_MASK) == UPF_SPD_CUST) { in omap_8250_get_divisor()
196 priv->quot = port->custom_divisor & 0xffff; in omap_8250_get_divisor()
202 if (port->custom_divisor & (1 << 16)) in omap_8250_get_divisor()
259 struct omap8250_priv *priv = up->port.private_data; in omap8250_restore_regs()
310 up->port.ops->set_mctrl(&up->port, up->port.mctrl); in omap8250_restore_regs()
317 static void omap_8250_set_termios(struct uart_port *port, in omap_8250_set_termios() argument
322 container_of(port, struct uart_8250_port, port); in omap_8250_set_termios()
323 struct omap8250_priv *priv = up->port.private_data; in omap_8250_set_termios()
355 baud = uart_get_baud_rate(port, termios, old, in omap_8250_set_termios()
356 port->uartclk / 16 / 0xffff, in omap_8250_set_termios()
357 port->uartclk / 13); in omap_8250_set_termios()
358 omap_8250_get_divisor(port, baud, priv); in omap_8250_set_termios()
364 pm_runtime_get_sync(port->dev); in omap_8250_set_termios()
365 spin_lock_irq(&port->lock); in omap_8250_set_termios()
370 uart_update_timeout(port, termios->c_cflag, baud); in omap_8250_set_termios()
372 up->port.read_status_mask = UART_LSR_OE | UART_LSR_THRE | UART_LSR_DR; in omap_8250_set_termios()
374 up->port.read_status_mask |= UART_LSR_FE | UART_LSR_PE; in omap_8250_set_termios()
376 up->port.read_status_mask |= UART_LSR_BI; in omap_8250_set_termios()
381 up->port.ignore_status_mask = 0; in omap_8250_set_termios()
383 up->port.ignore_status_mask |= UART_LSR_PE | UART_LSR_FE; in omap_8250_set_termios()
385 up->port.ignore_status_mask |= UART_LSR_BI; in omap_8250_set_termios()
391 up->port.ignore_status_mask |= UART_LSR_OE; in omap_8250_set_termios()
398 up->port.ignore_status_mask |= UART_LSR_DR; in omap_8250_set_termios()
404 if (UART_ENABLE_MS(&up->port, termios->c_cflag)) in omap_8250_set_termios()
442 up->port.status &= ~(UPSTAT_AUTOCTS | UPSTAT_AUTORTS | UPSTAT_AUTOXOFF); in omap_8250_set_termios()
444 if (termios->c_cflag & CRTSCTS && up->port.flags & UPF_HARD_FLOW) { in omap_8250_set_termios()
446 up->port.status |= UPSTAT_AUTOCTS | UPSTAT_AUTORTS; in omap_8250_set_termios()
448 } else if (up->port.flags & UPF_SOFT_FLOW) { in omap_8250_set_termios()
460 up->port.status |= UPSTAT_AUTOXOFF; in omap_8250_set_termios()
466 spin_unlock_irq(&up->port.lock); in omap_8250_set_termios()
467 pm_runtime_mark_last_busy(port->dev); in omap_8250_set_termios()
468 pm_runtime_put_autosuspend(port->dev); in omap_8250_set_termios()
482 static void omap_8250_pm(struct uart_port *port, unsigned int state, in omap_8250_pm() argument
485 struct uart_8250_port *up = up_to_u8250p(port); in omap_8250_pm()
488 pm_runtime_get_sync(port->dev); in omap_8250_pm()
499 pm_runtime_mark_last_busy(port->dev); in omap_8250_pm()
500 pm_runtime_put_autosuspend(port->dev); in omap_8250_pm()
529 dev_warn(up->port.dev, in omap_serial_fill_features_erratas()
564 static int omap_8250_dma_handle_irq(struct uart_port *port);
569 struct uart_port *port = dev_id; in omap8250_irq() local
570 struct uart_8250_port *up = up_to_u8250p(port); in omap8250_irq()
576 ret = omap_8250_dma_handle_irq(port); in omap8250_irq()
582 iir = serial_port_in(port, UART_IIR); in omap8250_irq()
583 ret = serial8250_handle_irq(port, iir); in omap8250_irq()
589 static int omap_8250_startup(struct uart_port *port) in omap_8250_startup() argument
591 struct uart_8250_port *up = up_to_u8250p(port); in omap_8250_startup()
592 struct omap8250_priv *priv = port->private_data; in omap_8250_startup()
596 ret = dev_pm_set_dedicated_wake_irq(port->dev, priv->wakeirq); in omap_8250_startup()
601 pm_runtime_get_sync(port->dev); in omap_8250_startup()
614 dev_warn_ratelimited(port->dev, in omap_8250_startup()
620 ret = request_irq(port->irq, omap8250_irq, IRQF_SHARED, in omap_8250_startup()
621 dev_name(port->dev), port); in omap_8250_startup()
641 pm_runtime_mark_last_busy(port->dev); in omap_8250_startup()
642 pm_runtime_put_autosuspend(port->dev); in omap_8250_startup()
645 pm_runtime_mark_last_busy(port->dev); in omap_8250_startup()
646 pm_runtime_put_autosuspend(port->dev); in omap_8250_startup()
647 dev_pm_clear_wake_irq(port->dev); in omap_8250_startup()
651 static void omap_8250_shutdown(struct uart_port *port) in omap_8250_shutdown() argument
653 struct uart_8250_port *up = up_to_u8250p(port); in omap_8250_shutdown()
654 struct omap8250_priv *priv = port->private_data; in omap_8250_shutdown()
660 pm_runtime_get_sync(port->dev); in omap_8250_shutdown()
677 pm_runtime_mark_last_busy(port->dev); in omap_8250_shutdown()
678 pm_runtime_put_autosuspend(port->dev); in omap_8250_shutdown()
679 free_irq(port->irq, port); in omap_8250_shutdown()
680 dev_pm_clear_wake_irq(port->dev); in omap_8250_shutdown()
683 static void omap_8250_throttle(struct uart_port *port) in omap_8250_throttle() argument
687 container_of(port, struct uart_8250_port, port); in omap_8250_throttle()
689 pm_runtime_get_sync(port->dev); in omap_8250_throttle()
691 spin_lock_irqsave(&port->lock, flags); in omap_8250_throttle()
694 spin_unlock_irqrestore(&port->lock, flags); in omap_8250_throttle()
696 pm_runtime_mark_last_busy(port->dev); in omap_8250_throttle()
697 pm_runtime_put_autosuspend(port->dev); in omap_8250_throttle()
700 static void omap_8250_unthrottle(struct uart_port *port) in omap_8250_unthrottle() argument
704 container_of(port, struct uart_8250_port, port); in omap_8250_unthrottle()
706 pm_runtime_get_sync(port->dev); in omap_8250_unthrottle()
708 spin_lock_irqsave(&port->lock, flags); in omap_8250_unthrottle()
711 spin_unlock_irqrestore(&port->lock, flags); in omap_8250_unthrottle()
713 pm_runtime_mark_last_busy(port->dev); in omap_8250_unthrottle()
714 pm_runtime_put_autosuspend(port->dev); in omap_8250_unthrottle()
722 struct omap8250_priv *priv = p->port.private_data; in __dma_rx_do_complete()
724 struct tty_port *tty_port = &p->port.state->port; in __dma_rx_do_complete()
746 p->port.icount.rx += ret; in __dma_rx_do_complete()
747 p->port.icount.buf_overrun += count - ret; in __dma_rx_do_complete()
764 struct omap8250_priv *priv = p->port.private_data; in omap_8250_rx_dma_flush()
787 struct omap8250_priv *priv = p->port.private_data; in omap_8250_rx_dma()
859 struct circ_buf *xmit = &p->port.state->xmit; in omap_8250_dma_tx_complete()
862 struct omap8250_priv *priv = p->port.private_data; in omap_8250_dma_tx_complete()
867 spin_lock_irqsave(&p->port.lock, flags); in omap_8250_dma_tx_complete()
873 p->port.icount.tx += dma->tx_size; in omap_8250_dma_tx_complete()
881 uart_write_wakeup(&p->port); in omap_8250_dma_tx_complete()
883 if (!uart_circ_empty(xmit) && !uart_tx_stopped(&p->port)) { in omap_8250_dma_tx_complete()
897 serial_port_out(&p->port, UART_IER, p->ier); in omap_8250_dma_tx_complete()
900 spin_unlock_irqrestore(&p->port.lock, flags); in omap_8250_dma_tx_complete()
906 struct omap8250_priv *priv = p->port.private_data; in omap_8250_tx_dma()
907 struct circ_buf *xmit = &p->port.state->xmit; in omap_8250_tx_dma()
914 if (uart_tx_stopped(&p->port) || uart_circ_empty(xmit)) { in omap_8250_tx_dma()
1003 static int omap_8250_dma_handle_irq(struct uart_port *port) in omap_8250_dma_handle_irq() argument
1005 struct uart_8250_port *up = up_to_u8250p(port); in omap_8250_dma_handle_irq()
1013 iir = serial_port_in(port, UART_IIR); in omap_8250_dma_handle_irq()
1019 spin_lock_irqsave(&port->lock, flags); in omap_8250_dma_handle_irq()
1021 status = serial_port_in(port, UART_LSR); in omap_8250_dma_handle_irq()
1033 if (uart_tx_stopped(&up->port) || in omap_8250_dma_handle_irq()
1034 uart_circ_empty(&up->port.state->xmit)) { in omap_8250_dma_handle_irq()
1048 spin_unlock_irqrestore(&port->lock, flags); in omap_8250_dma_handle_irq()
1066 static int omap8250_no_handle_irq(struct uart_port *port) in omap8250_no_handle_irq() argument
1111 up.port.dev = &pdev->dev; in omap8250_probe()
1112 up.port.mapbase = regs->start; in omap8250_probe()
1113 up.port.membase = membase; in omap8250_probe()
1114 up.port.irq = irq->start; in omap8250_probe()
1123 up.port.type = PORT_8250; in omap8250_probe()
1124 up.port.iotype = UPIO_MEM; in omap8250_probe()
1125 up.port.flags = UPF_FIXED_PORT | UPF_FIXED_TYPE | UPF_SOFT_FLOW | in omap8250_probe()
1127 up.port.private_data = priv; in omap8250_probe()
1129 up.port.regshift = 2; in omap8250_probe()
1130 up.port.fifosize = 64; in omap8250_probe()
1142 up.port.set_termios = omap_8250_set_termios; in omap8250_probe()
1143 up.port.set_mctrl = omap8250_set_mctrl; in omap8250_probe()
1144 up.port.pm = omap_8250_pm; in omap8250_probe()
1145 up.port.startup = omap_8250_startup; in omap8250_probe()
1146 up.port.shutdown = omap_8250_shutdown; in omap8250_probe()
1147 up.port.throttle = omap_8250_throttle; in omap8250_probe()
1148 up.port.unthrottle = omap_8250_unthrottle; in omap8250_probe()
1156 &up.port.uartclk); in omap8250_probe()
1169 up.port.line = ret; in omap8250_probe()
1171 if (!up.port.uartclk) { in omap8250_probe()
1172 up.port.uartclk = DEFAULT_CLK_SPEED; in omap8250_probe()
1196 up.port.handle_irq = omap8250_no_handle_irq; in omap8250_probe()
1354 if (uart_console(&up->port)) in omap8250_runtime_suspend()