Lines Matching refs:msm_port

68 struct msm_port {  struct
82 static void msm_start_rx_dma(struct msm_port *msm_port); argument
110 static void msm_release_dma(struct msm_port *msm_port) in msm_release_dma() argument
114 dma = &msm_port->tx_dma; in msm_release_dma()
116 msm_stop_dma(&msm_port->uart, dma); in msm_release_dma()
122 dma = &msm_port->rx_dma; in msm_release_dma()
124 msm_stop_dma(&msm_port->uart, dma); in msm_release_dma()
132 static void msm_request_tx_dma(struct msm_port *msm_port, resource_size_t base) in msm_request_tx_dma() argument
134 struct device *dev = msm_port->uart.dev; in msm_request_tx_dma()
140 dma = &msm_port->tx_dma; in msm_request_tx_dma()
162 if (msm_port->is_uartdm < UARTDM_1P4) in msm_request_tx_dma()
175 static void msm_request_rx_dma(struct msm_port *msm_port, resource_size_t base) in msm_request_rx_dma() argument
177 struct device *dev = msm_port->uart.dev; in msm_request_rx_dma()
183 dma = &msm_port->rx_dma; in msm_request_rx_dma()
209 if (msm_port->is_uartdm < UARTDM_1P4) in msm_request_rx_dma()
235 struct msm_port *msm_port = UART_TO_MSM(port); in msm_stop_tx() local
237 msm_port->imr &= ~UART_IMR_TXLEV; in msm_stop_tx()
238 msm_write(port, msm_port->imr, UART_IMR); in msm_stop_tx()
243 struct msm_port *msm_port = UART_TO_MSM(port); in msm_start_tx() local
244 struct msm_dma *dma = &msm_port->tx_dma; in msm_start_tx()
250 msm_port->imr |= UART_IMR_TXLEV; in msm_start_tx()
251 msm_write(port, msm_port->imr, UART_IMR); in msm_start_tx()
263 struct msm_port *msm_port = args; in msm_complete_tx_dma() local
264 struct uart_port *port = &msm_port->uart; in msm_complete_tx_dma()
266 struct msm_dma *dma = &msm_port->tx_dma; in msm_complete_tx_dma()
287 if (msm_port->is_uartdm > UARTDM_1P3) { in msm_complete_tx_dma()
300 msm_port->imr |= UART_IMR_TXLEV; in msm_complete_tx_dma()
301 msm_write(port, msm_port->imr, UART_IMR); in msm_complete_tx_dma()
311 static int msm_handle_tx_dma(struct msm_port *msm_port, unsigned int count) in msm_handle_tx_dma() argument
313 struct circ_buf *xmit = &msm_port->uart.state->xmit; in msm_handle_tx_dma()
314 struct uart_port *port = &msm_port->uart; in msm_handle_tx_dma()
315 struct msm_dma *dma = &msm_port->tx_dma; in msm_handle_tx_dma()
337 dma->desc->callback_param = msm_port; in msm_handle_tx_dma()
348 msm_port->imr &= ~UART_IMR_TXLEV; in msm_handle_tx_dma()
349 msm_write(port, msm_port->imr, UART_IMR); in msm_handle_tx_dma()
356 if (msm_port->is_uartdm < UARTDM_1P4) in msm_handle_tx_dma()
361 if (msm_port->is_uartdm > UARTDM_1P3) in msm_handle_tx_dma()
373 struct msm_port *msm_port = args; in msm_complete_rx_dma() local
374 struct uart_port *port = &msm_port->uart; in msm_complete_rx_dma()
376 struct msm_dma *dma = &msm_port->rx_dma; in msm_complete_rx_dma()
392 msm_port->imr |= UART_IMR_RXLEV | UART_IMR_RXSTALE; in msm_complete_rx_dma()
393 msm_write(port, msm_port->imr, UART_IMR); in msm_complete_rx_dma()
412 if (msm_port->break_detected && dma->virt[i] == 0) { in msm_complete_rx_dma()
415 msm_port->break_detected = false; in msm_complete_rx_dma()
430 msm_start_rx_dma(msm_port); in msm_complete_rx_dma()
438 static void msm_start_rx_dma(struct msm_port *msm_port) in msm_start_rx_dma() argument
440 struct msm_dma *dma = &msm_port->rx_dma; in msm_start_rx_dma()
441 struct uart_port *uart = &msm_port->uart; in msm_start_rx_dma()
461 dma->desc->callback_param = msm_port; in msm_start_rx_dma()
471 msm_port->imr &= ~(UART_IMR_RXLEV | UART_IMR_RXSTALE); in msm_start_rx_dma()
477 if (msm_port->is_uartdm < UARTDM_1P4) in msm_start_rx_dma()
478 msm_port->imr |= UART_IMR_RXSTALE; in msm_start_rx_dma()
480 msm_write(uart, msm_port->imr, UART_IMR); in msm_start_rx_dma()
492 if (msm_port->is_uartdm < UARTDM_1P4) in msm_start_rx_dma()
497 if (msm_port->is_uartdm > UARTDM_1P3) in msm_start_rx_dma()
507 struct msm_port *msm_port = UART_TO_MSM(port); in msm_stop_rx() local
508 struct msm_dma *dma = &msm_port->rx_dma; in msm_stop_rx()
510 msm_port->imr &= ~(UART_IMR_RXLEV | UART_IMR_RXSTALE); in msm_stop_rx()
511 msm_write(port, msm_port->imr, UART_IMR); in msm_stop_rx()
519 struct msm_port *msm_port = UART_TO_MSM(port); in msm_enable_ms() local
521 msm_port->imr |= UART_IMR_DELTA_CTS; in msm_enable_ms()
522 msm_write(port, msm_port->imr, UART_IMR); in msm_enable_ms()
530 struct msm_port *msm_port = UART_TO_MSM(port); in msm_handle_rx_dm() local
540 msm_port->old_snap_state; in msm_handle_rx_dm()
541 msm_port->old_snap_state = 0; in msm_handle_rx_dm()
544 msm_port->old_snap_state += count; in msm_handle_rx_dm()
557 msm_port->old_snap_state -= count; in msm_handle_rx_dm()
567 if (msm_port->break_detected && buf[i] == 0) { in msm_handle_rx_dm()
570 msm_port->break_detected = false; in msm_handle_rx_dm()
597 msm_start_rx_dma(msm_port); in msm_handle_rx_dm()
656 struct msm_port *msm_port = UART_TO_MSM(port); in msm_handle_tx_pio() local
661 if (msm_port->is_uartdm) in msm_handle_tx_pio()
666 if (tx_count && msm_port->is_uartdm) in msm_handle_tx_pio()
676 if (msm_port->is_uartdm) in msm_handle_tx_pio()
702 struct msm_port *msm_port = UART_TO_MSM(port); in msm_handle_tx() local
703 struct circ_buf *xmit = &msm_port->uart.state->xmit; in msm_handle_tx()
704 struct msm_dma *dma = &msm_port->tx_dma; in msm_handle_tx()
710 if (msm_port->is_uartdm) in msm_handle_tx()
715 if (msm_port->is_uartdm) in msm_handle_tx()
733 if (msm_port->is_uartdm > UARTDM_1P3) { in msm_handle_tx()
747 err = msm_handle_tx_dma(msm_port, dma_count); in msm_handle_tx()
763 struct msm_port *msm_port = UART_TO_MSM(port); in msm_uart_irq() local
764 struct msm_dma *dma = &msm_port->rx_dma; in msm_uart_irq()
774 msm_port->break_detected = true; in msm_uart_irq()
789 } else if (msm_port->is_uartdm) { in msm_uart_irq()
800 msm_write(port, msm_port->imr, UART_IMR); /* restore interrupt */ in msm_uart_irq()
818 struct msm_port *msm_port = UART_TO_MSM(port); in msm_reset() local
829 if (msm_port->is_uartdm) in msm_reset()
901 struct msm_port *msm_port = UART_TO_MSM(port); in msm_set_baud_rate() local
915 clk_set_rate(msm_port->clk, port->uartclk); in msm_set_baud_rate()
923 if (msm_port->is_uartdm) { in msm_set_baud_rate()
948 msm_port->imr = UART_IMR_RXLEV | UART_IMR_RXSTALE | in msm_set_baud_rate()
951 msm_write(port, msm_port->imr, UART_IMR); in msm_set_baud_rate()
953 if (msm_port->is_uartdm) { in msm_set_baud_rate()
964 struct msm_port *msm_port = UART_TO_MSM(port); in msm_init_clock() local
966 clk_prepare_enable(msm_port->clk); in msm_init_clock()
967 clk_prepare_enable(msm_port->pclk); in msm_init_clock()
973 struct msm_port *msm_port = UART_TO_MSM(port); in msm_startup() local
977 snprintf(msm_port->name, sizeof(msm_port->name), in msm_startup()
981 msm_port->name, port); in msm_startup()
995 if (msm_port->is_uartdm) in msm_startup()
1006 if (msm_port->is_uartdm) { in msm_startup()
1007 msm_request_tx_dma(msm_port, msm_port->uart.mapbase); in msm_startup()
1008 msm_request_rx_dma(msm_port, msm_port->uart.mapbase); in msm_startup()
1016 struct msm_port *msm_port = UART_TO_MSM(port); in msm_shutdown() local
1018 msm_port->imr = 0; in msm_shutdown()
1021 if (msm_port->is_uartdm) in msm_shutdown()
1022 msm_release_dma(msm_port); in msm_shutdown()
1024 clk_disable_unprepare(msm_port->clk); in msm_shutdown()
1032 struct msm_port *msm_port = UART_TO_MSM(port); in msm_set_termios() local
1033 struct msm_dma *dma = &msm_port->rx_dma; in msm_set_termios()
1107 msm_start_rx_dma(msm_port); in msm_set_termios()
1186 struct msm_port *msm_port = UART_TO_MSM(port); in msm_power() local
1190 clk_prepare_enable(msm_port->clk); in msm_power()
1191 clk_prepare_enable(msm_port->pclk); in msm_power()
1194 clk_disable_unprepare(msm_port->clk); in msm_power()
1195 clk_disable_unprepare(msm_port->pclk); in msm_power()
1205 struct msm_port *msm_port = UART_TO_MSM(port); in msm_poll_get_char_single() local
1206 unsigned int rf_reg = msm_port->is_uartdm ? UARTDM_RF : UART_RF; in msm_poll_get_char_single()
1259 struct msm_port *msm_port = UART_TO_MSM(port); in msm_poll_get_char() local
1265 if (msm_port->is_uartdm) in msm_poll_get_char()
1279 struct msm_port *msm_port = UART_TO_MSM(port); in msm_poll_put_char() local
1285 if (msm_port->is_uartdm) in msm_poll_put_char()
1293 msm_write(port, c, msm_port->is_uartdm ? UARTDM_TF : UART_TF); in msm_poll_put_char()
1328 static struct msm_port msm_uart_ports[] = {
1428 struct msm_port *msm_port; in msm_console_write() local
1433 msm_port = UART_TO_MSM(port); in msm_console_write()
1435 __msm_console_write(port, s, count, msm_port->is_uartdm); in msm_console_write()
1545 struct msm_port *msm_port; in msm_serial_probe() local
1566 msm_port = UART_TO_MSM(port); in msm_serial_probe()
1570 msm_port->is_uartdm = (unsigned long)id->data; in msm_serial_probe()
1572 msm_port->is_uartdm = 0; in msm_serial_probe()
1574 msm_port->clk = devm_clk_get(&pdev->dev, "core"); in msm_serial_probe()
1575 if (IS_ERR(msm_port->clk)) in msm_serial_probe()
1576 return PTR_ERR(msm_port->clk); in msm_serial_probe()
1578 if (msm_port->is_uartdm) { in msm_serial_probe()
1579 msm_port->pclk = devm_clk_get(&pdev->dev, "iface"); in msm_serial_probe()
1580 if (IS_ERR(msm_port->pclk)) in msm_serial_probe()
1581 return PTR_ERR(msm_port->pclk); in msm_serial_probe()
1583 clk_set_rate(msm_port->clk, 1843200); in msm_serial_probe()
1586 port->uartclk = clk_get_rate(msm_port->clk); in msm_serial_probe()