Lines Matching refs:stm32port

638 	struct stm32_port *stm32port = to_stm32_port(port);  in stm32_usart_tx_dma_complete()  local
641 stm32_usart_tx_dma_terminate(stm32port); in stm32_usart_tx_dma_complete()
714 struct stm32_port *stm32port = to_stm32_port(port); in stm32_usart_transmit_chars_dma() local
720 if (stm32_usart_tx_dma_started(stm32port)) { in stm32_usart_transmit_chars_dma()
721 ret = stm32_usart_tx_dma_resume(stm32port); in stm32_usart_transmit_chars_dma()
733 memcpy(&stm32port->tx_buf[0], &xmit->buf[xmit->tail], count); in stm32_usart_transmit_chars_dma()
742 memcpy(&stm32port->tx_buf[0], &xmit->buf[xmit->tail], one); in stm32_usart_transmit_chars_dma()
744 memcpy(&stm32port->tx_buf[one], &xmit->buf[0], two); in stm32_usart_transmit_chars_dma()
747 desc = dmaengine_prep_slave_single(stm32port->tx_ch, in stm32_usart_transmit_chars_dma()
748 stm32port->tx_dma_buf, in stm32_usart_transmit_chars_dma()
762 stm32port->tx_dma_busy = true; in stm32_usart_transmit_chars_dma()
772 stm32_usart_tx_dma_terminate(stm32port); in stm32_usart_transmit_chars_dma()
777 dma_async_issue_pending(stm32port->tx_ch); in stm32_usart_transmit_chars_dma()
1398 struct stm32_port *stm32port = container_of(port, in stm32_usart_pm() local
1400 const struct stm32_usart_offsets *ofs = &stm32port->info->ofs; in stm32_usart_pm()
1401 const struct stm32_usart_config *cfg = &stm32port->info->cfg; in stm32_usart_pm()
1505 static void stm32_usart_deinit_port(struct stm32_port *stm32port) in stm32_usart_deinit_port() argument
1507 clk_disable_unprepare(stm32port->clk); in stm32_usart_deinit_port()
1517 static int stm32_usart_init_port(struct stm32_port *stm32port, in stm32_usart_init_port() argument
1520 struct uart_port *port = &stm32port->port; in stm32_usart_init_port()
1532 port->fifosize = stm32port->info->cfg.fifosize; in stm32_usart_init_port()
1542 stm32port->wakeup_src = stm32port->info->cfg.has_wakeup && in stm32_usart_init_port()
1545 stm32port->swap = stm32port->info->cfg.has_swap && in stm32_usart_init_port()
1548 stm32port->fifoen = stm32port->info->cfg.has_fifo; in stm32_usart_init_port()
1549 if (stm32port->fifoen) { in stm32_usart_init_port()
1551 &stm32port->rxftcfg); in stm32_usart_init_port()
1553 &stm32port->txftcfg); in stm32_usart_init_port()
1563 stm32port->clk = devm_clk_get(&pdev->dev, NULL); in stm32_usart_init_port()
1564 if (IS_ERR(stm32port->clk)) in stm32_usart_init_port()
1565 return PTR_ERR(stm32port->clk); in stm32_usart_init_port()
1568 ret = clk_prepare_enable(stm32port->clk); in stm32_usart_init_port()
1572 stm32port->port.uartclk = clk_get_rate(stm32port->clk); in stm32_usart_init_port()
1573 if (!stm32port->port.uartclk) { in stm32_usart_init_port()
1578 stm32port->gpios = mctrl_gpio_init(&stm32port->port, 0); in stm32_usart_init_port()
1579 if (IS_ERR(stm32port->gpios)) { in stm32_usart_init_port()
1580 ret = PTR_ERR(stm32port->gpios); in stm32_usart_init_port()
1588 if (stm32port->hw_flow_control) { in stm32_usart_init_port()
1589 if (mctrl_gpio_to_gpiod(stm32port->gpios, UART_GPIO_CTS) || in stm32_usart_init_port()
1590 mctrl_gpio_to_gpiod(stm32port->gpios, UART_GPIO_RTS)) { in stm32_usart_init_port()
1600 clk_disable_unprepare(stm32port->clk); in stm32_usart_init_port()
1643 static void stm32_usart_of_dma_rx_remove(struct stm32_port *stm32port, in stm32_usart_of_dma_rx_remove() argument
1646 if (stm32port->rx_buf) in stm32_usart_of_dma_rx_remove()
1647 dma_free_coherent(&pdev->dev, RX_BUF_L, stm32port->rx_buf, in stm32_usart_of_dma_rx_remove()
1648 stm32port->rx_dma_buf); in stm32_usart_of_dma_rx_remove()
1651 static int stm32_usart_of_dma_rx_probe(struct stm32_port *stm32port, in stm32_usart_of_dma_rx_probe() argument
1654 const struct stm32_usart_offsets *ofs = &stm32port->info->ofs; in stm32_usart_of_dma_rx_probe()
1655 struct uart_port *port = &stm32port->port; in stm32_usart_of_dma_rx_probe()
1660 stm32port->rx_buf = dma_alloc_coherent(dev, RX_BUF_L, in stm32_usart_of_dma_rx_probe()
1661 &stm32port->rx_dma_buf, in stm32_usart_of_dma_rx_probe()
1663 if (!stm32port->rx_buf) in stm32_usart_of_dma_rx_probe()
1671 ret = dmaengine_slave_config(stm32port->rx_ch, &config); in stm32_usart_of_dma_rx_probe()
1674 stm32_usart_of_dma_rx_remove(stm32port, pdev); in stm32_usart_of_dma_rx_probe()
1681 static void stm32_usart_of_dma_tx_remove(struct stm32_port *stm32port, in stm32_usart_of_dma_tx_remove() argument
1684 if (stm32port->tx_buf) in stm32_usart_of_dma_tx_remove()
1685 dma_free_coherent(&pdev->dev, TX_BUF_L, stm32port->tx_buf, in stm32_usart_of_dma_tx_remove()
1686 stm32port->tx_dma_buf); in stm32_usart_of_dma_tx_remove()
1689 static int stm32_usart_of_dma_tx_probe(struct stm32_port *stm32port, in stm32_usart_of_dma_tx_probe() argument
1692 const struct stm32_usart_offsets *ofs = &stm32port->info->ofs; in stm32_usart_of_dma_tx_probe()
1693 struct uart_port *port = &stm32port->port; in stm32_usart_of_dma_tx_probe()
1698 stm32port->tx_buf = dma_alloc_coherent(dev, TX_BUF_L, in stm32_usart_of_dma_tx_probe()
1699 &stm32port->tx_dma_buf, in stm32_usart_of_dma_tx_probe()
1701 if (!stm32port->tx_buf) in stm32_usart_of_dma_tx_probe()
1709 ret = dmaengine_slave_config(stm32port->tx_ch, &config); in stm32_usart_of_dma_tx_probe()
1712 stm32_usart_of_dma_tx_remove(stm32port, pdev); in stm32_usart_of_dma_tx_probe()
1721 struct stm32_port *stm32port; in stm32_usart_serial_probe() local
1724 stm32port = stm32_usart_of_get_port(pdev); in stm32_usart_serial_probe()
1725 if (!stm32port) in stm32_usart_serial_probe()
1728 stm32port->info = of_device_get_match_data(&pdev->dev); in stm32_usart_serial_probe()
1729 if (!stm32port->info) in stm32_usart_serial_probe()
1732 stm32port->rx_ch = dma_request_chan(&pdev->dev, "rx"); in stm32_usart_serial_probe()
1733 if (PTR_ERR(stm32port->rx_ch) == -EPROBE_DEFER) in stm32_usart_serial_probe()
1737 if (IS_ERR(stm32port->rx_ch)) in stm32_usart_serial_probe()
1738 stm32port->rx_ch = NULL; in stm32_usart_serial_probe()
1740 stm32port->tx_ch = dma_request_chan(&pdev->dev, "tx"); in stm32_usart_serial_probe()
1741 if (PTR_ERR(stm32port->tx_ch) == -EPROBE_DEFER) { in stm32_usart_serial_probe()
1746 if (IS_ERR(stm32port->tx_ch)) in stm32_usart_serial_probe()
1747 stm32port->tx_ch = NULL; in stm32_usart_serial_probe()
1749 ret = stm32_usart_init_port(stm32port, pdev); in stm32_usart_serial_probe()
1753 if (stm32port->wakeup_src) { in stm32_usart_serial_probe()
1755 ret = dev_pm_set_wake_irq(&pdev->dev, stm32port->port.irq); in stm32_usart_serial_probe()
1760 if (stm32port->rx_ch && stm32_usart_of_dma_rx_probe(stm32port, pdev)) { in stm32_usart_serial_probe()
1762 dma_release_channel(stm32port->rx_ch); in stm32_usart_serial_probe()
1763 stm32port->rx_ch = NULL; in stm32_usart_serial_probe()
1766 if (stm32port->tx_ch && stm32_usart_of_dma_tx_probe(stm32port, pdev)) { in stm32_usart_serial_probe()
1768 dma_release_channel(stm32port->tx_ch); in stm32_usart_serial_probe()
1769 stm32port->tx_ch = NULL; in stm32_usart_serial_probe()
1772 if (!stm32port->rx_ch) in stm32_usart_serial_probe()
1774 if (!stm32port->tx_ch) in stm32_usart_serial_probe()
1777 platform_set_drvdata(pdev, &stm32port->port); in stm32_usart_serial_probe()
1783 ret = uart_add_one_port(&stm32_usart_driver, &stm32port->port); in stm32_usart_serial_probe()
1796 if (stm32port->tx_ch) in stm32_usart_serial_probe()
1797 stm32_usart_of_dma_tx_remove(stm32port, pdev); in stm32_usart_serial_probe()
1798 if (stm32port->rx_ch) in stm32_usart_serial_probe()
1799 stm32_usart_of_dma_rx_remove(stm32port, pdev); in stm32_usart_serial_probe()
1801 if (stm32port->wakeup_src) in stm32_usart_serial_probe()
1805 if (stm32port->wakeup_src) in stm32_usart_serial_probe()
1808 stm32_usart_deinit_port(stm32port); in stm32_usart_serial_probe()
1811 if (stm32port->tx_ch) in stm32_usart_serial_probe()
1812 dma_release_channel(stm32port->tx_ch); in stm32_usart_serial_probe()
1815 if (stm32port->rx_ch) in stm32_usart_serial_probe()
1816 dma_release_channel(stm32port->rx_ch); in stm32_usart_serial_probe()
1915 struct stm32_port *stm32port; in stm32_usart_console_setup() local
1924 stm32port = &stm32_ports[co->index]; in stm32_usart_console_setup()
1932 if (stm32port->port.mapbase == 0 || !stm32port->port.membase) in stm32_usart_console_setup()
1938 return uart_set_options(&stm32port->port, co, baud, parity, bits, flow); in stm32_usart_console_setup()
2119 struct stm32_port *stm32port = container_of(port, in stm32_usart_runtime_suspend() local
2122 clk_disable_unprepare(stm32port->clk); in stm32_usart_runtime_suspend()
2130 struct stm32_port *stm32port = container_of(port, in stm32_usart_runtime_resume() local
2133 return clk_prepare_enable(stm32port->clk); in stm32_usart_runtime_resume()