Lines Matching refs:port

136 	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()
229 static inline int calculate_baud_abs_diff(struct uart_port *port, in calculate_baud_abs_diff() argument
232 unsigned int n = port->uartclk / (mode * baud); in calculate_baud_abs_diff()
238 abs_diff = baud - (port->uartclk / (mode * n)); in calculate_baud_abs_diff()
257 serial_omap_baud_is_mode16(struct uart_port *port, unsigned int baud) in serial_omap_baud_is_mode16() argument
259 int abs_diff_13 = calculate_baud_abs_diff(port, baud, 13); in serial_omap_baud_is_mode16()
260 int abs_diff_16 = calculate_baud_abs_diff(port, baud, 16); in serial_omap_baud_is_mode16()
271 serial_omap_get_divisor(struct uart_port *port, unsigned int baud) in serial_omap_get_divisor() argument
275 if (!serial_omap_baud_is_mode16(port, baud)) in serial_omap_get_divisor()
279 return port->uartclk/(mode * baud); in serial_omap_get_divisor()
282 static void serial_omap_enable_ms(struct uart_port *port) in serial_omap_enable_ms() argument
284 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_enable_ms()
286 dev_dbg(up->port.dev, "serial_omap_enable_ms+%d\n", up->port.line); in serial_omap_enable_ms()
295 static void serial_omap_stop_tx(struct uart_port *port) in serial_omap_stop_tx() argument
297 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_stop_tx()
303 if (port->rs485.flags & SER_RS485_ENABLED) { in serial_omap_stop_tx()
314 res = (port->rs485.flags & SER_RS485_RTS_AFTER_SEND) ? in serial_omap_stop_tx()
317 if (port->rs485.delay_rts_after_send > 0) in serial_omap_stop_tx()
319 port->rs485.delay_rts_after_send); in serial_omap_stop_tx()
342 if ((port->rs485.flags & SER_RS485_ENABLED) && in serial_omap_stop_tx()
343 !(port->rs485.flags & SER_RS485_RX_DURING_TX)) { in serial_omap_stop_tx()
351 up->port.read_status_mask |= UART_LSR_DR; in serial_omap_stop_tx()
359 static void serial_omap_stop_rx(struct uart_port *port) in serial_omap_stop_rx() argument
361 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_stop_rx()
365 up->port.read_status_mask &= ~UART_LSR_DR; in serial_omap_stop_rx()
373 struct circ_buf *xmit = &up->port.state->xmit; in transmit_chars()
376 if (up->port.x_char) { in transmit_chars()
377 serial_out(up, UART_TX, up->port.x_char); in transmit_chars()
378 up->port.icount.tx++; in transmit_chars()
379 up->port.x_char = 0; in transmit_chars()
382 if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) { in transmit_chars()
383 serial_omap_stop_tx(&up->port); in transmit_chars()
386 count = up->port.fifosize / 4; in transmit_chars()
390 up->port.icount.tx++; in transmit_chars()
396 uart_write_wakeup(&up->port); in transmit_chars()
399 serial_omap_stop_tx(&up->port); in transmit_chars()
410 static void serial_omap_start_tx(struct uart_port *port) in serial_omap_start_tx() argument
412 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_start_tx()
418 if (port->rs485.flags & SER_RS485_ENABLED) { in serial_omap_start_tx()
424 res = (port->rs485.flags & SER_RS485_RTS_ON_SEND) ? 1 : 0; in serial_omap_start_tx()
427 if (port->rs485.delay_rts_before_send > 0) in serial_omap_start_tx()
428 mdelay(port->rs485.delay_rts_before_send); in serial_omap_start_tx()
432 if ((port->rs485.flags & SER_RS485_ENABLED) && in serial_omap_start_tx()
433 !(port->rs485.flags & SER_RS485_RX_DURING_TX)) in serial_omap_start_tx()
434 serial_omap_stop_rx(port); in serial_omap_start_tx()
441 static void serial_omap_throttle(struct uart_port *port) in serial_omap_throttle() argument
443 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_throttle()
447 spin_lock_irqsave(&up->port.lock, flags); in serial_omap_throttle()
450 spin_unlock_irqrestore(&up->port.lock, flags); in serial_omap_throttle()
455 static void serial_omap_unthrottle(struct uart_port *port) in serial_omap_unthrottle() argument
457 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_unthrottle()
461 spin_lock_irqsave(&up->port.lock, flags); in serial_omap_unthrottle()
464 spin_unlock_irqrestore(&up->port.lock, flags); in serial_omap_unthrottle()
480 up->port.state != NULL) { in check_modem_status()
482 up->port.icount.rng++; in check_modem_status()
484 up->port.icount.dsr++; in check_modem_status()
487 (&up->port, status & UART_MSR_DCD); in check_modem_status()
490 (&up->port, status & UART_MSR_CTS); in check_modem_status()
491 wake_up_interruptible(&up->port.state->port.delta_msr_wait); in check_modem_status()
505 up->port.icount.rx++; in serial_omap_rlsi()
511 up->port.icount.brk++; in serial_omap_rlsi()
518 if (uart_handle_break(&up->port)) in serial_omap_rlsi()
525 up->port.icount.parity++; in serial_omap_rlsi()
530 up->port.icount.frame++; in serial_omap_rlsi()
534 up->port.icount.overrun++; in serial_omap_rlsi()
537 if (up->port.line == up->port.cons->index) { in serial_omap_rlsi()
542 uart_insert_char(&up->port, lsr, UART_LSR_OE, 0, flag); in serial_omap_rlsi()
555 up->port.icount.rx++; in serial_omap_rdi()
557 if (uart_handle_sysrq_char(&up->port, ch)) in serial_omap_rdi()
560 uart_insert_char(&up->port, lsr, UART_LSR_OE, ch, flag); in serial_omap_rdi()
576 spin_lock(&up->port.lock); in serial_omap_irq()
615 spin_unlock(&up->port.lock); in serial_omap_irq()
617 tty_flip_buffer_push(&up->port.state->port); in serial_omap_irq()
626 static unsigned int serial_omap_tx_empty(struct uart_port *port) in serial_omap_tx_empty() argument
628 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_tx_empty()
633 dev_dbg(up->port.dev, "serial_omap_tx_empty+%d\n", up->port.line); in serial_omap_tx_empty()
634 spin_lock_irqsave(&up->port.lock, flags); in serial_omap_tx_empty()
636 spin_unlock_irqrestore(&up->port.lock, flags); in serial_omap_tx_empty()
642 static unsigned int serial_omap_get_mctrl(struct uart_port *port) in serial_omap_get_mctrl() argument
644 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_get_mctrl()
653 dev_dbg(up->port.dev, "serial_omap_get_mctrl+%d\n", up->port.line); in serial_omap_get_mctrl()
666 static void serial_omap_set_mctrl(struct uart_port *port, unsigned int mctrl) in serial_omap_set_mctrl() argument
668 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_set_mctrl()
671 dev_dbg(up->port.dev, "serial_omap_set_mctrl+%d\n", up->port.line); in serial_omap_set_mctrl()
693 if ((mctrl & TIOCM_RTS) && (port->status & UPSTAT_AUTORTS)) in serial_omap_set_mctrl()
704 static void serial_omap_break_ctl(struct uart_port *port, int break_state) in serial_omap_break_ctl() argument
706 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_break_ctl()
709 dev_dbg(up->port.dev, "serial_omap_break_ctl+%d\n", up->port.line); in serial_omap_break_ctl()
711 spin_lock_irqsave(&up->port.lock, flags); in serial_omap_break_ctl()
717 spin_unlock_irqrestore(&up->port.lock, flags); in serial_omap_break_ctl()
722 static int serial_omap_startup(struct uart_port *port) in serial_omap_startup() argument
724 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_startup()
731 retval = request_irq(up->port.irq, serial_omap_irq, up->port.irqflags, in serial_omap_startup()
740 free_irq(up->port.irq, up); in serial_omap_startup()
745 dev_dbg(up->port.dev, "serial_omap_startup+%d\n", up->port.line); in serial_omap_startup()
767 spin_lock_irqsave(&up->port.lock, flags); in serial_omap_startup()
771 up->port.mctrl |= TIOCM_OUT2; in serial_omap_startup()
772 serial_omap_set_mctrl(&up->port, up->port.mctrl); in serial_omap_startup()
773 spin_unlock_irqrestore(&up->port.lock, flags); in serial_omap_startup()
797 static void serial_omap_shutdown(struct uart_port *port) in serial_omap_shutdown() argument
799 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_shutdown()
802 dev_dbg(up->port.dev, "serial_omap_shutdown+%d\n", up->port.line); in serial_omap_shutdown()
811 spin_lock_irqsave(&up->port.lock, flags); in serial_omap_shutdown()
812 up->port.mctrl &= ~TIOCM_OUT2; in serial_omap_shutdown()
813 serial_omap_set_mctrl(&up->port, up->port.mctrl); in serial_omap_shutdown()
814 spin_unlock_irqrestore(&up->port.lock, flags); in serial_omap_shutdown()
830 free_irq(up->port.irq, up); in serial_omap_shutdown()
843 serial_omap_set_termios(struct uart_port *port, struct ktermios *termios, in serial_omap_set_termios() argument
846 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_set_termios()
880 baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/13); in serial_omap_set_termios()
881 quot = serial_omap_get_divisor(port, baud); in serial_omap_set_termios()
884 up->calc_latency = (USEC_PER_SEC * up->port.fifosize) / (baud / 8); in serial_omap_set_termios()
900 spin_lock_irqsave(&up->port.lock, flags); in serial_omap_set_termios()
905 uart_update_timeout(port, termios->c_cflag, baud); in serial_omap_set_termios()
907 up->port.read_status_mask = UART_LSR_OE | UART_LSR_THRE | UART_LSR_DR; in serial_omap_set_termios()
909 up->port.read_status_mask |= UART_LSR_FE | UART_LSR_PE; in serial_omap_set_termios()
911 up->port.read_status_mask |= UART_LSR_BI; in serial_omap_set_termios()
916 up->port.ignore_status_mask = 0; in serial_omap_set_termios()
918 up->port.ignore_status_mask |= UART_LSR_PE | UART_LSR_FE; in serial_omap_set_termios()
920 up->port.ignore_status_mask |= UART_LSR_BI; in serial_omap_set_termios()
926 up->port.ignore_status_mask |= UART_LSR_OE; in serial_omap_set_termios()
933 up->port.ignore_status_mask |= UART_LSR_DR; in serial_omap_set_termios()
939 if (UART_ENABLE_MS(&up->port, termios->c_cflag)) in serial_omap_set_termios()
1023 if (!serial_omap_baud_is_mode16(port, baud)) in serial_omap_set_termios()
1047 up->port.status &= ~(UPSTAT_AUTOCTS | UPSTAT_AUTORTS | UPSTAT_AUTOXOFF); in serial_omap_set_termios()
1049 if (termios->c_cflag & CRTSCTS && up->port.flags & UPF_HARD_FLOW) { in serial_omap_set_termios()
1051 up->port.status |= UPSTAT_AUTOCTS | UPSTAT_AUTORTS; in serial_omap_set_termios()
1058 if (up->port.flags & UPF_SOFT_FLOW) { in serial_omap_set_termios()
1076 up->port.status |= UPSTAT_AUTOXOFF; in serial_omap_set_termios()
1096 serial_omap_set_mctrl(&up->port, up->port.mctrl); in serial_omap_set_termios()
1098 spin_unlock_irqrestore(&up->port.lock, flags); in serial_omap_set_termios()
1101 dev_dbg(up->port.dev, "serial_omap_set_termios+%d\n", up->port.line); in serial_omap_set_termios()
1105 serial_omap_pm(struct uart_port *port, unsigned int state, in serial_omap_pm() argument
1108 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_pm()
1111 dev_dbg(up->port.dev, "serial_omap_pm+%d\n", up->port.line); in serial_omap_pm()
1128 static void serial_omap_release_port(struct uart_port *port) in serial_omap_release_port() argument
1130 dev_dbg(port->dev, "serial_omap_release_port+\n"); in serial_omap_release_port()
1133 static int serial_omap_request_port(struct uart_port *port) in serial_omap_request_port() argument
1135 dev_dbg(port->dev, "serial_omap_request_port+\n"); in serial_omap_request_port()
1139 static void serial_omap_config_port(struct uart_port *port, int flags) in serial_omap_config_port() argument
1141 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_config_port()
1143 dev_dbg(up->port.dev, "serial_omap_config_port+%d\n", in serial_omap_config_port()
1144 up->port.line); in serial_omap_config_port()
1145 up->port.type = PORT_OMAP; in serial_omap_config_port()
1146 up->port.flags |= UPF_SOFT_FLOW | UPF_HARD_FLOW; in serial_omap_config_port()
1150 serial_omap_verify_port(struct uart_port *port, struct serial_struct *ser) in serial_omap_verify_port() argument
1153 dev_dbg(port->dev, "serial_omap_verify_port+\n"); in serial_omap_verify_port()
1158 serial_omap_type(struct uart_port *port) in serial_omap_type() argument
1160 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_type()
1162 dev_dbg(up->port.dev, "serial_omap_type+%d\n", up->port.line); in serial_omap_type()
1185 if (up->port.flags & UPF_CONS_FLOW) { in wait_for_xmitr()
1201 static void serial_omap_poll_put_char(struct uart_port *port, unsigned char ch) in serial_omap_poll_put_char() argument
1203 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_poll_put_char()
1212 static int serial_omap_poll_get_char(struct uart_port *port) in serial_omap_poll_get_char() argument
1214 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_poll_get_char()
1241 static void serial_omap_console_putchar(struct uart_port *port, int ch) in serial_omap_console_putchar() argument
1243 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_console_putchar()
1261 if (up->port.sysrq) in serial_omap_console_write()
1264 locked = spin_trylock(&up->port.lock); in serial_omap_console_write()
1266 spin_lock(&up->port.lock); in serial_omap_console_write()
1274 uart_console_write(&up->port, s, count, serial_omap_console_putchar); in serial_omap_console_write()
1295 spin_unlock(&up->port.lock); in serial_omap_console_write()
1315 return uart_set_options(&up->port, co, baud, parity, bits, flow); in serial_omap_console_setup()
1330 serial_omap_console_ports[up->port.line] = up; in serial_omap_add_console_port()
1346 serial_omap_config_rs485(struct uart_port *port, struct serial_rs485 *rs485) in serial_omap_config_rs485() argument
1348 struct uart_omap_port *up = to_uart_omap_port(port); in serial_omap_config_rs485()
1364 port->rs485 = *rs485; in serial_omap_config_rs485()
1372 val = (port->rs485.flags & SER_RS485_ENABLED) ? in serial_omap_config_rs485()
1374 val = (port->rs485.flags & val) ? 1 : 0; in serial_omap_config_rs485()
1377 port->rs485.flags &= ~SER_RS485_ENABLED; in serial_omap_config_rs485()
1386 if (!(port->rs485.flags & SER_RS485_ENABLED) && in serial_omap_config_rs485()
1453 uart_suspend_port(&serial_omap_reg, &up->port); in serial_omap_suspend()
1471 uart_resume_port(&serial_omap_reg, &up->port); in serial_omap_resume()
1485 mvr = readl(up->port.membase + (UART_OMAP_MVER << up->port.regshift)); in omap_serial_fill_features_erratas()
1551 struct serial_rs485 *rs485conf = &up->port.rs485; in serial_omap_probe_rs485()
1632 up->port.dev = &pdev->dev; in serial_omap_probe()
1633 up->port.type = PORT_OMAP; in serial_omap_probe()
1634 up->port.iotype = UPIO_MEM; in serial_omap_probe()
1635 up->port.irq = uartirq; in serial_omap_probe()
1636 up->port.regshift = 2; in serial_omap_probe()
1637 up->port.fifosize = 64; in serial_omap_probe()
1638 up->port.ops = &serial_omap_pops; in serial_omap_probe()
1650 up->port.line = ret; in serial_omap_probe()
1652 if (up->port.line >= OMAP_MAX_HSUART_PORTS) { in serial_omap_probe()
1653 dev_err(&pdev->dev, "uart ID %d > MAX %d.\n", up->port.line, in serial_omap_probe()
1661 dev_info(up->port.dev, "no wakeirq for uart%d\n", in serial_omap_probe()
1662 up->port.line); in serial_omap_probe()
1668 sprintf(up->name, "OMAP UART%d", up->port.line); in serial_omap_probe()
1669 up->port.mapbase = mem->start; in serial_omap_probe()
1670 up->port.membase = base; in serial_omap_probe()
1671 up->port.flags = omap_up_info->flags; in serial_omap_probe()
1672 up->port.uartclk = omap_up_info->uartclk; in serial_omap_probe()
1673 up->port.rs485_config = serial_omap_config_rs485; in serial_omap_probe()
1674 if (!up->port.uartclk) { in serial_omap_probe()
1675 up->port.uartclk = DEFAULT_CLK_SPEED; in serial_omap_probe()
1703 ui[up->port.line] = up; in serial_omap_probe()
1706 ret = uart_add_one_port(&serial_omap_reg, &up->port); in serial_omap_probe()
1730 uart_remove_one_port(&serial_omap_reg, &up->port); in serial_omap_remove()
1816 uart_console(&up->port)) in serial_omap_runtime_suspend()