Lines Matching refs:port
113 static void lqasc_tx_chars(struct uart_port *port);
119 struct uart_port port; member
130 ltq_uart_port *to_ltq_uart_port(struct uart_port *port) in to_ltq_uart_port() argument
132 return container_of(port, struct ltq_uart_port, port); in to_ltq_uart_port()
136 lqasc_stop_tx(struct uart_port *port) in lqasc_stop_tx() argument
142 lqasc_start_tx(struct uart_port *port) in lqasc_start_tx() argument
146 lqasc_tx_chars(port); in lqasc_start_tx()
152 lqasc_stop_rx(struct uart_port *port) in lqasc_stop_rx() argument
154 ltq_w32(ASCWHBSTATE_CLRREN, port->membase + LTQ_ASC_WHBSTATE); in lqasc_stop_rx()
158 lqasc_rx_chars(struct uart_port *port) in lqasc_rx_chars() argument
160 struct tty_port *tport = &port->state->port; in lqasc_rx_chars()
163 fifocnt = ltq_r32(port->membase + LTQ_ASC_FSTAT) & ASCFSTAT_RXFFLMASK; in lqasc_rx_chars()
166 ch = ltq_r8(port->membase + LTQ_ASC_RBUF); in lqasc_rx_chars()
167 rsr = (ltq_r32(port->membase + LTQ_ASC_STATE) in lqasc_rx_chars()
170 port->icount.rx++; in lqasc_rx_chars()
178 port->icount.parity++; in lqasc_rx_chars()
180 port->membase + LTQ_ASC_WHBSTATE); in lqasc_rx_chars()
182 port->icount.frame++; in lqasc_rx_chars()
184 port->membase + LTQ_ASC_WHBSTATE); in lqasc_rx_chars()
187 port->icount.overrun++; in lqasc_rx_chars()
189 port->membase + LTQ_ASC_WHBSTATE); in lqasc_rx_chars()
192 rsr &= port->read_status_mask; in lqasc_rx_chars()
200 if ((rsr & port->ignore_status_mask) == 0) in lqasc_rx_chars()
219 lqasc_tx_chars(struct uart_port *port) in lqasc_tx_chars() argument
221 struct circ_buf *xmit = &port->state->xmit; in lqasc_tx_chars()
222 if (uart_tx_stopped(port)) { in lqasc_tx_chars()
223 lqasc_stop_tx(port); in lqasc_tx_chars()
227 while (((ltq_r32(port->membase + LTQ_ASC_FSTAT) & in lqasc_tx_chars()
229 if (port->x_char) { in lqasc_tx_chars()
230 ltq_w8(port->x_char, port->membase + LTQ_ASC_TBUF); in lqasc_tx_chars()
231 port->icount.tx++; in lqasc_tx_chars()
232 port->x_char = 0; in lqasc_tx_chars()
239 ltq_w8(port->state->xmit.buf[port->state->xmit.tail], in lqasc_tx_chars()
240 port->membase + LTQ_ASC_TBUF); in lqasc_tx_chars()
242 port->icount.tx++; in lqasc_tx_chars()
246 uart_write_wakeup(port); in lqasc_tx_chars()
253 struct uart_port *port = (struct uart_port *)_port; in lqasc_tx_int() local
255 ltq_w32(ASC_IRNCR_TIR, port->membase + LTQ_ASC_IRNCR); in lqasc_tx_int()
257 lqasc_start_tx(port); in lqasc_tx_int()
265 struct uart_port *port = (struct uart_port *)_port; in lqasc_err_int() local
269 ASCWHBSTATE_CLRROE, port->membase + LTQ_ASC_WHBSTATE); in lqasc_err_int()
278 struct uart_port *port = (struct uart_port *)_port; in lqasc_rx_int() local
280 ltq_w32(ASC_IRNCR_RIR, port->membase + LTQ_ASC_IRNCR); in lqasc_rx_int()
281 lqasc_rx_chars(port); in lqasc_rx_int()
287 lqasc_tx_empty(struct uart_port *port) in lqasc_tx_empty() argument
290 status = ltq_r32(port->membase + LTQ_ASC_FSTAT) & ASCFSTAT_TXFFLMASK; in lqasc_tx_empty()
295 lqasc_get_mctrl(struct uart_port *port) in lqasc_get_mctrl() argument
301 lqasc_set_mctrl(struct uart_port *port, u_int mctrl) in lqasc_set_mctrl() argument
306 lqasc_break_ctl(struct uart_port *port, int break_state) in lqasc_break_ctl() argument
311 lqasc_startup(struct uart_port *port) in lqasc_startup() argument
313 struct ltq_uart_port *ltq_port = to_ltq_uart_port(port); in lqasc_startup()
318 port->uartclk = clk_get_rate(ltq_port->fpiclk); in lqasc_startup()
321 port->membase + LTQ_ASC_CLC); in lqasc_startup()
323 ltq_w32(0, port->membase + LTQ_ASC_PISEL); in lqasc_startup()
327 port->membase + LTQ_ASC_TXFCON); in lqasc_startup()
331 port->membase + LTQ_ASC_RXFCON); in lqasc_startup()
337 ASCCON_ROEN, port->membase + LTQ_ASC_CON); in lqasc_startup()
340 0, "asc_tx", port); in lqasc_startup()
347 0, "asc_rx", port); in lqasc_startup()
354 0, "asc_err", port); in lqasc_startup()
361 port->membase + LTQ_ASC_IRNREN); in lqasc_startup()
365 free_irq(ltq_port->rx_irq, port); in lqasc_startup()
367 free_irq(ltq_port->tx_irq, port); in lqasc_startup()
372 lqasc_shutdown(struct uart_port *port) in lqasc_shutdown() argument
374 struct ltq_uart_port *ltq_port = to_ltq_uart_port(port); in lqasc_shutdown()
375 free_irq(ltq_port->tx_irq, port); in lqasc_shutdown()
376 free_irq(ltq_port->rx_irq, port); in lqasc_shutdown()
377 free_irq(ltq_port->err_irq, port); in lqasc_shutdown()
379 ltq_w32(0, port->membase + LTQ_ASC_CON); in lqasc_shutdown()
381 port->membase + LTQ_ASC_RXFCON); in lqasc_shutdown()
383 port->membase + LTQ_ASC_TXFCON); in lqasc_shutdown()
389 lqasc_set_termios(struct uart_port *port, in lqasc_set_termios() argument
428 port->read_status_mask = ASCSTATE_ROE; in lqasc_set_termios()
430 port->read_status_mask |= ASCSTATE_FE | ASCSTATE_PE; in lqasc_set_termios()
432 port->ignore_status_mask = 0; in lqasc_set_termios()
434 port->ignore_status_mask |= ASCSTATE_FE | ASCSTATE_PE; in lqasc_set_termios()
442 port->ignore_status_mask |= ASCSTATE_ROE; in lqasc_set_termios()
446 port->ignore_status_mask |= UART_DUMMY_UER_RX; in lqasc_set_termios()
454 ltq_w32_mask(0, con, port->membase + LTQ_ASC_CON); in lqasc_set_termios()
457 baud = uart_get_baud_rate(port, new, old, 0, port->uartclk / 16); in lqasc_set_termios()
458 divisor = uart_get_divisor(port, baud); in lqasc_set_termios()
462 ltq_w32_mask(ASCCON_R, 0, port->membase + LTQ_ASC_CON); in lqasc_set_termios()
465 ltq_w32_mask(ASCCON_FDE, 0, port->membase + LTQ_ASC_CON); in lqasc_set_termios()
468 ltq_w32_mask(ASCCON_BRS, 0, port->membase + LTQ_ASC_CON); in lqasc_set_termios()
471 ltq_w32(divisor, port->membase + LTQ_ASC_BG); in lqasc_set_termios()
474 ltq_w32_mask(0, ASCCON_R, port->membase + LTQ_ASC_CON); in lqasc_set_termios()
477 ltq_w32(ASCWHBSTATE_SETREN, port->membase + LTQ_ASC_WHBSTATE); in lqasc_set_termios()
485 uart_update_timeout(port, cflag, baud); in lqasc_set_termios()
489 lqasc_type(struct uart_port *port) in lqasc_type() argument
491 if (port->type == PORT_LTQ_ASC) in lqasc_type()
498 lqasc_release_port(struct uart_port *port) in lqasc_release_port() argument
500 struct platform_device *pdev = to_platform_device(port->dev); in lqasc_release_port()
502 if (port->flags & UPF_IOREMAP) { in lqasc_release_port()
503 devm_iounmap(&pdev->dev, port->membase); in lqasc_release_port()
504 port->membase = NULL; in lqasc_release_port()
509 lqasc_request_port(struct uart_port *port) in lqasc_request_port() argument
511 struct platform_device *pdev = to_platform_device(port->dev); in lqasc_request_port()
529 if (port->flags & UPF_IOREMAP) { in lqasc_request_port()
530 port->membase = devm_ioremap_nocache(&pdev->dev, in lqasc_request_port()
531 port->mapbase, size); in lqasc_request_port()
532 if (port->membase == NULL) in lqasc_request_port()
539 lqasc_config_port(struct uart_port *port, int flags) in lqasc_config_port() argument
542 port->type = PORT_LTQ_ASC; in lqasc_config_port()
543 lqasc_request_port(port); in lqasc_config_port()
548 lqasc_verify_port(struct uart_port *port, in lqasc_verify_port() argument
580 lqasc_console_putchar(struct uart_port *port, int ch) in lqasc_console_putchar() argument
584 if (!port->membase) in lqasc_console_putchar()
588 fifofree = (ltq_r32(port->membase + LTQ_ASC_FSTAT) in lqasc_console_putchar()
591 ltq_w8(ch, port->membase + LTQ_ASC_TBUF); in lqasc_console_putchar()
599 struct uart_port *port; in lqasc_console_write() local
609 port = <q_port->port; in lqasc_console_write()
612 uart_console_write(port, s, count, lqasc_console_putchar); in lqasc_console_write()
620 struct uart_port *port; in lqasc_console_setup() local
633 port = <q_port->port; in lqasc_console_setup()
638 port->uartclk = clk_get_rate(ltq_port->fpiclk); in lqasc_console_setup()
642 return uart_set_options(port, co, baud, parity, bits, flow); in lqasc_console_setup()
678 struct uart_port *port; in lqasc_probe() local
705 port = <q_port->port; in lqasc_probe()
707 port->iotype = SERIAL_IO_MEM; in lqasc_probe()
708 port->flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP; in lqasc_probe()
709 port->ops = &lqasc_pops; in lqasc_probe()
710 port->fifosize = 16; in lqasc_probe()
711 port->type = PORT_LTQ_ASC, in lqasc_probe()
712 port->line = line; in lqasc_probe()
713 port->dev = &pdev->dev; in lqasc_probe()
715 port->irq = irqres[0].start; in lqasc_probe()
716 port->mapbase = mmres->start; in lqasc_probe()
734 ret = uart_add_one_port(&lqasc_reg, port); in lqasc_probe()