Lines Matching refs:qe_port

218 static inline dma_addr_t cpu2qe_addr(void *addr, struct uart_qe_port *qe_port)  in cpu2qe_addr()  argument
220 if (likely((addr >= qe_port->bd_virt)) && in cpu2qe_addr()
221 (addr < (qe_port->bd_virt + qe_port->bd_size))) in cpu2qe_addr()
222 return qe_port->bd_dma_addr + (addr - qe_port->bd_virt); in cpu2qe_addr()
236 static inline void *qe2cpu_addr(dma_addr_t addr, struct uart_qe_port *qe_port) in qe2cpu_addr() argument
239 if (likely((addr >= qe_port->bd_dma_addr) && in qe2cpu_addr()
240 (addr < (qe_port->bd_dma_addr + qe_port->bd_size)))) in qe2cpu_addr()
241 return qe_port->bd_virt + (addr - qe_port->bd_dma_addr); in qe2cpu_addr()
259 struct uart_qe_port *qe_port = in qe_uart_tx_empty() local
261 struct qe_bd *bdp = qe_port->tx_bd_base; in qe_uart_tx_empty()
311 struct uart_qe_port *qe_port = in qe_uart_stop_tx() local
314 qe_clrbits_be16(&qe_port->uccp->uccm, UCC_UART_UCCE_TX); in qe_uart_stop_tx()
331 static int qe_uart_tx_pump(struct uart_qe_port *qe_port) in qe_uart_tx_pump() argument
336 struct uart_port *port = &qe_port->port; in qe_uart_tx_pump()
342 bdp = qe_port->tx_cur; in qe_uart_tx_pump()
344 p = qe2cpu_addr(be32_to_cpu(bdp->buf), qe_port); in qe_uart_tx_pump()
351 bdp = qe_port->tx_bd_base; in qe_uart_tx_pump()
354 qe_port->tx_cur = bdp; in qe_uart_tx_pump()
367 bdp = qe_port->tx_cur; in qe_uart_tx_pump()
372 p = qe2cpu_addr(be32_to_cpu(bdp->buf), qe_port); in qe_uart_tx_pump()
373 while (count < qe_port->tx_fifosize) { in qe_uart_tx_pump()
387 bdp = qe_port->tx_bd_base; in qe_uart_tx_pump()
391 qe_port->tx_cur = bdp; in qe_uart_tx_pump()
415 struct uart_qe_port *qe_port = in qe_uart_start_tx() local
419 if (qe_ioread16be(&qe_port->uccp->uccm) & UCC_UART_UCCE_TX) in qe_uart_start_tx()
423 if (qe_uart_tx_pump(qe_port)) in qe_uart_start_tx()
424 qe_setbits_be16(&qe_port->uccp->uccm, UCC_UART_UCCE_TX); in qe_uart_start_tx()
432 struct uart_qe_port *qe_port = in qe_uart_stop_rx() local
435 qe_clrbits_be16(&qe_port->uccp->uccm, UCC_UART_UCCE_RX); in qe_uart_stop_rx()
446 struct uart_qe_port *qe_port = in qe_uart_break_ctl() local
450 ucc_slow_stop_tx(qe_port->us_private); in qe_uart_break_ctl()
452 ucc_slow_restart_tx(qe_port->us_private); in qe_uart_break_ctl()
459 static void qe_uart_int_rx(struct uart_qe_port *qe_port) in qe_uart_int_rx() argument
463 struct uart_port *port = &qe_port->port; in qe_uart_int_rx()
472 bdp = qe_port->rx_cur; in qe_uart_int_rx()
492 cp = qe2cpu_addr(be32_to_cpu(bdp->buf), qe_port); in qe_uart_int_rx()
516 bdp = qe_port->rx_bd_base; in qe_uart_int_rx()
523 qe_port->rx_cur = bdp; in qe_uart_int_rx()
567 struct uart_qe_port *qe_port = (struct uart_qe_port *) data; in qe_uart_int() local
568 struct ucc_slow __iomem *uccp = qe_port->uccp; in qe_uart_int()
576 uart_handle_break(&qe_port->port); in qe_uart_int()
579 qe_uart_int_rx(qe_port); in qe_uart_int()
582 qe_uart_tx_pump(qe_port); in qe_uart_int()
591 static void qe_uart_initbd(struct uart_qe_port *qe_port) in qe_uart_initbd() argument
600 bd_virt = qe_port->bd_virt; in qe_uart_initbd()
601 bdp = qe_port->rx_bd_base; in qe_uart_initbd()
602 qe_port->rx_cur = qe_port->rx_bd_base; in qe_uart_initbd()
603 for (i = 0; i < (qe_port->rx_nrfifos - 1); i++) { in qe_uart_initbd()
605 qe_iowrite32be(cpu2qe_addr(bd_virt, qe_port), &bdp->buf); in qe_uart_initbd()
607 bd_virt += qe_port->rx_fifosize; in qe_uart_initbd()
613 qe_iowrite32be(cpu2qe_addr(bd_virt, qe_port), &bdp->buf); in qe_uart_initbd()
620 bd_virt = qe_port->bd_virt + in qe_uart_initbd()
621 L1_CACHE_ALIGN(qe_port->rx_nrfifos * qe_port->rx_fifosize); in qe_uart_initbd()
622 qe_port->tx_cur = qe_port->tx_bd_base; in qe_uart_initbd()
623 bdp = qe_port->tx_bd_base; in qe_uart_initbd()
624 for (i = 0; i < (qe_port->tx_nrfifos - 1); i++) { in qe_uart_initbd()
626 qe_iowrite32be(cpu2qe_addr(bd_virt, qe_port), &bdp->buf); in qe_uart_initbd()
628 bd_virt += qe_port->tx_fifosize; in qe_uart_initbd()
634 qe_setbits_be16(&qe_port->tx_cur->status, BD_SC_P); in qe_uart_initbd()
638 qe_iowrite32be(cpu2qe_addr(bd_virt, qe_port), &bdp->buf); in qe_uart_initbd()
649 static void qe_uart_init_ucc(struct uart_qe_port *qe_port) in qe_uart_init_ucc() argument
652 struct ucc_slow __iomem *uccp = qe_port->uccp; in qe_uart_init_ucc()
653 struct ucc_uart_pram *uccup = qe_port->uccup; in qe_uart_init_ucc()
658 ucc_slow_disable(qe_port->us_private, COMM_DIR_RX_AND_TX); in qe_uart_init_ucc()
663 qe_iowrite16be(qe_port->rx_fifosize, &uccup->common.mrblr); in qe_uart_init_ucc()
757 cecr_subblock = ucc_slow_get_qe_cr_subblock(qe_port->ucc_num); in qe_uart_init_ucc()
761 cecr_subblock = ucc_slow_get_qe_cr_subblock(qe_port->ucc_num); in qe_uart_init_ucc()
772 struct uart_qe_port *qe_port = in qe_uart_startup() local
785 qe_uart_initbd(qe_port); in qe_uart_startup()
786 qe_uart_init_ucc(qe_port); in qe_uart_startup()
790 qe_port); in qe_uart_startup()
797 qe_setbits_be16(&qe_port->uccp->uccm, UCC_UART_UCCE_RX); in qe_uart_startup()
798 ucc_slow_enable(qe_port->us_private, COMM_DIR_RX_AND_TX); in qe_uart_startup()
808 struct uart_qe_port *qe_port = in qe_uart_shutdown() local
810 struct ucc_slow __iomem *uccp = qe_port->uccp; in qe_uart_shutdown()
825 if (qe_port->wait_closing) { in qe_uart_shutdown()
828 schedule_timeout(qe_port->wait_closing); in qe_uart_shutdown()
832 ucc_slow_disable(qe_port->us_private, COMM_DIR_RX_AND_TX); in qe_uart_shutdown()
836 ucc_slow_graceful_stop_tx(qe_port->us_private); in qe_uart_shutdown()
837 qe_uart_initbd(qe_port); in qe_uart_shutdown()
839 free_irq(port->irq, qe_port); in qe_uart_shutdown()
848 struct uart_qe_port *qe_port = in qe_uart_set_termios() local
850 struct ucc_slow __iomem *uccp = qe_port->uccp; in qe_uart_set_termios()
854 struct ucc_uart_pram __iomem *uccup = qe_port->uccup; in qe_uart_set_termios()
959 qe_setbrg(qe_port->us_info.rx_clock, baud, 16); in qe_uart_set_termios()
960 qe_setbrg(qe_port->us_info.tx_clock, baud, 1); in qe_uart_set_termios()
962 qe_setbrg(qe_port->us_info.rx_clock, baud, 16); in qe_uart_set_termios()
963 qe_setbrg(qe_port->us_info.tx_clock, baud, 16); in qe_uart_set_termios()
983 struct uart_qe_port *qe_port = in qe_uart_request_port() local
985 struct ucc_slow_info *us_info = &qe_port->us_info; in qe_uart_request_port()
994 qe_port->ucc_num); in qe_uart_request_port()
998 qe_port->us_private = uccs; in qe_uart_request_port()
999 qe_port->uccp = uccs->us_regs; in qe_uart_request_port()
1000 qe_port->uccup = (struct ucc_uart_pram *) uccs->us_pram; in qe_uart_request_port()
1001 qe_port->rx_bd_base = uccs->rx_bd; in qe_uart_request_port()
1002 qe_port->tx_bd_base = uccs->tx_bd; in qe_uart_request_port()
1008 rx_size = L1_CACHE_ALIGN(qe_port->rx_nrfifos * qe_port->rx_fifosize); in qe_uart_request_port()
1009 tx_size = L1_CACHE_ALIGN(qe_port->tx_nrfifos * qe_port->tx_fifosize); in qe_uart_request_port()
1018 qe_port->bd_virt = bd_virt; in qe_uart_request_port()
1019 qe_port->bd_dma_addr = bd_dma_addr; in qe_uart_request_port()
1020 qe_port->bd_size = rx_size + tx_size; in qe_uart_request_port()
1022 qe_port->rx_buf = bd_virt; in qe_uart_request_port()
1023 qe_port->tx_buf = qe_port->rx_buf + rx_size; in qe_uart_request_port()
1049 struct uart_qe_port *qe_port = in qe_uart_release_port() local
1051 struct ucc_slow_private *uccs = qe_port->us_private; in qe_uart_release_port()
1053 dma_free_coherent(port->dev, qe_port->bd_size, qe_port->bd_virt, in qe_uart_release_port()
1054 qe_port->bd_dma_addr); in qe_uart_release_port()
1258 struct uart_qe_port *qe_port = NULL; in ucc_uart_probe() local
1270 qe_port = kzalloc(sizeof(struct uart_qe_port), GFP_KERNEL); in ucc_uart_probe()
1271 if (!qe_port) { in ucc_uart_probe()
1287 qe_port->port.mapbase = res.start; in ucc_uart_probe()
1304 qe_port->ucc_num = val - 1; in ucc_uart_probe()
1320 qe_port->us_info.rx_clock = qe_clock_source(sprop); in ucc_uart_probe()
1321 if ((qe_port->us_info.rx_clock < QE_BRG1) || in ucc_uart_probe()
1322 (qe_port->us_info.rx_clock > QE_BRG16)) { in ucc_uart_probe()
1330 qe_port->us_info.tx_clock = qe_port->us_info.rx_clock; in ucc_uart_probe()
1338 qe_port->us_info.tx_clock = qe_clock_source(sprop); in ucc_uart_probe()
1340 if ((qe_port->us_info.tx_clock < QE_BRG1) || in ucc_uart_probe()
1341 (qe_port->us_info.tx_clock > QE_BRG16)) { in ucc_uart_probe()
1353 qe_port->port.line = val; in ucc_uart_probe()
1354 if (qe_port->port.line >= UCC_MAX_UART) { in ucc_uart_probe()
1361 qe_port->port.irq = irq_of_parse_and_map(np, 0); in ucc_uart_probe()
1362 if (qe_port->port.irq == 0) { in ucc_uart_probe()
1364 qe_port->ucc_num + 1); in ucc_uart_probe()
1391 qe_port->port.uartclk = val; in ucc_uart_probe()
1412 qe_port->port.uartclk = val / 2; in ucc_uart_probe()
1421 spin_lock_init(&qe_port->port.lock); in ucc_uart_probe()
1422 qe_port->np = np; in ucc_uart_probe()
1423 qe_port->port.dev = &ofdev->dev; in ucc_uart_probe()
1424 qe_port->port.ops = &qe_uart_pops; in ucc_uart_probe()
1425 qe_port->port.iotype = UPIO_MEM; in ucc_uart_probe()
1427 qe_port->tx_nrfifos = TX_NUM_FIFO; in ucc_uart_probe()
1428 qe_port->tx_fifosize = TX_BUF_SIZE; in ucc_uart_probe()
1429 qe_port->rx_nrfifos = RX_NUM_FIFO; in ucc_uart_probe()
1430 qe_port->rx_fifosize = RX_BUF_SIZE; in ucc_uart_probe()
1432 qe_port->wait_closing = UCC_WAIT_CLOSING; in ucc_uart_probe()
1433 qe_port->port.fifosize = 512; in ucc_uart_probe()
1434 qe_port->port.flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP; in ucc_uart_probe()
1436 qe_port->us_info.ucc_num = qe_port->ucc_num; in ucc_uart_probe()
1437 qe_port->us_info.regs = (phys_addr_t) res.start; in ucc_uart_probe()
1438 qe_port->us_info.irq = qe_port->port.irq; in ucc_uart_probe()
1440 qe_port->us_info.rx_bd_ring_len = qe_port->rx_nrfifos; in ucc_uart_probe()
1441 qe_port->us_info.tx_bd_ring_len = qe_port->tx_nrfifos; in ucc_uart_probe()
1444 qe_port->us_info.init_tx = 1; in ucc_uart_probe()
1445 qe_port->us_info.init_rx = 1; in ucc_uart_probe()
1451 ret = uart_add_one_port(&ucc_uart_driver, &qe_port->port); in ucc_uart_probe()
1454 qe_port->port.line); in ucc_uart_probe()
1458 platform_set_drvdata(ofdev, qe_port); in ucc_uart_probe()
1461 qe_port->ucc_num + 1, qe_port->port.line); in ucc_uart_probe()
1465 qe_port->port.line, SERIAL_QE_MAJOR, in ucc_uart_probe()
1466 SERIAL_QE_MINOR + qe_port->port.line); in ucc_uart_probe()
1472 kfree(qe_port); in ucc_uart_probe()
1478 struct uart_qe_port *qe_port = platform_get_drvdata(ofdev); in ucc_uart_remove() local
1480 dev_info(&ofdev->dev, "removing /dev/ttyQE%u\n", qe_port->port.line); in ucc_uart_remove()
1482 uart_remove_one_port(&ucc_uart_driver, &qe_port->port); in ucc_uart_remove()
1484 kfree(qe_port); in ucc_uart_remove()