Lines Matching refs:port
171 static void __omap8250_set_mctrl(struct uart_port *port, unsigned int mctrl)
173 struct uart_8250_port *up = up_to_u8250p(port);
174 struct omap8250_priv *priv = up->port.private_data;
177 serial8250_do_set_mctrl(port, mctrl);
186 if ((mctrl & TIOCM_RTS) && (port->status & UPSTAT_AUTORTS))
195 static void omap8250_set_mctrl(struct uart_port *port, unsigned int mctrl)
199 err = pm_runtime_resume_and_get(port->dev);
203 __omap8250_set_mctrl(port, mctrl);
205 pm_runtime_mark_last_busy(port->dev);
206 pm_runtime_put_autosuspend(port->dev);
227 static void omap_8250_get_divisor(struct uart_port *port, unsigned int baud,
230 unsigned int uartclk = port->uartclk;
237 if (baud == 38400 && (port->flags & UPF_SPD_MASK) == UPF_SPD_CUST) {
238 priv->quot = port->custom_divisor & UART_DIV_MAX;
244 if (port->custom_divisor & (1 << 16))
301 struct omap8250_priv *priv = up->port.private_data;
354 __omap8250_set_mctrl(&up->port, up->port.mctrl);
356 if (up->port.rs485.flags & SER_RS485_ENABLED)
364 static void omap_8250_set_termios(struct uart_port *port,
368 struct uart_8250_port *up = up_to_u8250p(port);
369 struct omap8250_priv *priv = up->port.private_data;
401 baud = uart_get_baud_rate(port, termios, old,
402 port->uartclk / 16 / UART_DIV_MAX,
403 port->uartclk / 13);
404 omap_8250_get_divisor(port, baud, priv);
407 * Ok, we're now changing the port state. Do it with
410 pm_runtime_get_sync(port->dev);
411 spin_lock_irq(&port->lock);
414 * Update the per-port timeout.
416 uart_update_timeout(port, termios->c_cflag, baud);
418 up->port.read_status_mask = UART_LSR_OE | UART_LSR_THRE | UART_LSR_DR;
420 up->port.read_status_mask |= UART_LSR_FE | UART_LSR_PE;
422 up->port.read_status_mask |= UART_LSR_BI;
427 up->port.ignore_status_mask = 0;
429 up->port.ignore_status_mask |= UART_LSR_PE | UART_LSR_FE;
431 up->port.ignore_status_mask |= UART_LSR_BI;
437 up->port.ignore_status_mask |= UART_LSR_OE;
444 up->port.ignore_status_mask |= UART_LSR_DR;
450 if (UART_ENABLE_MS(&up->port, termios->c_cflag))
488 up->port.status &= ~(UPSTAT_AUTOCTS | UPSTAT_AUTORTS | UPSTAT_AUTOXOFF);
490 if (termios->c_cflag & CRTSCTS && up->port.flags & UPF_HARD_FLOW &&
494 up->port.status |= UPSTAT_AUTOCTS | UPSTAT_AUTORTS;
496 } else if (up->port.flags & UPF_SOFT_FLOW) {
508 up->port.status |= UPSTAT_AUTOXOFF;
514 spin_unlock_irq(&up->port.lock);
515 pm_runtime_mark_last_busy(port->dev);
516 pm_runtime_put_autosuspend(port->dev);
530 static void omap_8250_pm(struct uart_port *port, unsigned int state,
533 struct uart_8250_port *up = up_to_u8250p(port);
536 pm_runtime_get_sync(port->dev);
547 pm_runtime_mark_last_busy(port->dev);
548 pm_runtime_put_autosuspend(port->dev);
582 dev_warn(up->port.dev,
625 static int omap_8250_dma_handle_irq(struct uart_port *port);
630 struct uart_port *port = dev_id;
631 struct omap8250_priv *priv = port->private_data;
632 struct uart_8250_port *up = up_to_u8250p(port);
638 ret = omap_8250_dma_handle_irq(port);
644 lsr = serial_port_in(port, UART_LSR);
645 iir = serial_port_in(port, UART_IIR);
646 ret = serial8250_handle_irq(port, iir);
655 serial_port_in(port, UART_OMAP_RX_LVL) == 0) {
656 serial_port_in(port, UART_RX);
664 spin_lock(&port->lock);
665 up->ier = port->serial_in(port, UART_IER);
667 port->ops->stop_rx(port);
674 spin_unlock(&port->lock);
685 static int omap_8250_startup(struct uart_port *port)
687 struct uart_8250_port *up = up_to_u8250p(port);
688 struct omap8250_priv *priv = port->private_data;
692 ret = dev_pm_set_dedicated_wake_irq(port->dev, priv->wakeirq);
697 pm_runtime_get_sync(port->dev);
707 if (uart_console(port))
713 dev_warn_ratelimited(port->dev,
719 ret = request_irq(port->irq, omap8250_irq, IRQF_SHARED,
720 dev_name(port->dev), port);
740 pm_runtime_mark_last_busy(port->dev);
741 pm_runtime_put_autosuspend(port->dev);
744 pm_runtime_mark_last_busy(port->dev);
745 pm_runtime_put_autosuspend(port->dev);
746 dev_pm_clear_wake_irq(port->dev);
750 static void omap_8250_shutdown(struct uart_port *port)
752 struct uart_8250_port *up = up_to_u8250p(port);
753 struct omap8250_priv *priv = port->private_data;
759 pm_runtime_get_sync(port->dev);
778 pm_runtime_mark_last_busy(port->dev);
779 pm_runtime_put_autosuspend(port->dev);
780 free_irq(port->irq, port);
781 dev_pm_clear_wake_irq(port->dev);
784 static void omap_8250_throttle(struct uart_port *port)
786 struct omap8250_priv *priv = port->private_data;
789 pm_runtime_get_sync(port->dev);
791 spin_lock_irqsave(&port->lock, flags);
792 port->ops->stop_rx(port);
794 spin_unlock_irqrestore(&port->lock, flags);
796 pm_runtime_mark_last_busy(port->dev);
797 pm_runtime_put_autosuspend(port->dev);
800 static void omap_8250_unthrottle(struct uart_port *port)
802 struct omap8250_priv *priv = port->private_data;
803 struct uart_8250_port *up = up_to_u8250p(port);
806 pm_runtime_get_sync(port->dev);
808 spin_lock_irqsave(&port->lock, flags);
813 port->read_status_mask |= UART_LSR_DR;
815 spin_unlock_irqrestore(&port->lock, flags);
817 pm_runtime_mark_last_busy(port->dev);
818 pm_runtime_put_autosuspend(port->dev);
828 struct tty_port *tty_port = &p->port.state->port;
829 struct omap8250_priv *priv = p->port.private_data;
868 dev_err(p->port.dev, "teardown incomplete\n");
875 p->port.icount.rx += ret;
876 p->port.icount.buf_overrun += count - ret;
885 struct omap8250_priv *priv = p->port.private_data;
890 spin_lock_irqsave(&p->port.lock, flags);
899 spin_unlock_irqrestore(&p->port.lock, flags);
910 spin_unlock_irqrestore(&p->port.lock, flags);
915 struct omap8250_priv *priv = p->port.private_data;
940 struct omap8250_priv *priv = p->port.private_data;
1004 struct circ_buf *xmit = &p->port.state->xmit;
1007 struct omap8250_priv *priv = p->port.private_data;
1012 spin_lock_irqsave(&p->port.lock, flags);
1018 p->port.icount.tx += dma->tx_size;
1026 uart_write_wakeup(&p->port);
1028 if (!uart_circ_empty(xmit) && !uart_tx_stopped(&p->port)) {
1043 spin_unlock_irqrestore(&p->port.lock, flags);
1049 struct omap8250_priv *priv = p->port.private_data;
1050 struct circ_buf *xmit = &p->port.state->xmit;
1057 if (uart_tx_stopped(&p->port) || uart_circ_empty(xmit)) {
1192 static int omap_8250_dma_handle_irq(struct uart_port *port)
1194 struct uart_8250_port *up = up_to_u8250p(port);
1195 struct omap8250_priv *priv = up->port.private_data;
1202 iir = serial_port_in(port, UART_IIR);
1208 spin_lock_irqsave(&port->lock, flags);
1210 status = serial_port_in(port, UART_LSR);
1221 if (uart_tx_stopped(&up->port) ||
1222 uart_circ_empty(&up->port.state->xmit)) {
1235 uart_unlock_and_check_sysrq(port, flags);
1253 static int omap8250_no_handle_irq(struct uart_port *port)
1256 WARN_ONCE(1, "Unexpected irq handling before port startup\n");
1330 up.port.dev = &pdev->dev;
1331 up.port.mapbase = regs->start;
1332 up.port.membase = membase;
1333 up.port.irq = irq;
1342 up.port.type = PORT_8250;
1343 up.port.iotype = UPIO_MEM;
1344 up.port.flags = UPF_FIXED_PORT | UPF_FIXED_TYPE | UPF_SOFT_FLOW |
1346 up.port.private_data = priv;
1348 up.port.regshift = OMAP_UART_REGSHIFT;
1349 up.port.fifosize = 64;
1361 up.port.set_termios = omap_8250_set_termios;
1362 up.port.set_mctrl = omap8250_set_mctrl;
1363 up.port.pm = omap_8250_pm;
1364 up.port.startup = omap_8250_startup;
1365 up.port.shutdown = omap_8250_shutdown;
1366 up.port.throttle = omap_8250_throttle;
1367 up.port.unthrottle = omap_8250_unthrottle;
1368 up.port.rs485_config = serial8250_em485_config;
1371 up.port.has_sysrq = IS_ENABLED(CONFIG_SERIAL_8250_CONSOLE);
1378 up.port.line = ret;
1380 if (of_property_read_u32(np, "clock-frequency", &up.port.uartclk)) {
1388 up.port.uartclk = clk_get_rate(clk);
1402 if (!up.port.uartclk) {
1403 up.port.uartclk = DEFAULT_CLK_SPEED;
1439 up.port.handle_irq = omap8250_no_handle_irq;
1477 dev_err(&pdev->dev, "unable to register 8250 port\n");
1547 if (uart_console(&up->port) && console_suspend_enabled)
1560 if (uart_console(&up->port) && console_suspend_enabled) {