Lines Matching refs:port
335 return __raw_readl(up->port.membase + 0x28); in au_serial_dl_read()
340 __raw_writel(value, up->port.membase + 0x28); in au_serial_dl_write()
407 static int serial8250_default_handle_irq(struct uart_port *port);
408 static int exar_handle_irq(struct uart_port *port);
518 pm_runtime_get_sync(p->port.dev); in serial8250_rpm_get()
526 pm_runtime_mark_last_busy(p->port.dev); in serial8250_rpm_put()
527 pm_runtime_put_autosuspend(p->port.dev); in serial8250_rpm_put()
546 pm_runtime_get_sync(p->port.dev); in serial8250_rpm_get_tx()
559 pm_runtime_mark_last_busy(p->port.dev); in serial8250_rpm_put_tx()
560 pm_runtime_put_autosuspend(p->port.dev); in serial8250_rpm_put_tx()
579 if ((p->port.type == PORT_XR17V35X) || in serial8250_set_sleep()
580 (p->port.type == PORT_XR17D15X)) { in serial8250_set_sleep()
624 up->port.uartclk = SERIAL_RSA_BAUD_BASE * 16; in __enable_rsa()
631 if (up->port.type == PORT_RSA) { in enable_rsa()
632 if (up->port.uartclk != SERIAL_RSA_BAUD_BASE * 16) { in enable_rsa()
633 spin_lock_irq(&up->port.lock); in enable_rsa()
635 spin_unlock_irq(&up->port.lock); in enable_rsa()
637 if (up->port.uartclk == SERIAL_RSA_BAUD_BASE * 16) in enable_rsa()
653 if (up->port.type == PORT_RSA && in disable_rsa()
654 up->port.uartclk == SERIAL_RSA_BAUD_BASE * 16) { in disable_rsa()
655 spin_lock_irq(&up->port.lock); in disable_rsa()
667 up->port.uartclk = SERIAL_RSA_BAUD_BASE_LO * 16; in disable_rsa()
668 spin_unlock_irq(&up->port.lock); in disable_rsa()
780 up->port.type = PORT_16C950; in autoconfig_has_efr()
805 up->port.type = PORT_16850; in autoconfig_has_efr()
819 up->port.type = PORT_16654; in autoconfig_has_efr()
821 up->port.type = PORT_16650V2; in autoconfig_has_efr()
833 up->port.type = PORT_8250; in autoconfig_8250()
843 up->port.type = PORT_16450; in autoconfig_8250()
870 up->port.type = PORT_16550A; in autoconfig_16550a()
881 if (up->port.flags & UPF_EXAR_EFR) { in autoconfig_16550a()
885 up->port.type = PORT_XR17V35X; in autoconfig_16550a()
903 up->port.type = PORT_16650; in autoconfig_16550a()
914 up->port.type = PORT_16550A_FSL64; in autoconfig_16550a()
966 up->port.uartclk = 921600*16; in autoconfig_16550a()
967 up->port.type = PORT_NS16550A; in autoconfig_16550a()
992 up->port.type = PORT_16750; in autoconfig_16550a()
1019 up->port.type = PORT_XSCALE; in autoconfig_16550a()
1035 if (up->port.flags & UPF_EXAR_EFR) { in autoconfig_16550a()
1037 up->port.type = PORT_XR17D15X; in autoconfig_16550a()
1048 if (up->port.type == PORT_16550A && size_fifo(up) == 64) { in autoconfig_16550a()
1049 up->port.type = PORT_U6_16550A; in autoconfig_16550a()
1065 struct uart_port *port = &up->port; in autoconfig() local
1069 if (!port->iobase && !port->mapbase && !port->membase) in autoconfig()
1073 serial_index(port), port->iobase, port->membase); in autoconfig()
1079 spin_lock_irqsave(&port->lock, flags); in autoconfig()
1084 if (!(port->flags & UPF_BUGGY_UART)) { in autoconfig()
1118 spin_unlock_irqrestore(&port->lock, flags); in autoconfig()
1137 if (!(port->flags & UPF_SKIP_TEST)) { in autoconfig()
1142 spin_unlock_irqrestore(&port->lock, flags); in autoconfig()
1170 port->type = PORT_UNKNOWN; in autoconfig()
1173 port->type = PORT_16550; in autoconfig()
1184 if (port->type == PORT_16550A && up->probe & UART_PROBE_RSA && in autoconfig()
1186 port->type = PORT_RSA; in autoconfig()
1191 port->fifosize = uart_config[up->port.type].fifo_size; in autoconfig()
1193 up->capabilities = uart_config[port->type].flags; in autoconfig()
1194 up->tx_loadsz = uart_config[port->type].tx_loadsz; in autoconfig()
1196 if (port->type == PORT_UNKNOWN) in autoconfig()
1203 if (port->type == PORT_RSA) in autoconfig()
1215 spin_unlock_irqrestore(&port->lock, flags); in autoconfig()
1219 serial_index(port), old_capabilities, in autoconfig()
1224 DEBUG_AUTOCONF("type=%s\n", uart_config[port->type].name); in autoconfig()
1229 struct uart_port *port = &up->port; in autoconfig_irq() local
1236 if (port->flags & UPF_FOURPORT) { in autoconfig_irq()
1237 ICP = (port->iobase & 0xfe0) | 0x1f; in autoconfig_irq()
1243 if (uart_console(port)) in autoconfig_irq()
1255 if (port->flags & UPF_FOURPORT) { in autoconfig_irq()
1274 if (port->flags & UPF_FOURPORT) in autoconfig_irq()
1277 if (uart_console(port)) in autoconfig_irq()
1280 port->irq = (irq > 0) ? irq : 0; in autoconfig_irq()
1292 static void serial8250_stop_tx(struct uart_port *port) in serial8250_stop_tx() argument
1294 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_stop_tx()
1302 if (port->type == PORT_16C950) { in serial8250_stop_tx()
1309 static void serial8250_start_tx(struct uart_port *port) in serial8250_start_tx() argument
1311 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_start_tx()
1320 serial_port_out(port, UART_IER, up->ier); in serial8250_start_tx()
1334 if (port->type == PORT_16C950 && up->acr & UART_ACR_TXDIS) { in serial8250_start_tx()
1340 static void serial8250_throttle(struct uart_port *port) in serial8250_throttle() argument
1342 port->throttle(port); in serial8250_throttle()
1345 static void serial8250_unthrottle(struct uart_port *port) in serial8250_unthrottle() argument
1347 port->unthrottle(port); in serial8250_unthrottle()
1350 static void serial8250_stop_rx(struct uart_port *port) in serial8250_stop_rx() argument
1352 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_stop_rx()
1357 up->port.read_status_mask &= ~UART_LSR_DR; in serial8250_stop_rx()
1358 serial_port_out(port, UART_IER, up->ier); in serial8250_stop_rx()
1363 static void serial8250_disable_ms(struct uart_port *port) in serial8250_disable_ms() argument
1366 container_of(port, struct uart_8250_port, port); in serial8250_disable_ms()
1373 serial_port_out(port, UART_IER, up->ier); in serial8250_disable_ms()
1376 static void serial8250_enable_ms(struct uart_port *port) in serial8250_enable_ms() argument
1378 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_enable_ms()
1387 serial_port_out(port, UART_IER, up->ier); in serial8250_enable_ms()
1399 struct uart_port *port = &up->port; in serial8250_rx_chars() local
1418 port->icount.rx++; in serial8250_rx_chars()
1426 port->icount.brk++; in serial8250_rx_chars()
1433 if (uart_handle_break(port)) in serial8250_rx_chars()
1436 port->icount.parity++; in serial8250_rx_chars()
1438 port->icount.frame++; in serial8250_rx_chars()
1440 port->icount.overrun++; in serial8250_rx_chars()
1445 lsr &= port->read_status_mask; in serial8250_rx_chars()
1455 if (uart_handle_sysrq_char(port, ch)) in serial8250_rx_chars()
1458 uart_insert_char(port, lsr, UART_LSR_OE, ch, flag); in serial8250_rx_chars()
1463 spin_unlock(&port->lock); in serial8250_rx_chars()
1464 tty_flip_buffer_push(&port->state->port); in serial8250_rx_chars()
1465 spin_lock(&port->lock); in serial8250_rx_chars()
1472 struct uart_port *port = &up->port; in serial8250_tx_chars() local
1473 struct circ_buf *xmit = &port->state->xmit; in serial8250_tx_chars()
1476 if (port->x_char) { in serial8250_tx_chars()
1477 serial_out(up, UART_TX, port->x_char); in serial8250_tx_chars()
1478 port->icount.tx++; in serial8250_tx_chars()
1479 port->x_char = 0; in serial8250_tx_chars()
1482 if (uart_tx_stopped(port)) { in serial8250_tx_chars()
1483 serial8250_stop_tx(port); in serial8250_tx_chars()
1495 port->icount.tx++; in serial8250_tx_chars()
1499 if ((serial_port_in(port, UART_LSR) & BOTH_EMPTY) != in serial8250_tx_chars()
1506 uart_write_wakeup(port); in serial8250_tx_chars()
1523 struct uart_port *port = &up->port; in serial8250_modem_status() local
1529 port->state != NULL) { in serial8250_modem_status()
1531 port->icount.rng++; in serial8250_modem_status()
1533 port->icount.dsr++; in serial8250_modem_status()
1535 uart_handle_dcd_change(port, status & UART_MSR_DCD); in serial8250_modem_status()
1537 uart_handle_cts_change(port, status & UART_MSR_CTS); in serial8250_modem_status()
1539 wake_up_interruptible(&port->state->port.delta_msr_wait); in serial8250_modem_status()
1549 int serial8250_handle_irq(struct uart_port *port, unsigned int iir) in serial8250_handle_irq() argument
1553 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_handle_irq()
1559 spin_lock_irqsave(&port->lock, flags); in serial8250_handle_irq()
1561 status = serial_port_in(port, UART_LSR); in serial8250_handle_irq()
1577 spin_unlock_irqrestore(&port->lock, flags); in serial8250_handle_irq()
1582 static int serial8250_default_handle_irq(struct uart_port *port) in serial8250_default_handle_irq() argument
1584 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_default_handle_irq()
1590 iir = serial_port_in(port, UART_IIR); in serial8250_default_handle_irq()
1591 ret = serial8250_handle_irq(port, iir); in serial8250_default_handle_irq()
1603 static int exar_handle_irq(struct uart_port *port) in exar_handle_irq() argument
1606 unsigned int iir = serial_port_in(port, UART_IIR); in exar_handle_irq()
1609 ret = serial8250_handle_irq(port, iir); in exar_handle_irq()
1611 if ((port->type == PORT_XR17V35X) || in exar_handle_irq()
1612 (port->type == PORT_XR17D15X)) { in exar_handle_irq()
1613 int0 = serial_port_in(port, 0x80); in exar_handle_irq()
1614 int1 = serial_port_in(port, 0x81); in exar_handle_irq()
1615 int2 = serial_port_in(port, 0x82); in exar_handle_irq()
1616 int3 = serial_port_in(port, 0x83); in exar_handle_irq()
1622 static unsigned int serial8250_tx_empty(struct uart_port *port) in serial8250_tx_empty() argument
1624 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_tx_empty()
1630 spin_lock_irqsave(&port->lock, flags); in serial8250_tx_empty()
1631 lsr = serial_port_in(port, UART_LSR); in serial8250_tx_empty()
1633 spin_unlock_irqrestore(&port->lock, flags); in serial8250_tx_empty()
1640 static unsigned int serial8250_get_mctrl(struct uart_port *port) in serial8250_get_mctrl() argument
1642 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_get_mctrl()
1662 void serial8250_do_set_mctrl(struct uart_port *port, unsigned int mctrl) in serial8250_do_set_mctrl() argument
1664 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_do_set_mctrl()
1680 serial_port_out(port, UART_MCR, mcr); in serial8250_do_set_mctrl()
1684 static void serial8250_set_mctrl(struct uart_port *port, unsigned int mctrl) in serial8250_set_mctrl() argument
1686 if (port->set_mctrl) in serial8250_set_mctrl()
1687 port->set_mctrl(port, mctrl); in serial8250_set_mctrl()
1689 serial8250_do_set_mctrl(port, mctrl); in serial8250_set_mctrl()
1692 static void serial8250_break_ctl(struct uart_port *port, int break_state) in serial8250_break_ctl() argument
1694 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_break_ctl()
1698 spin_lock_irqsave(&port->lock, flags); in serial8250_break_ctl()
1703 serial_port_out(port, UART_LCR, up->lcr); in serial8250_break_ctl()
1704 spin_unlock_irqrestore(&port->lock, flags); in serial8250_break_ctl()
1729 if (up->port.flags & UPF_CONS_FLOW) { in wait_for_xmitr()
1748 static int serial8250_get_poll_char(struct uart_port *port) in serial8250_get_poll_char() argument
1750 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_get_poll_char()
1756 lsr = serial_port_in(port, UART_LSR); in serial8250_get_poll_char()
1763 status = serial_port_in(port, UART_RX); in serial8250_get_poll_char()
1770 static void serial8250_put_poll_char(struct uart_port *port, in serial8250_put_poll_char() argument
1774 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_put_poll_char()
1780 ier = serial_port_in(port, UART_IER); in serial8250_put_poll_char()
1782 serial_port_out(port, UART_IER, UART_IER_UUE); in serial8250_put_poll_char()
1784 serial_port_out(port, UART_IER, 0); in serial8250_put_poll_char()
1790 serial_port_out(port, UART_TX, c); in serial8250_put_poll_char()
1797 serial_port_out(port, UART_IER, ier); in serial8250_put_poll_char()
1803 int serial8250_do_startup(struct uart_port *port) in serial8250_do_startup() argument
1805 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_do_startup()
1810 if (!port->fifosize) in serial8250_do_startup()
1811 port->fifosize = uart_config[port->type].fifo_size; in serial8250_do_startup()
1813 up->tx_loadsz = uart_config[port->type].tx_loadsz; in serial8250_do_startup()
1815 up->capabilities = uart_config[port->type].flags; in serial8250_do_startup()
1818 if (port->iotype != up->cur_iotype) in serial8250_do_startup()
1819 set_io_from_upio(port); in serial8250_do_startup()
1822 if (port->type == PORT_16C950) { in serial8250_do_startup()
1825 serial_port_out(port, UART_LCR, UART_LCR_CONF_MODE_B); in serial8250_do_startup()
1826 serial_port_out(port, UART_EFR, UART_EFR_ECB); in serial8250_do_startup()
1827 serial_port_out(port, UART_IER, 0); in serial8250_do_startup()
1828 serial_port_out(port, UART_LCR, 0); in serial8250_do_startup()
1830 serial_port_out(port, UART_LCR, UART_LCR_CONF_MODE_B); in serial8250_do_startup()
1831 serial_port_out(port, UART_EFR, UART_EFR_ECB); in serial8250_do_startup()
1832 serial_port_out(port, UART_LCR, 0); in serial8250_do_startup()
1843 if (port->type == PORT_XR17V35X) { in serial8250_do_startup()
1848 serial_port_out(port, UART_XR_EFR, UART_EFR_ECB); in serial8250_do_startup()
1854 serial_port_out(port, UART_IER, 0); in serial8250_do_startup()
1866 serial_port_in(port, UART_LSR); in serial8250_do_startup()
1867 serial_port_in(port, UART_RX); in serial8250_do_startup()
1868 serial_port_in(port, UART_IIR); in serial8250_do_startup()
1869 serial_port_in(port, UART_MSR); in serial8250_do_startup()
1876 if (!(port->flags & UPF_BUGGY_UART) && in serial8250_do_startup()
1877 (serial_port_in(port, UART_LSR) == 0xff)) { in serial8250_do_startup()
1879 serial_index(port)); in serial8250_do_startup()
1887 if (port->type == PORT_16850) { in serial8250_do_startup()
1893 serial_port_out(port, UART_FCTR, in serial8250_do_startup()
1895 serial_port_out(port, UART_TRG, UART_TRG_96); in serial8250_do_startup()
1896 serial_port_out(port, UART_FCTR, in serial8250_do_startup()
1898 serial_port_out(port, UART_TRG, UART_TRG_96); in serial8250_do_startup()
1900 serial_port_out(port, UART_LCR, 0); in serial8250_do_startup()
1903 if (port->irq) { in serial8250_do_startup()
1913 spin_lock_irqsave(&port->lock, flags); in serial8250_do_startup()
1914 if (up->port.irqflags & IRQF_SHARED) in serial8250_do_startup()
1915 disable_irq_nosync(port->irq); in serial8250_do_startup()
1918 serial_port_out_sync(port, UART_IER, UART_IER_THRI); in serial8250_do_startup()
1920 iir1 = serial_port_in(port, UART_IIR); in serial8250_do_startup()
1921 serial_port_out(port, UART_IER, 0); in serial8250_do_startup()
1922 serial_port_out_sync(port, UART_IER, UART_IER_THRI); in serial8250_do_startup()
1924 iir = serial_port_in(port, UART_IIR); in serial8250_do_startup()
1925 serial_port_out(port, UART_IER, 0); in serial8250_do_startup()
1927 if (port->irqflags & IRQF_SHARED) in serial8250_do_startup()
1928 enable_irq(port->irq); in serial8250_do_startup()
1929 spin_unlock_irqrestore(&port->lock, flags); in serial8250_do_startup()
1937 up->port.flags & UPF_BUG_THRE) { in serial8250_do_startup()
1949 serial_port_out(port, UART_LCR, UART_LCR_WLEN8); in serial8250_do_startup()
1951 spin_lock_irqsave(&port->lock, flags); in serial8250_do_startup()
1952 if (up->port.flags & UPF_FOURPORT) { in serial8250_do_startup()
1953 if (!up->port.irq) in serial8250_do_startup()
1954 up->port.mctrl |= TIOCM_OUT1; in serial8250_do_startup()
1959 if (port->irq) in serial8250_do_startup()
1960 up->port.mctrl |= TIOCM_OUT2; in serial8250_do_startup()
1962 serial8250_set_mctrl(port, port->mctrl); in serial8250_do_startup()
1975 if (up->port.flags & UPF_NO_TXEN_TEST) in serial8250_do_startup()
1982 serial_port_out(port, UART_IER, UART_IER_THRI); in serial8250_do_startup()
1983 lsr = serial_port_in(port, UART_LSR); in serial8250_do_startup()
1984 iir = serial_port_in(port, UART_IIR); in serial8250_do_startup()
1985 serial_port_out(port, UART_IER, 0); in serial8250_do_startup()
1991 serial_index(port)); in serial8250_do_startup()
1998 spin_unlock_irqrestore(&port->lock, flags); in serial8250_do_startup()
2005 serial_port_in(port, UART_LSR); in serial8250_do_startup()
2006 serial_port_in(port, UART_RX); in serial8250_do_startup()
2007 serial_port_in(port, UART_IIR); in serial8250_do_startup()
2008 serial_port_in(port, UART_MSR); in serial8250_do_startup()
2019 serial_index(port)); in serial8250_do_startup()
2031 if (port->flags & UPF_FOURPORT) { in serial8250_do_startup()
2036 icp = (port->iobase & 0xfe0) | 0x01f; in serial8250_do_startup()
2047 static int serial8250_startup(struct uart_port *port) in serial8250_startup() argument
2049 if (port->startup) in serial8250_startup()
2050 return port->startup(port); in serial8250_startup()
2051 return serial8250_do_startup(port); in serial8250_startup()
2054 void serial8250_do_shutdown(struct uart_port *port) in serial8250_do_shutdown() argument
2056 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_do_shutdown()
2064 serial_port_out(port, UART_IER, 0); in serial8250_do_shutdown()
2069 spin_lock_irqsave(&port->lock, flags); in serial8250_do_shutdown()
2070 if (port->flags & UPF_FOURPORT) { in serial8250_do_shutdown()
2072 inb((port->iobase & 0xfe0) | 0x1f); in serial8250_do_shutdown()
2073 port->mctrl |= TIOCM_OUT1; in serial8250_do_shutdown()
2075 port->mctrl &= ~TIOCM_OUT2; in serial8250_do_shutdown()
2077 serial8250_set_mctrl(port, port->mctrl); in serial8250_do_shutdown()
2078 spin_unlock_irqrestore(&port->lock, flags); in serial8250_do_shutdown()
2083 serial_port_out(port, UART_LCR, in serial8250_do_shutdown()
2084 serial_port_in(port, UART_LCR) & ~UART_LCR_SBC); in serial8250_do_shutdown()
2098 serial_port_in(port, UART_RX); in serial8250_do_shutdown()
2105 static void serial8250_shutdown(struct uart_port *port) in serial8250_shutdown() argument
2107 if (port->shutdown) in serial8250_shutdown()
2108 port->shutdown(port); in serial8250_shutdown()
2110 serial8250_do_shutdown(port); in serial8250_shutdown()
2121 struct uart_port *port = &up->port; in xr17v35x_get_divisor() local
2124 quot_16 = DIV_ROUND_CLOSEST(port->uartclk, baud); in xr17v35x_get_divisor()
2134 struct uart_port *port = &up->port; in serial8250_get_divisor() local
2142 if ((port->flags & UPF_MAGIC_MULTIPLIER) && in serial8250_get_divisor()
2143 baud == (port->uartclk/4)) in serial8250_get_divisor()
2145 else if ((port->flags & UPF_MAGIC_MULTIPLIER) && in serial8250_get_divisor()
2146 baud == (port->uartclk/8)) in serial8250_get_divisor()
2148 else if (up->port.type == PORT_XR17V35X) in serial8250_get_divisor()
2151 quot = uart_get_divisor(port, baud); in serial8250_get_divisor()
2200 static void serial8250_set_divisor(struct uart_port *port, unsigned int baud, in serial8250_set_divisor() argument
2203 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_set_divisor()
2209 serial_port_out(port, UART_OMAP_OSC_12M_SEL, 1); in serial8250_set_divisor()
2211 serial_port_out(port, UART_OMAP_OSC_12M_SEL, 0); in serial8250_set_divisor()
2219 serial_port_out(port, UART_LCR, 0xe0); in serial8250_set_divisor()
2221 serial_port_out(port, UART_LCR, up->lcr | UART_LCR_DLAB); in serial8250_set_divisor()
2226 if (up->port.type == PORT_XR17V35X) in serial8250_set_divisor()
2227 serial_port_out(port, 0x2, quot_frac); in serial8250_set_divisor()
2231 serial8250_get_baud_rate(struct uart_port *port, struct ktermios *termios, in serial8250_get_baud_rate() argument
2234 unsigned int tolerance = port->uartclk / 100; in serial8250_get_baud_rate()
2242 return uart_get_baud_rate(port, termios, old, in serial8250_get_baud_rate()
2243 port->uartclk / 16 / 0xffff, in serial8250_get_baud_rate()
2244 (port->uartclk + tolerance) / 16); in serial8250_get_baud_rate()
2248 serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios, in serial8250_do_set_termios() argument
2251 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_do_set_termios()
2258 baud = serial8250_get_baud_rate(port, termios, old); in serial8250_do_set_termios()
2266 spin_lock_irqsave(&port->lock, flags); in serial8250_do_set_termios()
2270 if (up->capabilities & UART_CAP_FIFO && port->fifosize > 1) { in serial8250_do_set_termios()
2286 if (up->capabilities & UART_CAP_AFE && port->fifosize >= 32) { in serial8250_do_set_termios()
2295 uart_update_timeout(port, termios->c_cflag, baud); in serial8250_do_set_termios()
2297 port->read_status_mask = UART_LSR_OE | UART_LSR_THRE | UART_LSR_DR; in serial8250_do_set_termios()
2299 port->read_status_mask |= UART_LSR_FE | UART_LSR_PE; in serial8250_do_set_termios()
2301 port->read_status_mask |= UART_LSR_BI; in serial8250_do_set_termios()
2306 port->ignore_status_mask = 0; in serial8250_do_set_termios()
2308 port->ignore_status_mask |= UART_LSR_PE | UART_LSR_FE; in serial8250_do_set_termios()
2310 port->ignore_status_mask |= UART_LSR_BI; in serial8250_do_set_termios()
2316 port->ignore_status_mask |= UART_LSR_OE; in serial8250_do_set_termios()
2323 port->ignore_status_mask |= UART_LSR_DR; in serial8250_do_set_termios()
2330 UART_ENABLE_MS(&up->port, termios->c_cflag)) in serial8250_do_set_termios()
2337 serial_port_out(port, UART_IER, up->ier); in serial8250_do_set_termios()
2349 serial_port_out(port, UART_LCR, UART_LCR_CONF_MODE_B); in serial8250_do_set_termios()
2350 if (port->flags & UPF_EXAR_EFR) in serial8250_do_set_termios()
2351 serial_port_out(port, UART_XR_EFR, efr); in serial8250_do_set_termios()
2353 serial_port_out(port, UART_EFR, efr); in serial8250_do_set_termios()
2356 serial8250_set_divisor(port, baud, quot, frac); in serial8250_do_set_termios()
2362 if (port->type == PORT_16750) in serial8250_do_set_termios()
2363 serial_port_out(port, UART_FCR, up->fcr); in serial8250_do_set_termios()
2365 serial_port_out(port, UART_LCR, up->lcr); /* reset DLAB */ in serial8250_do_set_termios()
2366 if (port->type != PORT_16750) { in serial8250_do_set_termios()
2369 serial_port_out(port, UART_FCR, UART_FCR_ENABLE_FIFO); in serial8250_do_set_termios()
2370 serial_port_out(port, UART_FCR, up->fcr); /* set fcr */ in serial8250_do_set_termios()
2372 serial8250_set_mctrl(port, port->mctrl); in serial8250_do_set_termios()
2373 spin_unlock_irqrestore(&port->lock, flags); in serial8250_do_set_termios()
2383 serial8250_set_termios(struct uart_port *port, struct ktermios *termios, in serial8250_set_termios() argument
2386 if (port->set_termios) in serial8250_set_termios()
2387 port->set_termios(port, termios, old); in serial8250_set_termios()
2389 serial8250_do_set_termios(port, termios, old); in serial8250_set_termios()
2393 serial8250_set_ldisc(struct uart_port *port, struct ktermios *termios) in serial8250_set_ldisc() argument
2396 port->flags |= UPF_HARDPPS_CD; in serial8250_set_ldisc()
2397 spin_lock_irq(&port->lock); in serial8250_set_ldisc()
2398 serial8250_enable_ms(port); in serial8250_set_ldisc()
2399 spin_unlock_irq(&port->lock); in serial8250_set_ldisc()
2401 port->flags &= ~UPF_HARDPPS_CD; in serial8250_set_ldisc()
2402 if (!UART_ENABLE_MS(port, termios->c_cflag)) { in serial8250_set_ldisc()
2403 spin_lock_irq(&port->lock); in serial8250_set_ldisc()
2404 serial8250_disable_ms(port); in serial8250_set_ldisc()
2405 spin_unlock_irq(&port->lock); in serial8250_set_ldisc()
2411 void serial8250_do_pm(struct uart_port *port, unsigned int state, in serial8250_do_pm() argument
2414 struct uart_8250_port *p = up_to_u8250p(port); in serial8250_do_pm()
2421 serial8250_pm(struct uart_port *port, unsigned int state, in serial8250_pm() argument
2424 if (port->pm) in serial8250_pm()
2425 port->pm(port, state, oldstate); in serial8250_pm()
2427 serial8250_do_pm(port, state, oldstate); in serial8250_pm()
2432 if (pt->port.mapsize) in serial8250_port_size()
2433 return pt->port.mapsize; in serial8250_port_size()
2434 if (pt->port.iotype == UPIO_AU) { in serial8250_port_size()
2435 if (pt->port.type == PORT_RT2880) in serial8250_port_size()
2440 return 0x16 << pt->port.regshift; in serial8250_port_size()
2442 return 8 << pt->port.regshift; in serial8250_port_size()
2451 struct uart_port *port = &up->port; in serial8250_request_std_resource() local
2454 switch (port->iotype) { in serial8250_request_std_resource()
2460 if (!port->mapbase) in serial8250_request_std_resource()
2463 if (!request_mem_region(port->mapbase, size, "serial")) { in serial8250_request_std_resource()
2468 if (port->flags & UPF_IOREMAP) { in serial8250_request_std_resource()
2469 port->membase = ioremap_nocache(port->mapbase, size); in serial8250_request_std_resource()
2470 if (!port->membase) { in serial8250_request_std_resource()
2471 release_mem_region(port->mapbase, size); in serial8250_request_std_resource()
2479 if (!request_region(port->iobase, size, "serial")) in serial8250_request_std_resource()
2489 struct uart_port *port = &up->port; in serial8250_release_std_resource() local
2491 switch (port->iotype) { in serial8250_release_std_resource()
2497 if (!port->mapbase) in serial8250_release_std_resource()
2500 if (port->flags & UPF_IOREMAP) { in serial8250_release_std_resource()
2501 iounmap(port->membase); in serial8250_release_std_resource()
2502 port->membase = NULL; in serial8250_release_std_resource()
2505 release_mem_region(port->mapbase, size); in serial8250_release_std_resource()
2510 release_region(port->iobase, size); in serial8250_release_std_resource()
2515 static void serial8250_release_port(struct uart_port *port) in serial8250_release_port() argument
2517 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_release_port()
2522 static int serial8250_request_port(struct uart_port *port) in serial8250_request_port() argument
2524 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_request_port()
2531 const struct serial8250_config *conf_type = &uart_config[up->port.type]; in fcr_get_rxtrig_bytes()
2541 const struct serial8250_config *conf_type = &uart_config[up->port.type]; in bytes_to_fcr_rxtrig()
2556 static int do_get_rxtrig(struct tty_port *port) in do_get_rxtrig() argument
2558 struct uart_state *state = container_of(port, struct uart_state, port); in do_get_rxtrig()
2561 container_of(uport, struct uart_8250_port, port); in do_get_rxtrig()
2569 static int do_serial8250_get_rxtrig(struct tty_port *port) in do_serial8250_get_rxtrig() argument
2573 mutex_lock(&port->mutex); in do_serial8250_get_rxtrig()
2574 rxtrig_bytes = do_get_rxtrig(port); in do_serial8250_get_rxtrig()
2575 mutex_unlock(&port->mutex); in do_serial8250_get_rxtrig()
2583 struct tty_port *port = dev_get_drvdata(dev); in serial8250_get_attr_rx_trig_bytes() local
2586 rxtrig_bytes = do_serial8250_get_rxtrig(port); in serial8250_get_attr_rx_trig_bytes()
2593 static int do_set_rxtrig(struct tty_port *port, unsigned char bytes) in do_set_rxtrig() argument
2595 struct uart_state *state = container_of(port, struct uart_state, port); in do_set_rxtrig()
2598 container_of(uport, struct uart_8250_port, port); in do_set_rxtrig()
2616 static int do_serial8250_set_rxtrig(struct tty_port *port, unsigned char bytes) in do_serial8250_set_rxtrig() argument
2620 mutex_lock(&port->mutex); in do_serial8250_set_rxtrig()
2621 ret = do_set_rxtrig(port, bytes); in do_serial8250_set_rxtrig()
2622 mutex_unlock(&port->mutex); in do_serial8250_set_rxtrig()
2630 struct tty_port *port = dev_get_drvdata(dev); in serial8250_set_attr_rx_trig_bytes() local
2641 ret = do_serial8250_set_rxtrig(port, bytes); in serial8250_set_attr_rx_trig_bytes()
2663 const struct serial8250_config *conf_type = &uart_config[up->port.type]; in register_dev_spec_attr_grp()
2666 up->port.attr_group = &serial8250_dev_attr_group; in register_dev_spec_attr_grp()
2669 static void serial8250_config_port(struct uart_port *port, int flags) in serial8250_config_port() argument
2671 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_config_port()
2682 if (port->iotype != up->cur_iotype) in serial8250_config_port()
2683 set_io_from_upio(port); in serial8250_config_port()
2689 if (port->type == PORT_16550A && port->iotype == UPIO_AU) in serial8250_config_port()
2693 if (port->type == PORT_TEGRA) in serial8250_config_port()
2696 if (port->type != PORT_UNKNOWN && flags & UART_CONFIG_IRQ) in serial8250_config_port()
2699 if (port->type == PORT_UNKNOWN) in serial8250_config_port()
2703 if ((port->type == PORT_XR17V35X) || in serial8250_config_port()
2704 (port->type == PORT_XR17D15X)) in serial8250_config_port()
2705 port->handle_irq = exar_handle_irq; in serial8250_config_port()
2708 up->fcr = uart_config[up->port.type].fcr; in serial8250_config_port()
2712 serial8250_verify_port(struct uart_port *port, struct serial_struct *ser) in serial8250_verify_port() argument
2723 serial8250_type(struct uart_port *port) in serial8250_type() argument
2725 int type = port->type; in serial8250_type()
2761 struct uart_port *port = &up->port; in serial8250_init_port() local
2763 spin_lock_init(&port->lock); in serial8250_init_port()
2764 port->ops = &serial8250_pops; in serial8250_init_port()
2772 struct uart_port *port = &up->port; in serial8250_set_defaults() local
2774 if (up->port.flags & UPF_FIXED_TYPE) { in serial8250_set_defaults()
2775 unsigned int type = up->port.type; in serial8250_set_defaults()
2777 if (!up->port.fifosize) in serial8250_set_defaults()
2778 up->port.fifosize = uart_config[type].fifo_size; in serial8250_set_defaults()
2785 set_io_from_upio(port); in serial8250_set_defaults()
2799 static void serial8250_console_putchar(struct uart_port *port, int ch) in serial8250_console_putchar() argument
2801 struct uart_8250_port *up = up_to_u8250p(port); in serial8250_console_putchar()
2804 serial_port_out(port, UART_TX, ch); in serial8250_console_putchar()
2812 struct uart_port *port = &up->port; in serial8250_console_restore() local
2816 termios.c_cflag = port->cons->cflag; in serial8250_console_restore()
2817 if (port->state->port.tty && termios.c_cflag == 0) in serial8250_console_restore()
2818 termios.c_cflag = port->state->port.tty->termios.c_cflag; in serial8250_console_restore()
2820 baud = serial8250_get_baud_rate(port, &termios, NULL); in serial8250_console_restore()
2823 serial8250_set_divisor(port, baud, quot, frac); in serial8250_console_restore()
2824 serial_port_out(port, UART_LCR, up->lcr); in serial8250_console_restore()
2825 serial_port_out(port, UART_MCR, UART_MCR_DTR | UART_MCR_RTS); in serial8250_console_restore()
2837 struct uart_port *port = &up->port; in serial8250_console_write() local
2846 if (port->sysrq) in serial8250_console_write()
2849 locked = spin_trylock_irqsave(&port->lock, flags); in serial8250_console_write()
2851 spin_lock_irqsave(&port->lock, flags); in serial8250_console_write()
2856 ier = serial_port_in(port, UART_IER); in serial8250_console_write()
2859 serial_port_out(port, UART_IER, UART_IER_UUE); in serial8250_console_write()
2861 serial_port_out(port, UART_IER, 0); in serial8250_console_write()
2864 if (up->canary && (up->canary != serial_port_in(port, UART_SCR))) { in serial8250_console_write()
2869 uart_console_write(port, s, count, serial8250_console_putchar); in serial8250_console_write()
2876 serial_port_out(port, UART_IER, ier); in serial8250_console_write()
2889 spin_unlock_irqrestore(&port->lock, flags); in serial8250_console_write()
2893 static unsigned int probe_baud(struct uart_port *port) in probe_baud() argument
2898 lcr = serial_port_in(port, UART_LCR); in probe_baud()
2899 serial_port_out(port, UART_LCR, lcr | UART_LCR_DLAB); in probe_baud()
2900 dll = serial_port_in(port, UART_DLL); in probe_baud()
2901 dlm = serial_port_in(port, UART_DLM); in probe_baud()
2902 serial_port_out(port, UART_LCR, lcr); in probe_baud()
2905 return (port->uartclk / 16) / quot; in probe_baud()
2908 int serial8250_console_setup(struct uart_port *port, char *options, bool probe) in serial8250_console_setup() argument
2915 if (!port->iobase && !port->membase) in serial8250_console_setup()
2921 baud = probe_baud(port); in serial8250_console_setup()
2923 return uart_set_options(port, port->cons, baud, parity, bits, flow); in serial8250_console_setup()