Lines Matching refs:msm_port

170 struct msm_port {  struct
183 #define UART_TO_MSM(uart_port) container_of(uart_port, struct msm_port, uart) argument
223 struct msm_port *msm_port = UART_TO_MSM(port); in msm_serial_set_mnd_regs() local
229 if (msm_port->is_uartdm) in msm_serial_set_mnd_regs()
239 static void msm_start_rx_dma(struct msm_port *msm_port);
267 static void msm_release_dma(struct msm_port *msm_port) in msm_release_dma() argument
271 dma = &msm_port->tx_dma; in msm_release_dma()
273 msm_stop_dma(&msm_port->uart, dma); in msm_release_dma()
279 dma = &msm_port->rx_dma; in msm_release_dma()
281 msm_stop_dma(&msm_port->uart, dma); in msm_release_dma()
289 static void msm_request_tx_dma(struct msm_port *msm_port, resource_size_t base) in msm_request_tx_dma() argument
291 struct device *dev = msm_port->uart.dev; in msm_request_tx_dma()
297 dma = &msm_port->tx_dma; in msm_request_tx_dma()
319 if (msm_port->is_uartdm < UARTDM_1P4) in msm_request_tx_dma()
332 static void msm_request_rx_dma(struct msm_port *msm_port, resource_size_t base) in msm_request_rx_dma() argument
334 struct device *dev = msm_port->uart.dev; in msm_request_rx_dma()
340 dma = &msm_port->rx_dma; in msm_request_rx_dma()
366 if (msm_port->is_uartdm < UARTDM_1P4) in msm_request_rx_dma()
396 struct msm_port *msm_port = UART_TO_MSM(port); in msm_stop_tx() local
398 msm_port->imr &= ~UART_IMR_TXLEV; in msm_stop_tx()
399 msm_write(port, msm_port->imr, UART_IMR); in msm_stop_tx()
404 struct msm_port *msm_port = UART_TO_MSM(port); in msm_start_tx() local
405 struct msm_dma *dma = &msm_port->tx_dma; in msm_start_tx()
411 msm_port->imr |= UART_IMR_TXLEV; in msm_start_tx()
412 msm_write(port, msm_port->imr, UART_IMR); in msm_start_tx()
424 struct msm_port *msm_port = args; in msm_complete_tx_dma() local
425 struct uart_port *port = &msm_port->uart; in msm_complete_tx_dma()
427 struct msm_dma *dma = &msm_port->tx_dma; in msm_complete_tx_dma()
448 if (msm_port->is_uartdm > UARTDM_1P3) { in msm_complete_tx_dma()
461 msm_port->imr |= UART_IMR_TXLEV; in msm_complete_tx_dma()
462 msm_write(port, msm_port->imr, UART_IMR); in msm_complete_tx_dma()
472 static int msm_handle_tx_dma(struct msm_port *msm_port, unsigned int count) in msm_handle_tx_dma() argument
474 struct circ_buf *xmit = &msm_port->uart.state->xmit; in msm_handle_tx_dma()
475 struct uart_port *port = &msm_port->uart; in msm_handle_tx_dma()
476 struct msm_dma *dma = &msm_port->tx_dma; in msm_handle_tx_dma()
498 dma->desc->callback_param = msm_port; in msm_handle_tx_dma()
509 msm_port->imr &= ~UART_IMR_TXLEV; in msm_handle_tx_dma()
510 msm_write(port, msm_port->imr, UART_IMR); in msm_handle_tx_dma()
517 if (msm_port->is_uartdm < UARTDM_1P4) in msm_handle_tx_dma()
522 if (msm_port->is_uartdm > UARTDM_1P3) in msm_handle_tx_dma()
534 struct msm_port *msm_port = args; in msm_complete_rx_dma() local
535 struct uart_port *port = &msm_port->uart; in msm_complete_rx_dma()
537 struct msm_dma *dma = &msm_port->rx_dma; in msm_complete_rx_dma()
569 if (msm_port->break_detected && dma->virt[i] == 0) { in msm_complete_rx_dma()
572 msm_port->break_detected = false; in msm_complete_rx_dma()
587 msm_start_rx_dma(msm_port); in msm_complete_rx_dma()
595 static void msm_start_rx_dma(struct msm_port *msm_port) in msm_start_rx_dma() argument
597 struct msm_dma *dma = &msm_port->rx_dma; in msm_start_rx_dma()
598 struct uart_port *uart = &msm_port->uart; in msm_start_rx_dma()
621 dma->desc->callback_param = msm_port; in msm_start_rx_dma()
631 msm_port->imr &= ~(UART_IMR_RXLEV | UART_IMR_RXSTALE); in msm_start_rx_dma()
637 if (msm_port->is_uartdm < UARTDM_1P4) in msm_start_rx_dma()
638 msm_port->imr |= UART_IMR_RXSTALE; in msm_start_rx_dma()
640 msm_write(uart, msm_port->imr, UART_IMR); in msm_start_rx_dma()
652 if (msm_port->is_uartdm < UARTDM_1P4) in msm_start_rx_dma()
657 if (msm_port->is_uartdm > UARTDM_1P3) in msm_start_rx_dma()
677 msm_port->imr |= (UART_IMR_RXLEV | UART_IMR_RXSTALE); in msm_start_rx_dma()
678 msm_write(uart, msm_port->imr, UART_IMR); in msm_start_rx_dma()
683 struct msm_port *msm_port = UART_TO_MSM(port); in msm_stop_rx() local
684 struct msm_dma *dma = &msm_port->rx_dma; in msm_stop_rx()
686 msm_port->imr &= ~(UART_IMR_RXLEV | UART_IMR_RXSTALE); in msm_stop_rx()
687 msm_write(port, msm_port->imr, UART_IMR); in msm_stop_rx()
695 struct msm_port *msm_port = UART_TO_MSM(port); in msm_enable_ms() local
697 msm_port->imr |= UART_IMR_DELTA_CTS; in msm_enable_ms()
698 msm_write(port, msm_port->imr, UART_IMR); in msm_enable_ms()
707 struct msm_port *msm_port = UART_TO_MSM(port); in msm_handle_rx_dm() local
717 msm_port->old_snap_state; in msm_handle_rx_dm()
718 msm_port->old_snap_state = 0; in msm_handle_rx_dm()
721 msm_port->old_snap_state += count; in msm_handle_rx_dm()
734 msm_port->old_snap_state -= count; in msm_handle_rx_dm()
744 if (msm_port->break_detected && buf[i] == 0) { in msm_handle_rx_dm()
747 msm_port->break_detected = false; in msm_handle_rx_dm()
774 msm_start_rx_dma(msm_port); in msm_handle_rx_dm()
834 struct msm_port *msm_port = UART_TO_MSM(port); in msm_handle_tx_pio() local
839 if (msm_port->is_uartdm) in msm_handle_tx_pio()
844 if (tx_count && msm_port->is_uartdm) in msm_handle_tx_pio()
854 if (msm_port->is_uartdm) in msm_handle_tx_pio()
880 struct msm_port *msm_port = UART_TO_MSM(port); in msm_handle_tx() local
881 struct circ_buf *xmit = &msm_port->uart.state->xmit; in msm_handle_tx()
882 struct msm_dma *dma = &msm_port->tx_dma; in msm_handle_tx()
889 if (msm_port->is_uartdm) in msm_handle_tx()
896 if (msm_port->is_uartdm) in msm_handle_tx()
914 if (msm_port->is_uartdm > UARTDM_1P3) { in msm_handle_tx()
928 err = msm_handle_tx_dma(msm_port, dma_count); in msm_handle_tx()
944 struct msm_port *msm_port = UART_TO_MSM(port); in msm_uart_irq() local
945 struct msm_dma *dma = &msm_port->rx_dma; in msm_uart_irq()
955 msm_port->break_detected = true; in msm_uart_irq()
970 } else if (msm_port->is_uartdm) { in msm_uart_irq()
981 msm_write(port, msm_port->imr, UART_IMR); /* restore interrupt */ in msm_uart_irq()
999 struct msm_port *msm_port = UART_TO_MSM(port); in msm_reset() local
1014 if (msm_port->is_uartdm) in msm_reset()
1052 struct msm_port *msm_port = UART_TO_MSM(port); in msm_find_best_baud() local
1076 target = clk_round_rate(msm_port->clk, 16 * baud); in msm_find_best_baud()
1097 target = clk_round_rate(msm_port->clk, old + 1); in msm_find_best_baud()
1121 struct msm_port *msm_port = UART_TO_MSM(port); in msm_set_baud_rate() local
1129 clk_set_rate(msm_port->clk, rate); in msm_set_baud_rate()
1141 if (msm_port->is_uartdm) { in msm_set_baud_rate()
1166 msm_port->imr = UART_IMR_RXLEV | UART_IMR_RXSTALE | in msm_set_baud_rate()
1169 msm_write(port, msm_port->imr, UART_IMR); in msm_set_baud_rate()
1171 if (msm_port->is_uartdm) { in msm_set_baud_rate()
1182 struct msm_port *msm_port = UART_TO_MSM(port); in msm_init_clock() local
1184 clk_prepare_enable(msm_port->clk); in msm_init_clock()
1185 clk_prepare_enable(msm_port->pclk); in msm_init_clock()
1191 struct msm_port *msm_port = UART_TO_MSM(port); in msm_startup() local
1195 snprintf(msm_port->name, sizeof(msm_port->name), in msm_startup()
1208 if (msm_port->is_uartdm) in msm_startup()
1219 if (msm_port->is_uartdm) { in msm_startup()
1220 msm_request_tx_dma(msm_port, msm_port->uart.mapbase); in msm_startup()
1221 msm_request_rx_dma(msm_port, msm_port->uart.mapbase); in msm_startup()
1225 msm_port->name, port); in msm_startup()
1232 if (msm_port->is_uartdm) in msm_startup()
1233 msm_release_dma(msm_port); in msm_startup()
1235 clk_disable_unprepare(msm_port->pclk); in msm_startup()
1236 clk_disable_unprepare(msm_port->clk); in msm_startup()
1243 struct msm_port *msm_port = UART_TO_MSM(port); in msm_shutdown() local
1245 msm_port->imr = 0; in msm_shutdown()
1248 if (msm_port->is_uartdm) in msm_shutdown()
1249 msm_release_dma(msm_port); in msm_shutdown()
1251 clk_disable_unprepare(msm_port->clk); in msm_shutdown()
1259 struct msm_port *msm_port = UART_TO_MSM(port); in msm_set_termios() local
1260 struct msm_dma *dma = &msm_port->rx_dma; in msm_set_termios()
1334 msm_start_rx_dma(msm_port); in msm_set_termios()
1413 struct msm_port *msm_port = UART_TO_MSM(port); in msm_power() local
1417 clk_prepare_enable(msm_port->clk); in msm_power()
1418 clk_prepare_enable(msm_port->pclk); in msm_power()
1421 clk_disable_unprepare(msm_port->clk); in msm_power()
1422 clk_disable_unprepare(msm_port->pclk); in msm_power()
1432 struct msm_port *msm_port = UART_TO_MSM(port); in msm_poll_get_char_single() local
1433 unsigned int rf_reg = msm_port->is_uartdm ? UARTDM_RF : UART_RF; in msm_poll_get_char_single()
1486 struct msm_port *msm_port = UART_TO_MSM(port); in msm_poll_get_char() local
1492 if (msm_port->is_uartdm) in msm_poll_get_char()
1506 struct msm_port *msm_port = UART_TO_MSM(port); in msm_poll_put_char() local
1512 if (msm_port->is_uartdm) in msm_poll_put_char()
1520 msm_write(port, c, msm_port->is_uartdm ? UARTDM_TF : UART_TF); in msm_poll_put_char()
1555 static struct msm_port msm_uart_ports[] = {
1669 struct msm_port *msm_port; in msm_console_write() local
1674 msm_port = UART_TO_MSM(port); in msm_console_write()
1676 __msm_console_write(port, s, count, msm_port->is_uartdm); in msm_console_write()
1784 struct msm_port *msm_port; in msm_serial_probe() local
1805 msm_port = UART_TO_MSM(port); in msm_serial_probe()
1809 msm_port->is_uartdm = (unsigned long)id->data; in msm_serial_probe()
1811 msm_port->is_uartdm = 0; in msm_serial_probe()
1813 msm_port->clk = devm_clk_get(&pdev->dev, "core"); in msm_serial_probe()
1814 if (IS_ERR(msm_port->clk)) in msm_serial_probe()
1815 return PTR_ERR(msm_port->clk); in msm_serial_probe()
1817 if (msm_port->is_uartdm) { in msm_serial_probe()
1818 msm_port->pclk = devm_clk_get(&pdev->dev, "iface"); in msm_serial_probe()
1819 if (IS_ERR(msm_port->pclk)) in msm_serial_probe()
1820 return PTR_ERR(msm_port->pclk); in msm_serial_probe()
1823 port->uartclk = clk_get_rate(msm_port->clk); in msm_serial_probe()
1860 struct msm_port *port = dev_get_drvdata(dev); in msm_serial_suspend()
1869 struct msm_port *port = dev_get_drvdata(dev); in msm_serial_resume()