Lines Matching refs:port

135 	struct uart_port	port;  member
175 #define to_uart_omap_port(p) ((container_of((p), struct uart_omap_port, port)))
184 offset <<= up->port.regshift; in serial_in()
185 return readw(up->port.membase + offset); in serial_in()
190 offset <<= up->port.regshift; in serial_out()
191 writew(value, up->port.membase + offset); in serial_out()
244 static inline int calculate_baud_abs_diff(struct uart_port *port, in calculate_baud_abs_diff() argument
247 unsigned int n = port->uartclk / (mode * baud); in calculate_baud_abs_diff()
253 abs_diff = baud - (port->uartclk / (mode * n)); in calculate_baud_abs_diff()
272 serial_omap_baud_is_mode16(struct uart_port *port, unsigned int baud) in serial_omap_baud_is_mode16() argument
274 int abs_diff_13 = calculate_baud_abs_diff(port, baud, 13); in serial_omap_baud_is_mode16()
275 int abs_diff_16 = calculate_baud_abs_diff(port, baud, 16); in serial_omap_baud_is_mode16()
286 serial_omap_get_divisor(struct uart_port *port, unsigned int baud) in serial_omap_get_divisor() argument
290 if (!serial_omap_baud_is_mode16(port, baud)) in serial_omap_get_divisor()
294 return port->uartclk/(mode * baud); in serial_omap_get_divisor()
297 static void serial_omap_enable_ms(struct uart_port *port) in serial_omap_enable_ms() argument
299 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_enable_ms()
301 dev_dbg(up->port.dev, "serial_omap_enable_ms+%d\n", up->port.line); in serial_omap_enable_ms()
310 static void serial_omap_stop_tx(struct uart_port *port) in serial_omap_stop_tx() argument
312 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_stop_tx()
318 if (port->rs485.flags & SER_RS485_ENABLED) { in serial_omap_stop_tx()
329 res = (port->rs485.flags & SER_RS485_RTS_AFTER_SEND) ? in serial_omap_stop_tx()
332 if (port->rs485.delay_rts_after_send > 0) in serial_omap_stop_tx()
334 port->rs485.delay_rts_after_send); in serial_omap_stop_tx()
357 if ((port->rs485.flags & SER_RS485_ENABLED) && in serial_omap_stop_tx()
358 !(port->rs485.flags & SER_RS485_RX_DURING_TX)) { in serial_omap_stop_tx()
366 up->port.read_status_mask |= UART_LSR_DR; in serial_omap_stop_tx()
374 static void serial_omap_stop_rx(struct uart_port *port) in serial_omap_stop_rx() argument
376 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_stop_rx()
380 up->port.read_status_mask &= ~UART_LSR_DR; in serial_omap_stop_rx()
388 struct circ_buf *xmit = &up->port.state->xmit; in transmit_chars()
391 if (up->port.x_char) { in transmit_chars()
392 serial_out(up, UART_TX, up->port.x_char); in transmit_chars()
393 up->port.icount.tx++; in transmit_chars()
394 up->port.x_char = 0; in transmit_chars()
397 if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) { in transmit_chars()
398 serial_omap_stop_tx(&up->port); in transmit_chars()
401 count = up->port.fifosize / 4; in transmit_chars()
405 up->port.icount.tx++; in transmit_chars()
411 uart_write_wakeup(&up->port); in transmit_chars()
414 serial_omap_stop_tx(&up->port); in transmit_chars()
425 static void serial_omap_start_tx(struct uart_port *port) in serial_omap_start_tx() argument
427 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_start_tx()
433 if (port->rs485.flags & SER_RS485_ENABLED) { in serial_omap_start_tx()
439 res = (port->rs485.flags & SER_RS485_RTS_ON_SEND) ? 1 : 0; in serial_omap_start_tx()
442 if (port->rs485.delay_rts_before_send > 0) in serial_omap_start_tx()
443 mdelay(port->rs485.delay_rts_before_send); in serial_omap_start_tx()
447 if ((port->rs485.flags & SER_RS485_ENABLED) && in serial_omap_start_tx()
448 !(port->rs485.flags & SER_RS485_RX_DURING_TX)) in serial_omap_start_tx()
449 serial_omap_stop_rx(port); in serial_omap_start_tx()
456 static void serial_omap_throttle(struct uart_port *port) in serial_omap_throttle() argument
458 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_throttle()
462 spin_lock_irqsave(&up->port.lock, flags); in serial_omap_throttle()
465 spin_unlock_irqrestore(&up->port.lock, flags); in serial_omap_throttle()
470 static void serial_omap_unthrottle(struct uart_port *port) in serial_omap_unthrottle() argument
472 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_unthrottle()
476 spin_lock_irqsave(&up->port.lock, flags); in serial_omap_unthrottle()
479 spin_unlock_irqrestore(&up->port.lock, flags); in serial_omap_unthrottle()
495 up->port.state != NULL) { in check_modem_status()
497 up->port.icount.rng++; in check_modem_status()
499 up->port.icount.dsr++; in check_modem_status()
502 (&up->port, status & UART_MSR_DCD); in check_modem_status()
505 (&up->port, status & UART_MSR_CTS); in check_modem_status()
506 wake_up_interruptible(&up->port.state->port.delta_msr_wait); in check_modem_status()
520 up->port.icount.rx++; in serial_omap_rlsi()
526 up->port.icount.brk++; in serial_omap_rlsi()
533 if (uart_handle_break(&up->port)) in serial_omap_rlsi()
540 up->port.icount.parity++; in serial_omap_rlsi()
545 up->port.icount.frame++; in serial_omap_rlsi()
549 up->port.icount.overrun++; in serial_omap_rlsi()
552 if (up->port.line == up->port.cons->index) { in serial_omap_rlsi()
557 uart_insert_char(&up->port, lsr, UART_LSR_OE, 0, flag); in serial_omap_rlsi()
570 up->port.icount.rx++; in serial_omap_rdi()
572 if (uart_handle_sysrq_char(&up->port, ch)) in serial_omap_rdi()
575 uart_insert_char(&up->port, lsr, UART_LSR_OE, ch, flag); in serial_omap_rdi()
591 spin_lock(&up->port.lock); in serial_omap_irq()
630 spin_unlock(&up->port.lock); in serial_omap_irq()
632 tty_flip_buffer_push(&up->port.state->port); in serial_omap_irq()
641 static unsigned int serial_omap_tx_empty(struct uart_port *port) in serial_omap_tx_empty() argument
643 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_tx_empty()
648 dev_dbg(up->port.dev, "serial_omap_tx_empty+%d\n", up->port.line); in serial_omap_tx_empty()
649 spin_lock_irqsave(&up->port.lock, flags); in serial_omap_tx_empty()
651 spin_unlock_irqrestore(&up->port.lock, flags); in serial_omap_tx_empty()
657 static unsigned int serial_omap_get_mctrl(struct uart_port *port) in serial_omap_get_mctrl() argument
659 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_get_mctrl()
668 dev_dbg(up->port.dev, "serial_omap_get_mctrl+%d\n", up->port.line); in serial_omap_get_mctrl()
681 static void serial_omap_set_mctrl(struct uart_port *port, unsigned int mctrl) in serial_omap_set_mctrl() argument
683 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_set_mctrl()
686 dev_dbg(up->port.dev, "serial_omap_set_mctrl+%d\n", up->port.line); in serial_omap_set_mctrl()
708 if ((mctrl & TIOCM_RTS) && (port->status & UPSTAT_AUTORTS)) in serial_omap_set_mctrl()
719 static void serial_omap_break_ctl(struct uart_port *port, int break_state) in serial_omap_break_ctl() argument
721 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_break_ctl()
724 dev_dbg(up->port.dev, "serial_omap_break_ctl+%d\n", up->port.line); in serial_omap_break_ctl()
726 spin_lock_irqsave(&up->port.lock, flags); in serial_omap_break_ctl()
732 spin_unlock_irqrestore(&up->port.lock, flags); in serial_omap_break_ctl()
737 static int serial_omap_startup(struct uart_port *port) in serial_omap_startup() argument
739 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_startup()
746 retval = request_irq(up->port.irq, serial_omap_irq, up->port.irqflags, in serial_omap_startup()
754 up->port.irqflags, up->name, up); in serial_omap_startup()
756 free_irq(up->port.irq, up); in serial_omap_startup()
762 dev_dbg(up->port.dev, "serial_omap_startup+%d\n", up->port.line); in serial_omap_startup()
784 spin_lock_irqsave(&up->port.lock, flags); in serial_omap_startup()
788 up->port.mctrl |= TIOCM_OUT2; in serial_omap_startup()
789 serial_omap_set_mctrl(&up->port, up->port.mctrl); in serial_omap_startup()
790 spin_unlock_irqrestore(&up->port.lock, flags); in serial_omap_startup()
814 static void serial_omap_shutdown(struct uart_port *port) in serial_omap_shutdown() argument
816 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_shutdown()
819 dev_dbg(up->port.dev, "serial_omap_shutdown+%d\n", up->port.line); in serial_omap_shutdown()
828 spin_lock_irqsave(&up->port.lock, flags); in serial_omap_shutdown()
829 up->port.mctrl &= ~TIOCM_OUT2; in serial_omap_shutdown()
830 serial_omap_set_mctrl(&up->port, up->port.mctrl); in serial_omap_shutdown()
831 spin_unlock_irqrestore(&up->port.lock, flags); in serial_omap_shutdown()
847 free_irq(up->port.irq, up); in serial_omap_shutdown()
861 serial_omap_set_termios(struct uart_port *port, struct ktermios *termios, in serial_omap_set_termios() argument
864 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_set_termios()
898 baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/13); in serial_omap_set_termios()
899 quot = serial_omap_get_divisor(port, baud); in serial_omap_set_termios()
902 up->calc_latency = (USEC_PER_SEC * up->port.fifosize) / (baud / 8); in serial_omap_set_termios()
918 spin_lock_irqsave(&up->port.lock, flags); in serial_omap_set_termios()
923 uart_update_timeout(port, termios->c_cflag, baud); in serial_omap_set_termios()
925 up->port.read_status_mask = UART_LSR_OE | UART_LSR_THRE | UART_LSR_DR; in serial_omap_set_termios()
927 up->port.read_status_mask |= UART_LSR_FE | UART_LSR_PE; in serial_omap_set_termios()
929 up->port.read_status_mask |= UART_LSR_BI; in serial_omap_set_termios()
934 up->port.ignore_status_mask = 0; in serial_omap_set_termios()
936 up->port.ignore_status_mask |= UART_LSR_PE | UART_LSR_FE; in serial_omap_set_termios()
938 up->port.ignore_status_mask |= UART_LSR_BI; in serial_omap_set_termios()
944 up->port.ignore_status_mask |= UART_LSR_OE; in serial_omap_set_termios()
951 up->port.ignore_status_mask |= UART_LSR_DR; in serial_omap_set_termios()
957 if (UART_ENABLE_MS(&up->port, termios->c_cflag)) in serial_omap_set_termios()
1041 if (!serial_omap_baud_is_mode16(port, baud)) in serial_omap_set_termios()
1065 up->port.status &= ~(UPSTAT_AUTOCTS | UPSTAT_AUTORTS | UPSTAT_AUTOXOFF); in serial_omap_set_termios()
1067 if (termios->c_cflag & CRTSCTS && up->port.flags & UPF_HARD_FLOW) { in serial_omap_set_termios()
1069 up->port.status |= UPSTAT_AUTOCTS | UPSTAT_AUTORTS; in serial_omap_set_termios()
1076 if (up->port.flags & UPF_SOFT_FLOW) { in serial_omap_set_termios()
1094 up->port.status |= UPSTAT_AUTOXOFF; in serial_omap_set_termios()
1114 serial_omap_set_mctrl(&up->port, up->port.mctrl); in serial_omap_set_termios()
1116 spin_unlock_irqrestore(&up->port.lock, flags); in serial_omap_set_termios()
1119 dev_dbg(up->port.dev, "serial_omap_set_termios+%d\n", up->port.line); in serial_omap_set_termios()
1123 serial_omap_pm(struct uart_port *port, unsigned int state, in serial_omap_pm() argument
1126 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_pm()
1129 dev_dbg(up->port.dev, "serial_omap_pm+%d\n", up->port.line); in serial_omap_pm()
1153 static void serial_omap_release_port(struct uart_port *port) in serial_omap_release_port() argument
1155 dev_dbg(port->dev, "serial_omap_release_port+\n"); in serial_omap_release_port()
1158 static int serial_omap_request_port(struct uart_port *port) in serial_omap_request_port() argument
1160 dev_dbg(port->dev, "serial_omap_request_port+\n"); in serial_omap_request_port()
1164 static void serial_omap_config_port(struct uart_port *port, int flags) in serial_omap_config_port() argument
1166 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_config_port()
1168 dev_dbg(up->port.dev, "serial_omap_config_port+%d\n", in serial_omap_config_port()
1169 up->port.line); in serial_omap_config_port()
1170 up->port.type = PORT_OMAP; in serial_omap_config_port()
1171 up->port.flags |= UPF_SOFT_FLOW | UPF_HARD_FLOW; in serial_omap_config_port()
1175 serial_omap_verify_port(struct uart_port *port, struct serial_struct *ser) in serial_omap_verify_port() argument
1178 dev_dbg(port->dev, "serial_omap_verify_port+\n"); in serial_omap_verify_port()
1183 serial_omap_type(struct uart_port *port) in serial_omap_type() argument
1185 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_type()
1187 dev_dbg(up->port.dev, "serial_omap_type+%d\n", up->port.line); in serial_omap_type()
1210 if (up->port.flags & UPF_CONS_FLOW) { in wait_for_xmitr()
1226 static void serial_omap_poll_put_char(struct uart_port *port, unsigned char ch) in serial_omap_poll_put_char() argument
1228 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_poll_put_char()
1237 static int serial_omap_poll_get_char(struct uart_port *port) in serial_omap_poll_get_char() argument
1239 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_poll_get_char()
1266 static void serial_omap_console_putchar(struct uart_port *port, int ch) in serial_omap_console_putchar() argument
1268 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_console_putchar()
1286 if (up->port.sysrq) in serial_omap_console_write()
1289 locked = spin_trylock(&up->port.lock); in serial_omap_console_write()
1291 spin_lock(&up->port.lock); in serial_omap_console_write()
1299 uart_console_write(&up->port, s, count, serial_omap_console_putchar); in serial_omap_console_write()
1320 spin_unlock(&up->port.lock); in serial_omap_console_write()
1340 return uart_set_options(&up->port, co, baud, parity, bits, flow); in serial_omap_console_setup()
1355 serial_omap_console_ports[up->port.line] = up; in serial_omap_add_console_port()
1371 serial_omap_config_rs485(struct uart_port *port, struct serial_rs485 *rs485) in serial_omap_config_rs485() argument
1373 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_config_rs485()
1389 port->rs485 = *rs485; in serial_omap_config_rs485()
1397 val = (port->rs485.flags & SER_RS485_ENABLED) ? in serial_omap_config_rs485()
1399 val = (port->rs485.flags & val) ? 1 : 0; in serial_omap_config_rs485()
1402 port->rs485.flags &= ~SER_RS485_ENABLED; in serial_omap_config_rs485()
1411 if (!(port->rs485.flags & SER_RS485_ENABLED) && in serial_omap_config_rs485()
1478 uart_suspend_port(&serial_omap_reg, &up->port); in serial_omap_suspend()
1496 uart_resume_port(&serial_omap_reg, &up->port); in serial_omap_resume()
1510 mvr = readl(up->port.membase + (UART_OMAP_MVER << up->port.regshift)); in omap_serial_fill_features_erratas()
1576 struct serial_rs485 *rs485conf = &up->port.rs485; in serial_omap_probe_rs485()
1657 up->port.dev = &pdev->dev; in serial_omap_probe()
1658 up->port.type = PORT_OMAP; in serial_omap_probe()
1659 up->port.iotype = UPIO_MEM; in serial_omap_probe()
1660 up->port.irq = uartirq; in serial_omap_probe()
1661 up->port.regshift = 2; in serial_omap_probe()
1662 up->port.fifosize = 64; in serial_omap_probe()
1663 up->port.ops = &serial_omap_pops; in serial_omap_probe()
1675 up->port.line = ret; in serial_omap_probe()
1677 if (up->port.line >= OMAP_MAX_HSUART_PORTS) { in serial_omap_probe()
1678 dev_err(&pdev->dev, "uart ID %d > MAX %d.\n", up->port.line, in serial_omap_probe()
1686 dev_info(up->port.dev, "no wakeirq for uart%d\n", in serial_omap_probe()
1687 up->port.line); in serial_omap_probe()
1693 sprintf(up->name, "OMAP UART%d", up->port.line); in serial_omap_probe()
1694 up->port.mapbase = mem->start; in serial_omap_probe()
1695 up->port.membase = base; in serial_omap_probe()
1696 up->port.flags = omap_up_info->flags; in serial_omap_probe()
1697 up->port.uartclk = omap_up_info->uartclk; in serial_omap_probe()
1698 up->port.rs485_config = serial_omap_config_rs485; in serial_omap_probe()
1699 if (!up->port.uartclk) { in serial_omap_probe()
1700 up->port.uartclk = DEFAULT_CLK_SPEED; in serial_omap_probe()
1728 ui[up->port.line] = up; in serial_omap_probe()
1731 ret = uart_add_one_port(&serial_omap_reg, &up->port); in serial_omap_probe()
1755 uart_remove_one_port(&serial_omap_reg, &up->port); in serial_omap_remove()
1841 uart_console(&up->port)) in serial_omap_runtime_suspend()