Lines Matching refs:port

234 	struct uart_port	port;  member
285 static void lpuart_stop_tx(struct uart_port *port) in lpuart_stop_tx() argument
289 temp = readb(port->membase + UARTCR2); in lpuart_stop_tx()
291 writeb(temp, port->membase + UARTCR2); in lpuart_stop_tx()
294 static void lpuart32_stop_tx(struct uart_port *port) in lpuart32_stop_tx() argument
298 temp = lpuart32_read(port->membase + UARTCTRL); in lpuart32_stop_tx()
300 lpuart32_write(temp, port->membase + UARTCTRL); in lpuart32_stop_tx()
303 static void lpuart_stop_rx(struct uart_port *port) in lpuart_stop_rx() argument
307 temp = readb(port->membase + UARTCR2); in lpuart_stop_rx()
308 writeb(temp & ~UARTCR2_RE, port->membase + UARTCR2); in lpuart_stop_rx()
311 static void lpuart32_stop_rx(struct uart_port *port) in lpuart32_stop_rx() argument
315 temp = lpuart32_read(port->membase + UARTCTRL); in lpuart32_stop_rx()
316 lpuart32_write(temp & ~UARTCTRL_RE, port->membase + UARTCTRL); in lpuart32_stop_rx()
324 sport->port.icount.rx += count; in lpuart_copy_rx_to_tty()
327 dev_err(sport->port.dev, "No tty port\n"); in lpuart_copy_rx_to_tty()
331 dma_sync_single_for_cpu(sport->port.dev, sport->dma_rx_buf_bus, in lpuart_copy_rx_to_tty()
338 dev_err(sport->port.dev, "RxData copy to tty layer failed\n"); in lpuart_copy_rx_to_tty()
341 dma_sync_single_for_device(sport->port.dev, sport->dma_rx_buf_bus, in lpuart_copy_rx_to_tty()
347 struct circ_buf *xmit = &sport->port.state->xmit; in lpuart_pio_tx()
350 spin_lock_irqsave(&sport->port.lock, flags); in lpuart_pio_tx()
353 readb(sport->port.membase + UARTTCFIFO) < sport->txfifo_size) { in lpuart_pio_tx()
354 writeb(xmit->buf[xmit->tail], sport->port.membase + UARTDR); in lpuart_pio_tx()
356 sport->port.icount.tx++; in lpuart_pio_tx()
360 uart_write_wakeup(&sport->port); in lpuart_pio_tx()
363 writeb(readb(sport->port.membase + UARTCR5) | UARTCR5_TDMAS, in lpuart_pio_tx()
364 sport->port.membase + UARTCR5); in lpuart_pio_tx()
366 spin_unlock_irqrestore(&sport->port.lock, flags); in lpuart_pio_tx()
371 struct circ_buf *xmit = &sport->port.state->xmit; in lpuart_dma_tx()
374 dma_sync_single_for_device(sport->port.dev, sport->dma_tx_buf_bus, in lpuart_dma_tx()
383 dev_err(sport->port.dev, "Not able to get desc for tx\n"); in lpuart_dma_tx()
398 struct circ_buf *xmit = &sport->port.state->xmit; in lpuart_prepare_tx()
406 writeb(readb(sport->port.membase + UARTCR5) & ~UARTCR5_TDMAS, in lpuart_prepare_tx()
407 sport->port.membase + UARTCR5); in lpuart_prepare_tx()
409 writeb(readb(sport->port.membase + UARTCR5) | UARTCR5_TDMAS, in lpuart_prepare_tx()
410 sport->port.membase + UARTCR5); in lpuart_prepare_tx()
418 struct circ_buf *xmit = &sport->port.state->xmit; in lpuart_dma_tx_complete()
423 spin_lock_irqsave(&sport->port.lock, flags); in lpuart_dma_tx_complete()
429 uart_write_wakeup(&sport->port); in lpuart_dma_tx_complete()
433 spin_unlock_irqrestore(&sport->port.lock, flags); in lpuart_dma_tx_complete()
438 dma_sync_single_for_device(sport->port.dev, sport->dma_rx_buf_bus, in lpuart_dma_rx()
445 dev_err(sport->port.dev, "Not able to get desc for rx\n"); in lpuart_dma_rx()
458 static void lpuart_flush_buffer(struct uart_port *port) in lpuart_flush_buffer() argument
460 struct lpuart_port *sport = container_of(port, struct lpuart_port, port); in lpuart_flush_buffer()
470 struct tty_port *port = &sport->port.state->port; in lpuart_dma_rx_complete() local
476 spin_lock_irqsave(&sport->port.lock, flags); in lpuart_dma_rx_complete()
479 lpuart_copy_rx_to_tty(sport, port, FSL_UART_RX_DMA_BUFFER_SIZE); in lpuart_dma_rx_complete()
480 tty_flip_buffer_push(port); in lpuart_dma_rx_complete()
483 spin_unlock_irqrestore(&sport->port.lock, flags); in lpuart_dma_rx_complete()
489 struct tty_port *port = &sport->port.state->port; in lpuart_timer_func() local
502 spin_lock_irqsave(&sport->port.lock, flags); in lpuart_timer_func()
505 lpuart_copy_rx_to_tty(sport, port, count); in lpuart_timer_func()
506 tty_flip_buffer_push(port); in lpuart_timer_func()
507 temp = readb(sport->port.membase + UARTCR5); in lpuart_timer_func()
508 writeb(temp & ~UARTCR5_RDMAS, sport->port.membase + UARTCR5); in lpuart_timer_func()
510 spin_unlock_irqrestore(&sport->port.lock, flags); in lpuart_timer_func()
518 spin_lock_irqsave(&sport->port.lock, flags); in lpuart_prepare_rx()
524 temp = readb(sport->port.membase + UARTCR5); in lpuart_prepare_rx()
525 writeb(temp | UARTCR5_RDMAS, sport->port.membase + UARTCR5); in lpuart_prepare_rx()
527 spin_unlock_irqrestore(&sport->port.lock, flags); in lpuart_prepare_rx()
532 struct circ_buf *xmit = &sport->port.state->xmit; in lpuart_transmit_buffer()
535 (readb(sport->port.membase + UARTTCFIFO) < sport->txfifo_size)) { in lpuart_transmit_buffer()
536 writeb(xmit->buf[xmit->tail], sport->port.membase + UARTDR); in lpuart_transmit_buffer()
538 sport->port.icount.tx++; in lpuart_transmit_buffer()
542 uart_write_wakeup(&sport->port); in lpuart_transmit_buffer()
545 lpuart_stop_tx(&sport->port); in lpuart_transmit_buffer()
550 struct circ_buf *xmit = &sport->port.state->xmit; in lpuart32_transmit_buffer()
553 txcnt = lpuart32_read(sport->port.membase + UARTWATER); in lpuart32_transmit_buffer()
557 lpuart32_write(xmit->buf[xmit->tail], sport->port.membase + UARTDATA); in lpuart32_transmit_buffer()
559 sport->port.icount.tx++; in lpuart32_transmit_buffer()
560 txcnt = lpuart32_read(sport->port.membase + UARTWATER); in lpuart32_transmit_buffer()
566 uart_write_wakeup(&sport->port); in lpuart32_transmit_buffer()
569 lpuart32_stop_tx(&sport->port); in lpuart32_transmit_buffer()
572 static void lpuart_start_tx(struct uart_port *port) in lpuart_start_tx() argument
574 struct lpuart_port *sport = container_of(port, in lpuart_start_tx()
575 struct lpuart_port, port); in lpuart_start_tx()
576 struct circ_buf *xmit = &sport->port.state->xmit; in lpuart_start_tx()
579 temp = readb(port->membase + UARTCR2); in lpuart_start_tx()
580 writeb(temp | UARTCR2_TIE, port->membase + UARTCR2); in lpuart_start_tx()
586 if (readb(port->membase + UARTSR1) & UARTSR1_TDRE) in lpuart_start_tx()
591 static void lpuart32_start_tx(struct uart_port *port) in lpuart32_start_tx() argument
593 struct lpuart_port *sport = container_of(port, struct lpuart_port, port); in lpuart32_start_tx()
596 temp = lpuart32_read(port->membase + UARTCTRL); in lpuart32_start_tx()
597 lpuart32_write(temp | UARTCTRL_TIE, port->membase + UARTCTRL); in lpuart32_start_tx()
599 if (lpuart32_read(port->membase + UARTSTAT) & UARTSTAT_TDRE) in lpuart32_start_tx()
606 struct circ_buf *xmit = &sport->port.state->xmit; in lpuart_txint()
609 spin_lock_irqsave(&sport->port.lock, flags); in lpuart_txint()
610 if (sport->port.x_char) { in lpuart_txint()
612 lpuart32_write(sport->port.x_char, sport->port.membase + UARTDATA); in lpuart_txint()
614 writeb(sport->port.x_char, sport->port.membase + UARTDR); in lpuart_txint()
618 if (uart_circ_empty(xmit) || uart_tx_stopped(&sport->port)) { in lpuart_txint()
620 lpuart32_stop_tx(&sport->port); in lpuart_txint()
622 lpuart_stop_tx(&sport->port); in lpuart_txint()
632 uart_write_wakeup(&sport->port); in lpuart_txint()
635 spin_unlock_irqrestore(&sport->port.lock, flags); in lpuart_txint()
643 struct tty_port *port = &sport->port.state->port; in lpuart_rxint() local
647 spin_lock_irqsave(&sport->port.lock, flags); in lpuart_rxint()
649 while (!(readb(sport->port.membase + UARTSFIFO) & UARTSFIFO_RXEMPT)) { in lpuart_rxint()
651 sport->port.icount.rx++; in lpuart_rxint()
656 sr = readb(sport->port.membase + UARTSR1); in lpuart_rxint()
657 rx = readb(sport->port.membase + UARTDR); in lpuart_rxint()
659 if (uart_handle_sysrq_char(&sport->port, (unsigned char)rx)) in lpuart_rxint()
664 sport->port.icount.parity++; in lpuart_rxint()
666 sport->port.icount.frame++; in lpuart_rxint()
669 sport->port.icount.overrun++; in lpuart_rxint()
671 if (sr & sport->port.ignore_status_mask) { in lpuart_rxint()
677 sr &= sport->port.read_status_mask; in lpuart_rxint()
688 sport->port.sysrq = 0; in lpuart_rxint()
692 tty_insert_flip_char(port, rx, flg); in lpuart_rxint()
696 spin_unlock_irqrestore(&sport->port.lock, flags); in lpuart_rxint()
698 tty_flip_buffer_push(port); in lpuart_rxint()
706 struct tty_port *port = &sport->port.state->port; in lpuart32_rxint() local
710 spin_lock_irqsave(&sport->port.lock, flags); in lpuart32_rxint()
712 while (!(lpuart32_read(sport->port.membase + UARTFIFO) & UARTFIFO_RXEMPT)) { in lpuart32_rxint()
714 sport->port.icount.rx++; in lpuart32_rxint()
719 sr = lpuart32_read(sport->port.membase + UARTSTAT); in lpuart32_rxint()
720 rx = lpuart32_read(sport->port.membase + UARTDATA); in lpuart32_rxint()
723 if (uart_handle_sysrq_char(&sport->port, (unsigned char)rx)) in lpuart32_rxint()
728 sport->port.icount.parity++; in lpuart32_rxint()
730 sport->port.icount.frame++; in lpuart32_rxint()
733 sport->port.icount.overrun++; in lpuart32_rxint()
735 if (sr & sport->port.ignore_status_mask) { in lpuart32_rxint()
741 sr &= sport->port.read_status_mask; in lpuart32_rxint()
752 sport->port.sysrq = 0; in lpuart32_rxint()
756 tty_insert_flip_char(port, rx, flg); in lpuart32_rxint()
760 spin_unlock_irqrestore(&sport->port.lock, flags); in lpuart32_rxint()
762 tty_flip_buffer_push(port); in lpuart32_rxint()
771 sts = readb(sport->port.membase + UARTSR1); in lpuart_int()
772 crdma = readb(sport->port.membase + UARTCR5); in lpuart_int()
795 sts = lpuart32_read(sport->port.membase + UARTSTAT); in lpuart32_int()
796 rxcount = lpuart32_read(sport->port.membase + UARTWATER); in lpuart32_int()
803 !(lpuart32_read(sport->port.membase + UARTBAUD) & UARTBAUD_TDMAE)) in lpuart32_int()
806 lpuart32_write(sts, sport->port.membase + UARTSTAT); in lpuart32_int()
811 static unsigned int lpuart_tx_empty(struct uart_port *port) in lpuart_tx_empty() argument
813 return (readb(port->membase + UARTSR1) & UARTSR1_TC) ? in lpuart_tx_empty()
817 static unsigned int lpuart32_tx_empty(struct uart_port *port) in lpuart32_tx_empty() argument
819 return (lpuart32_read(port->membase + UARTSTAT) & UARTSTAT_TC) ? in lpuart32_tx_empty()
823 static unsigned int lpuart_get_mctrl(struct uart_port *port) in lpuart_get_mctrl() argument
828 reg = readb(port->membase + UARTMODEM); in lpuart_get_mctrl()
838 static unsigned int lpuart32_get_mctrl(struct uart_port *port) in lpuart32_get_mctrl() argument
843 reg = lpuart32_read(port->membase + UARTMODIR); in lpuart32_get_mctrl()
853 static void lpuart_set_mctrl(struct uart_port *port, unsigned int mctrl) in lpuart_set_mctrl() argument
857 temp = readb(port->membase + UARTMODEM) & in lpuart_set_mctrl()
866 writeb(temp, port->membase + UARTMODEM); in lpuart_set_mctrl()
869 static void lpuart32_set_mctrl(struct uart_port *port, unsigned int mctrl) in lpuart32_set_mctrl() argument
873 temp = lpuart32_read(port->membase + UARTMODIR) & in lpuart32_set_mctrl()
882 lpuart32_write(temp, port->membase + UARTMODIR); in lpuart32_set_mctrl()
885 static void lpuart_break_ctl(struct uart_port *port, int break_state) in lpuart_break_ctl() argument
889 temp = readb(port->membase + UARTCR2) & ~UARTCR2_SBK; in lpuart_break_ctl()
894 writeb(temp, port->membase + UARTCR2); in lpuart_break_ctl()
897 static void lpuart32_break_ctl(struct uart_port *port, int break_state) in lpuart32_break_ctl() argument
901 temp = lpuart32_read(port->membase + UARTCTRL) & ~UARTCTRL_SBK; in lpuart32_break_ctl()
906 lpuart32_write(temp, port->membase + UARTCTRL); in lpuart32_break_ctl()
914 cr2 = readb(sport->port.membase + UARTCR2); in lpuart_setup_watermark()
918 writeb(cr2, sport->port.membase + UARTCR2); in lpuart_setup_watermark()
920 val = readb(sport->port.membase + UARTPFIFO); in lpuart_setup_watermark()
922 sport->port.membase + UARTPFIFO); in lpuart_setup_watermark()
925 readb(sport->port.membase + UARTSR1); in lpuart_setup_watermark()
929 sport->port.membase + UARTCFIFO); in lpuart_setup_watermark()
931 writeb(0, sport->port.membase + UARTTWFIFO); in lpuart_setup_watermark()
932 writeb(1, sport->port.membase + UARTRWFIFO); in lpuart_setup_watermark()
935 writeb(cr2_saved, sport->port.membase + UARTCR2); in lpuart_setup_watermark()
943 ctrl = lpuart32_read(sport->port.membase + UARTCTRL); in lpuart32_setup_watermark()
947 lpuart32_write(ctrl, sport->port.membase + UARTCTRL); in lpuart32_setup_watermark()
950 val = lpuart32_read(sport->port.membase + UARTFIFO); in lpuart32_setup_watermark()
953 lpuart32_write(val, sport->port.membase + UARTFIFO); in lpuart32_setup_watermark()
957 lpuart32_write(val, sport->port.membase + UARTWATER); in lpuart32_setup_watermark()
960 lpuart32_write(ctrl_saved, sport->port.membase + UARTCTRL); in lpuart32_setup_watermark()
963 static int lpuart_dma_tx_request(struct uart_port *port) in lpuart_dma_tx_request() argument
965 struct lpuart_port *sport = container_of(port, in lpuart_dma_tx_request()
966 struct lpuart_port, port); in lpuart_dma_tx_request()
973 sport->port.state->xmit.buf, in lpuart_dma_tx_request()
977 dev_err(sport->port.dev, "dma_map_single tx failed\n"); in lpuart_dma_tx_request()
981 dma_buf = sport->port.state->xmit.buf; in lpuart_dma_tx_request()
982 dma_tx_sconfig.dst_addr = sport->port.mapbase + UARTDR; in lpuart_dma_tx_request()
989 dev_err(sport->port.dev, in lpuart_dma_tx_request()
1001 static int lpuart_dma_rx_request(struct uart_port *port) in lpuart_dma_rx_request() argument
1003 struct lpuart_port *sport = container_of(port, in lpuart_dma_rx_request()
1004 struct lpuart_port, port); in lpuart_dma_rx_request()
1010 dma_buf = devm_kzalloc(sport->port.dev, in lpuart_dma_rx_request()
1014 dev_err(sport->port.dev, "Dma rx alloc failed\n"); in lpuart_dma_rx_request()
1022 dev_err(sport->port.dev, "dma_map_single rx failed\n"); in lpuart_dma_rx_request()
1026 dma_rx_sconfig.src_addr = sport->port.mapbase + UARTDR; in lpuart_dma_rx_request()
1033 dev_err(sport->port.dev, in lpuart_dma_rx_request()
1045 static void lpuart_dma_tx_free(struct uart_port *port) in lpuart_dma_tx_free() argument
1047 struct lpuart_port *sport = container_of(port, in lpuart_dma_tx_free()
1048 struct lpuart_port, port); in lpuart_dma_tx_free()
1050 dma_unmap_single(sport->port.dev, sport->dma_tx_buf_bus, in lpuart_dma_tx_free()
1057 static void lpuart_dma_rx_free(struct uart_port *port) in lpuart_dma_rx_free() argument
1059 struct lpuart_port *sport = container_of(port, in lpuart_dma_rx_free()
1060 struct lpuart_port, port); in lpuart_dma_rx_free()
1062 dma_unmap_single(sport->port.dev, sport->dma_rx_buf_bus, in lpuart_dma_rx_free()
1069 static int lpuart_startup(struct uart_port *port) in lpuart_startup() argument
1071 struct lpuart_port *sport = container_of(port, struct lpuart_port, port); in lpuart_startup()
1077 temp = readb(sport->port.membase + UARTPFIFO); in lpuart_startup()
1082 sport->port.fifosize = sport->txfifo_size; in lpuart_startup()
1087 if (sport->dma_rx_chan && !lpuart_dma_rx_request(port)) { in lpuart_startup()
1095 if (sport->dma_tx_chan && !lpuart_dma_tx_request(port)) { in lpuart_startup()
1097 temp = readb(port->membase + UARTCR5); in lpuart_startup()
1099 writeb(temp | UARTCR5_TDMAS, port->membase + UARTCR5); in lpuart_startup()
1103 ret = devm_request_irq(port->dev, port->irq, lpuart_int, 0, in lpuart_startup()
1108 spin_lock_irqsave(&sport->port.lock, flags); in lpuart_startup()
1112 temp = readb(sport->port.membase + UARTCR2); in lpuart_startup()
1114 writeb(temp, sport->port.membase + UARTCR2); in lpuart_startup()
1116 spin_unlock_irqrestore(&sport->port.lock, flags); in lpuart_startup()
1120 static int lpuart32_startup(struct uart_port *port) in lpuart32_startup() argument
1122 struct lpuart_port *sport = container_of(port, struct lpuart_port, port); in lpuart32_startup()
1128 temp = lpuart32_read(sport->port.membase + UARTFIFO); in lpuart32_startup()
1136 ret = devm_request_irq(port->dev, port->irq, lpuart32_int, 0, in lpuart32_startup()
1141 spin_lock_irqsave(&sport->port.lock, flags); in lpuart32_startup()
1145 temp = lpuart32_read(sport->port.membase + UARTCTRL); in lpuart32_startup()
1148 lpuart32_write(temp, sport->port.membase + UARTCTRL); in lpuart32_startup()
1150 spin_unlock_irqrestore(&sport->port.lock, flags); in lpuart32_startup()
1154 static void lpuart_shutdown(struct uart_port *port) in lpuart_shutdown() argument
1156 struct lpuart_port *sport = container_of(port, struct lpuart_port, port); in lpuart_shutdown()
1160 spin_lock_irqsave(&port->lock, flags); in lpuart_shutdown()
1163 temp = readb(port->membase + UARTCR2); in lpuart_shutdown()
1166 writeb(temp, port->membase + UARTCR2); in lpuart_shutdown()
1168 spin_unlock_irqrestore(&port->lock, flags); in lpuart_shutdown()
1170 devm_free_irq(port->dev, port->irq, sport); in lpuart_shutdown()
1173 lpuart_dma_rx_free(&sport->port); in lpuart_shutdown()
1178 lpuart_dma_tx_free(&sport->port); in lpuart_shutdown()
1181 static void lpuart32_shutdown(struct uart_port *port) in lpuart32_shutdown() argument
1183 struct lpuart_port *sport = container_of(port, struct lpuart_port, port); in lpuart32_shutdown()
1187 spin_lock_irqsave(&port->lock, flags); in lpuart32_shutdown()
1190 temp = lpuart32_read(port->membase + UARTCTRL); in lpuart32_shutdown()
1193 lpuart32_write(temp, port->membase + UARTCTRL); in lpuart32_shutdown()
1195 spin_unlock_irqrestore(&port->lock, flags); in lpuart32_shutdown()
1197 devm_free_irq(port->dev, port->irq, sport); in lpuart32_shutdown()
1201 lpuart_set_termios(struct uart_port *port, struct ktermios *termios, in lpuart_set_termios() argument
1204 struct lpuart_port *sport = container_of(port, struct lpuart_port, port); in lpuart_set_termios()
1211 cr1 = old_cr1 = readb(sport->port.membase + UARTCR1); in lpuart_set_termios()
1212 old_cr2 = readb(sport->port.membase + UARTCR2); in lpuart_set_termios()
1213 cr4 = readb(sport->port.membase + UARTCR4); in lpuart_set_termios()
1214 bdh = readb(sport->port.membase + UARTBDH); in lpuart_set_termios()
1215 modem = readb(sport->port.membase + UARTMODEM); in lpuart_set_termios()
1273 baud = uart_get_baud_rate(port, termios, old, 50, port->uartclk / 16); in lpuart_set_termios()
1275 spin_lock_irqsave(&sport->port.lock, flags); in lpuart_set_termios()
1277 sport->port.read_status_mask = 0; in lpuart_set_termios()
1279 sport->port.read_status_mask |= (UARTSR1_FE | UARTSR1_PE); in lpuart_set_termios()
1281 sport->port.read_status_mask |= UARTSR1_FE; in lpuart_set_termios()
1284 sport->port.ignore_status_mask = 0; in lpuart_set_termios()
1286 sport->port.ignore_status_mask |= UARTSR1_PE; in lpuart_set_termios()
1288 sport->port.ignore_status_mask |= UARTSR1_FE; in lpuart_set_termios()
1294 sport->port.ignore_status_mask |= UARTSR1_OR; in lpuart_set_termios()
1298 uart_update_timeout(port, termios->c_cflag, baud); in lpuart_set_termios()
1302 sport->dma_rx_timeout = (sport->port.timeout - HZ / 50) * in lpuart_set_termios()
1305 dev_dbg(port->dev, "DMA Rx t-out %ums, tty t-out %u jiffies\n", in lpuart_set_termios()
1306 sport->dma_rx_timeout * 1000 / HZ, sport->port.timeout); in lpuart_set_termios()
1312 while (!(readb(sport->port.membase + UARTSR1) & UARTSR1_TC)) in lpuart_set_termios()
1317 sport->port.membase + UARTCR2); in lpuart_set_termios()
1319 sbr = sport->port.uartclk / (16 * baud); in lpuart_set_termios()
1320 brfa = ((sport->port.uartclk - (16 * sbr * baud)) * 2) / baud; in lpuart_set_termios()
1325 writeb(cr4 | brfa, sport->port.membase + UARTCR4); in lpuart_set_termios()
1326 writeb(bdh, sport->port.membase + UARTBDH); in lpuart_set_termios()
1327 writeb(sbr & 0xFF, sport->port.membase + UARTBDL); in lpuart_set_termios()
1328 writeb(cr1, sport->port.membase + UARTCR1); in lpuart_set_termios()
1329 writeb(modem, sport->port.membase + UARTMODEM); in lpuart_set_termios()
1332 writeb(old_cr2, sport->port.membase + UARTCR2); in lpuart_set_termios()
1334 spin_unlock_irqrestore(&sport->port.lock, flags); in lpuart_set_termios()
1338 lpuart32_set_termios(struct uart_port *port, struct ktermios *termios, in lpuart32_set_termios() argument
1341 struct lpuart_port *sport = container_of(port, struct lpuart_port, port); in lpuart32_set_termios()
1348 ctrl = old_ctrl = lpuart32_read(sport->port.membase + UARTCTRL); in lpuart32_set_termios()
1349 bd = lpuart32_read(sport->port.membase + UARTBAUD); in lpuart32_set_termios()
1350 modem = lpuart32_read(sport->port.membase + UARTMODIR); in lpuart32_set_termios()
1408 baud = uart_get_baud_rate(port, termios, old, 50, port->uartclk / 16); in lpuart32_set_termios()
1410 spin_lock_irqsave(&sport->port.lock, flags); in lpuart32_set_termios()
1412 sport->port.read_status_mask = 0; in lpuart32_set_termios()
1414 sport->port.read_status_mask |= (UARTSTAT_FE | UARTSTAT_PE); in lpuart32_set_termios()
1416 sport->port.read_status_mask |= UARTSTAT_FE; in lpuart32_set_termios()
1419 sport->port.ignore_status_mask = 0; in lpuart32_set_termios()
1421 sport->port.ignore_status_mask |= UARTSTAT_PE; in lpuart32_set_termios()
1423 sport->port.ignore_status_mask |= UARTSTAT_FE; in lpuart32_set_termios()
1429 sport->port.ignore_status_mask |= UARTSTAT_OR; in lpuart32_set_termios()
1433 uart_update_timeout(port, termios->c_cflag, baud); in lpuart32_set_termios()
1436 while (!(lpuart32_read(sport->port.membase + UARTSTAT) & UARTSTAT_TC)) in lpuart32_set_termios()
1441 sport->port.membase + UARTCTRL); in lpuart32_set_termios()
1443 sbr = sport->port.uartclk / (16 * baud); in lpuart32_set_termios()
1448 lpuart32_write(bd, sport->port.membase + UARTBAUD); in lpuart32_set_termios()
1449 lpuart32_write(modem, sport->port.membase + UARTMODIR); in lpuart32_set_termios()
1450 lpuart32_write(ctrl, sport->port.membase + UARTCTRL); in lpuart32_set_termios()
1453 spin_unlock_irqrestore(&sport->port.lock, flags); in lpuart32_set_termios()
1456 static const char *lpuart_type(struct uart_port *port) in lpuart_type() argument
1461 static void lpuart_release_port(struct uart_port *port) in lpuart_release_port() argument
1466 static int lpuart_request_port(struct uart_port *port) in lpuart_request_port() argument
1472 static void lpuart_config_port(struct uart_port *port, int flags) in lpuart_config_port() argument
1475 port->type = PORT_LPUART; in lpuart_config_port()
1478 static int lpuart_verify_port(struct uart_port *port, struct serial_struct *ser) in lpuart_verify_port() argument
1484 if (port->irq != ser->irq) in lpuart_verify_port()
1488 if (port->uartclk / 16 != ser->baud_base) in lpuart_verify_port()
1490 if (port->iobase != ser->port) in lpuart_verify_port()
1538 static void lpuart_console_putchar(struct uart_port *port, int ch) in lpuart_console_putchar() argument
1540 while (!(readb(port->membase + UARTSR1) & UARTSR1_TDRE)) in lpuart_console_putchar()
1543 writeb(ch, port->membase + UARTDR); in lpuart_console_putchar()
1546 static void lpuart32_console_putchar(struct uart_port *port, int ch) in lpuart32_console_putchar() argument
1548 while (!(lpuart32_read(port->membase + UARTSTAT) & UARTSTAT_TDRE)) in lpuart32_console_putchar()
1551 lpuart32_write(ch, port->membase + UARTDATA); in lpuart32_console_putchar()
1561 cr2 = old_cr2 = readb(sport->port.membase + UARTCR2); in lpuart_console_write()
1564 writeb(cr2, sport->port.membase + UARTCR2); in lpuart_console_write()
1566 uart_console_write(&sport->port, s, count, lpuart_console_putchar); in lpuart_console_write()
1569 while (!(readb(sport->port.membase + UARTSR1) & UARTSR1_TC)) in lpuart_console_write()
1572 writeb(old_cr2, sport->port.membase + UARTCR2); in lpuart_console_write()
1582 cr = old_cr = lpuart32_read(sport->port.membase + UARTCTRL); in lpuart32_console_write()
1585 lpuart32_write(cr, sport->port.membase + UARTCTRL); in lpuart32_console_write()
1587 uart_console_write(&sport->port, s, count, lpuart32_console_putchar); in lpuart32_console_write()
1590 while (!(lpuart32_read(sport->port.membase + UARTSTAT) & UARTSTAT_TC)) in lpuart32_console_write()
1593 lpuart32_write(old_cr, sport->port.membase + UARTCTRL); in lpuart32_console_write()
1607 cr = readb(sport->port.membase + UARTCR2); in lpuart_console_get_options()
1614 cr = readb(sport->port.membase + UARTCR1); in lpuart_console_get_options()
1629 bdh = readb(sport->port.membase + UARTBDH); in lpuart_console_get_options()
1631 bdl = readb(sport->port.membase + UARTBDL); in lpuart_console_get_options()
1635 brfa = readb(sport->port.membase + UARTCR4); in lpuart_console_get_options()
1656 cr = lpuart32_read(sport->port.membase + UARTCTRL); in lpuart32_console_get_options()
1663 cr = lpuart32_read(sport->port.membase + UARTCTRL); in lpuart32_console_get_options()
1678 bd = lpuart32_read(sport->port.membase + UARTBAUD); in lpuart32_console_get_options()
1725 return uart_set_options(&sport->port, co, baud, parity, bits, flow); in lpuart_console_setup()
1782 sport->port.line = ret; in lpuart_probe()
1786 sport->port.membase = devm_ioremap_resource(&pdev->dev, res); in lpuart_probe()
1787 if (IS_ERR(sport->port.membase)) in lpuart_probe()
1788 return PTR_ERR(sport->port.membase); in lpuart_probe()
1790 sport->port.mapbase = res->start; in lpuart_probe()
1791 sport->port.dev = &pdev->dev; in lpuart_probe()
1792 sport->port.type = PORT_LPUART; in lpuart_probe()
1793 sport->port.iotype = UPIO_MEM; in lpuart_probe()
1794 sport->port.irq = platform_get_irq(pdev, 0); in lpuart_probe()
1796 sport->port.ops = &lpuart32_pops; in lpuart_probe()
1798 sport->port.ops = &lpuart_pops; in lpuart_probe()
1799 sport->port.flags = UPF_BOOT_AUTOCONF; in lpuart_probe()
1814 sport->port.uartclk = clk_get_rate(sport->clk); in lpuart_probe()
1816 lpuart_ports[sport->port.line] = sport; in lpuart_probe()
1818 platform_set_drvdata(pdev, &sport->port); in lpuart_probe()
1825 ret = uart_add_one_port(&lpuart_reg, &sport->port); in lpuart_probe()
1831 sport->dma_tx_chan = dma_request_slave_channel(sport->port.dev, "tx"); in lpuart_probe()
1833 dev_info(sport->port.dev, "DMA tx channel request failed, " in lpuart_probe()
1836 sport->dma_rx_chan = dma_request_slave_channel(sport->port.dev, "rx"); in lpuart_probe()
1838 dev_info(sport->port.dev, "DMA rx channel request failed, " in lpuart_probe()
1848 uart_remove_one_port(&lpuart_reg, &sport->port); in lpuart_remove()
1869 temp = lpuart32_read(sport->port.membase + UARTCTRL); in lpuart_suspend()
1871 lpuart32_write(temp, sport->port.membase + UARTCTRL); in lpuart_suspend()
1874 temp = readb(sport->port.membase + UARTCR2); in lpuart_suspend()
1876 writeb(temp, sport->port.membase + UARTCR2); in lpuart_suspend()
1879 uart_suspend_port(&lpuart_reg, &sport->port); in lpuart_suspend()
1891 temp = lpuart32_read(sport->port.membase + UARTCTRL); in lpuart_resume()
1894 lpuart32_write(temp, sport->port.membase + UARTCTRL); in lpuart_resume()
1897 temp = readb(sport->port.membase + UARTCR2); in lpuart_resume()
1899 writeb(temp, sport->port.membase + UARTCR2); in lpuart_resume()
1902 uart_resume_port(&lpuart_reg, &sport->port); in lpuart_resume()