Lines Matching refs:port
112 static void lqasc_tx_chars(struct uart_port *port);
118 struct uart_port port; member
129 ltq_uart_port *to_ltq_uart_port(struct uart_port *port) in to_ltq_uart_port() argument
131 return container_of(port, struct ltq_uart_port, port); in to_ltq_uart_port()
135 lqasc_stop_tx(struct uart_port *port) in lqasc_stop_tx() argument
141 lqasc_start_tx(struct uart_port *port) in lqasc_start_tx() argument
145 lqasc_tx_chars(port); in lqasc_start_tx()
151 lqasc_stop_rx(struct uart_port *port) in lqasc_stop_rx() argument
153 ltq_w32(ASCWHBSTATE_CLRREN, port->membase + LTQ_ASC_WHBSTATE); in lqasc_stop_rx()
157 lqasc_rx_chars(struct uart_port *port) in lqasc_rx_chars() argument
159 struct tty_port *tport = &port->state->port; in lqasc_rx_chars()
162 fifocnt = ltq_r32(port->membase + LTQ_ASC_FSTAT) & ASCFSTAT_RXFFLMASK; in lqasc_rx_chars()
165 ch = ltq_r8(port->membase + LTQ_ASC_RBUF); in lqasc_rx_chars()
166 rsr = (ltq_r32(port->membase + LTQ_ASC_STATE) in lqasc_rx_chars()
169 port->icount.rx++; in lqasc_rx_chars()
177 port->icount.parity++; in lqasc_rx_chars()
179 port->membase + LTQ_ASC_WHBSTATE); in lqasc_rx_chars()
181 port->icount.frame++; in lqasc_rx_chars()
183 port->membase + LTQ_ASC_WHBSTATE); in lqasc_rx_chars()
186 port->icount.overrun++; in lqasc_rx_chars()
188 port->membase + LTQ_ASC_WHBSTATE); in lqasc_rx_chars()
191 rsr &= port->read_status_mask; in lqasc_rx_chars()
199 if ((rsr & port->ignore_status_mask) == 0) in lqasc_rx_chars()
218 lqasc_tx_chars(struct uart_port *port) in lqasc_tx_chars() argument
220 struct circ_buf *xmit = &port->state->xmit; in lqasc_tx_chars()
221 if (uart_tx_stopped(port)) { in lqasc_tx_chars()
222 lqasc_stop_tx(port); in lqasc_tx_chars()
226 while (((ltq_r32(port->membase + LTQ_ASC_FSTAT) & in lqasc_tx_chars()
228 if (port->x_char) { in lqasc_tx_chars()
229 ltq_w8(port->x_char, port->membase + LTQ_ASC_TBUF); in lqasc_tx_chars()
230 port->icount.tx++; in lqasc_tx_chars()
231 port->x_char = 0; in lqasc_tx_chars()
238 ltq_w8(port->state->xmit.buf[port->state->xmit.tail], in lqasc_tx_chars()
239 port->membase + LTQ_ASC_TBUF); in lqasc_tx_chars()
241 port->icount.tx++; in lqasc_tx_chars()
245 uart_write_wakeup(port); in lqasc_tx_chars()
252 struct uart_port *port = (struct uart_port *)_port; in lqasc_tx_int() local
254 ltq_w32(ASC_IRNCR_TIR, port->membase + LTQ_ASC_IRNCR); in lqasc_tx_int()
256 lqasc_start_tx(port); in lqasc_tx_int()
264 struct uart_port *port = (struct uart_port *)_port; in lqasc_err_int() local
268 ASCWHBSTATE_CLRROE, port->membase + LTQ_ASC_WHBSTATE); in lqasc_err_int()
277 struct uart_port *port = (struct uart_port *)_port; in lqasc_rx_int() local
279 ltq_w32(ASC_IRNCR_RIR, port->membase + LTQ_ASC_IRNCR); in lqasc_rx_int()
280 lqasc_rx_chars(port); in lqasc_rx_int()
286 lqasc_tx_empty(struct uart_port *port) in lqasc_tx_empty() argument
289 status = ltq_r32(port->membase + LTQ_ASC_FSTAT) & ASCFSTAT_TXFFLMASK; in lqasc_tx_empty()
294 lqasc_get_mctrl(struct uart_port *port) in lqasc_get_mctrl() argument
300 lqasc_set_mctrl(struct uart_port *port, u_int mctrl) in lqasc_set_mctrl() argument
305 lqasc_break_ctl(struct uart_port *port, int break_state) in lqasc_break_ctl() argument
310 lqasc_startup(struct uart_port *port) in lqasc_startup() argument
312 struct ltq_uart_port *ltq_port = to_ltq_uart_port(port); in lqasc_startup()
317 port->uartclk = clk_get_rate(ltq_port->fpiclk); in lqasc_startup()
320 port->membase + LTQ_ASC_CLC); in lqasc_startup()
322 ltq_w32(0, port->membase + LTQ_ASC_PISEL); in lqasc_startup()
326 port->membase + LTQ_ASC_TXFCON); in lqasc_startup()
330 port->membase + LTQ_ASC_RXFCON); in lqasc_startup()
336 ASCCON_ROEN, port->membase + LTQ_ASC_CON); in lqasc_startup()
339 0, "asc_tx", port); in lqasc_startup()
346 0, "asc_rx", port); in lqasc_startup()
353 0, "asc_err", port); in lqasc_startup()
360 port->membase + LTQ_ASC_IRNREN); in lqasc_startup()
364 free_irq(ltq_port->rx_irq, port); in lqasc_startup()
366 free_irq(ltq_port->tx_irq, port); in lqasc_startup()
371 lqasc_shutdown(struct uart_port *port) in lqasc_shutdown() argument
373 struct ltq_uart_port *ltq_port = to_ltq_uart_port(port); in lqasc_shutdown()
374 free_irq(ltq_port->tx_irq, port); in lqasc_shutdown()
375 free_irq(ltq_port->rx_irq, port); in lqasc_shutdown()
376 free_irq(ltq_port->err_irq, port); in lqasc_shutdown()
378 ltq_w32(0, port->membase + LTQ_ASC_CON); in lqasc_shutdown()
380 port->membase + LTQ_ASC_RXFCON); in lqasc_shutdown()
382 port->membase + LTQ_ASC_TXFCON); in lqasc_shutdown()
388 lqasc_set_termios(struct uart_port *port, in lqasc_set_termios() argument
427 port->read_status_mask = ASCSTATE_ROE; in lqasc_set_termios()
429 port->read_status_mask |= ASCSTATE_FE | ASCSTATE_PE; in lqasc_set_termios()
431 port->ignore_status_mask = 0; in lqasc_set_termios()
433 port->ignore_status_mask |= ASCSTATE_FE | ASCSTATE_PE; in lqasc_set_termios()
441 port->ignore_status_mask |= ASCSTATE_ROE; in lqasc_set_termios()
445 port->ignore_status_mask |= UART_DUMMY_UER_RX; in lqasc_set_termios()
453 ltq_w32_mask(0, con, port->membase + LTQ_ASC_CON); in lqasc_set_termios()
456 baud = uart_get_baud_rate(port, new, old, 0, port->uartclk / 16); in lqasc_set_termios()
457 divisor = uart_get_divisor(port, baud); in lqasc_set_termios()
461 ltq_w32_mask(ASCCON_R, 0, port->membase + LTQ_ASC_CON); in lqasc_set_termios()
464 ltq_w32_mask(ASCCON_FDE, 0, port->membase + LTQ_ASC_CON); in lqasc_set_termios()
467 ltq_w32_mask(ASCCON_BRS, 0, port->membase + LTQ_ASC_CON); in lqasc_set_termios()
470 ltq_w32(divisor, port->membase + LTQ_ASC_BG); in lqasc_set_termios()
473 ltq_w32_mask(0, ASCCON_R, port->membase + LTQ_ASC_CON); in lqasc_set_termios()
476 ltq_w32(ASCWHBSTATE_SETREN, port->membase + LTQ_ASC_WHBSTATE); in lqasc_set_termios()
484 uart_update_timeout(port, cflag, baud); in lqasc_set_termios()
488 lqasc_type(struct uart_port *port) in lqasc_type() argument
490 if (port->type == PORT_LTQ_ASC) in lqasc_type()
497 lqasc_release_port(struct uart_port *port) in lqasc_release_port() argument
499 struct platform_device *pdev = to_platform_device(port->dev); in lqasc_release_port()
501 if (port->flags & UPF_IOREMAP) { in lqasc_release_port()
502 devm_iounmap(&pdev->dev, port->membase); in lqasc_release_port()
503 port->membase = NULL; in lqasc_release_port()
508 lqasc_request_port(struct uart_port *port) in lqasc_request_port() argument
510 struct platform_device *pdev = to_platform_device(port->dev); in lqasc_request_port()
528 if (port->flags & UPF_IOREMAP) { in lqasc_request_port()
529 port->membase = devm_ioremap_nocache(&pdev->dev, in lqasc_request_port()
530 port->mapbase, size); in lqasc_request_port()
531 if (port->membase == NULL) in lqasc_request_port()
538 lqasc_config_port(struct uart_port *port, int flags) in lqasc_config_port() argument
541 port->type = PORT_LTQ_ASC; in lqasc_config_port()
542 lqasc_request_port(port); in lqasc_config_port()
547 lqasc_verify_port(struct uart_port *port, in lqasc_verify_port() argument
579 lqasc_console_putchar(struct uart_port *port, int ch) in lqasc_console_putchar() argument
583 if (!port->membase) in lqasc_console_putchar()
587 fifofree = (ltq_r32(port->membase + LTQ_ASC_FSTAT) in lqasc_console_putchar()
590 ltq_w8(ch, port->membase + LTQ_ASC_TBUF); in lqasc_console_putchar()
598 struct uart_port *port; in lqasc_console_write() local
608 port = <q_port->port; in lqasc_console_write()
611 uart_console_write(port, s, count, lqasc_console_putchar); in lqasc_console_write()
619 struct uart_port *port; in lqasc_console_setup() local
632 port = <q_port->port; in lqasc_console_setup()
637 port->uartclk = clk_get_rate(ltq_port->fpiclk); in lqasc_console_setup()
641 return uart_set_options(port, co, baud, parity, bits, flow); in lqasc_console_setup()
677 struct uart_port *port; in lqasc_probe() local
704 port = <q_port->port; in lqasc_probe()
706 port->iotype = SERIAL_IO_MEM; in lqasc_probe()
707 port->flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP; in lqasc_probe()
708 port->ops = &lqasc_pops; in lqasc_probe()
709 port->fifosize = 16; in lqasc_probe()
710 port->type = PORT_LTQ_ASC, in lqasc_probe()
711 port->line = line; in lqasc_probe()
712 port->dev = &pdev->dev; in lqasc_probe()
714 port->irq = irqres[0].start; in lqasc_probe()
715 port->mapbase = mmres->start; in lqasc_probe()
733 ret = uart_add_one_port(&lqasc_reg, port); in lqasc_probe()