Lines Matching refs:stm32port

287 	struct stm32_port *stm32port = to_stm32_port(port);  in stm32_usart_tx_dma_complete()  local
288 const struct stm32_usart_offsets *ofs = &stm32port->info->ofs; in stm32_usart_tx_dma_complete()
291 dmaengine_terminate_async(stm32port->tx_ch); in stm32_usart_tx_dma_complete()
293 stm32port->tx_dma_busy = false; in stm32_usart_tx_dma_complete()
356 struct stm32_port *stm32port = to_stm32_port(port); in stm32_usart_transmit_chars_dma() local
357 const struct stm32_usart_offsets *ofs = &stm32port->info->ofs; in stm32_usart_transmit_chars_dma()
362 if (stm32port->tx_dma_busy) in stm32_usart_transmit_chars_dma()
365 stm32port->tx_dma_busy = true; in stm32_usart_transmit_chars_dma()
373 memcpy(&stm32port->tx_buf[0], &xmit->buf[xmit->tail], count); in stm32_usart_transmit_chars_dma()
382 memcpy(&stm32port->tx_buf[0], &xmit->buf[xmit->tail], one); in stm32_usart_transmit_chars_dma()
384 memcpy(&stm32port->tx_buf[one], &xmit->buf[0], two); in stm32_usart_transmit_chars_dma()
387 desc = dmaengine_prep_slave_single(stm32port->tx_ch, in stm32_usart_transmit_chars_dma()
388 stm32port->tx_dma_buf, in stm32_usart_transmit_chars_dma()
402 dmaengine_terminate_async(stm32port->tx_ch); in stm32_usart_transmit_chars_dma()
407 dma_async_issue_pending(stm32port->tx_ch); in stm32_usart_transmit_chars_dma()
979 struct stm32_port *stm32port = container_of(port, in stm32_usart_pm() local
981 const struct stm32_usart_offsets *ofs = &stm32port->info->ofs; in stm32_usart_pm()
982 const struct stm32_usart_config *cfg = &stm32port->info->cfg; in stm32_usart_pm()
1020 static int stm32_usart_init_port(struct stm32_port *stm32port, in stm32_usart_init_port() argument
1023 struct uart_port *port = &stm32port->port; in stm32_usart_init_port()
1035 port->fifosize = stm32port->info->cfg.fifosize; in stm32_usart_init_port()
1044 if (stm32port->info->cfg.has_wakeup) { in stm32_usart_init_port()
1045 stm32port->wakeirq = platform_get_irq_optional(pdev, 1); in stm32_usart_init_port()
1046 if (stm32port->wakeirq <= 0 && stm32port->wakeirq != -ENXIO) in stm32_usart_init_port()
1047 return stm32port->wakeirq ? : -ENODEV; in stm32_usart_init_port()
1050 stm32port->fifoen = stm32port->info->cfg.has_fifo; in stm32_usart_init_port()
1060 stm32port->clk = devm_clk_get(&pdev->dev, NULL); in stm32_usart_init_port()
1061 if (IS_ERR(stm32port->clk)) in stm32_usart_init_port()
1062 return PTR_ERR(stm32port->clk); in stm32_usart_init_port()
1065 ret = clk_prepare_enable(stm32port->clk); in stm32_usart_init_port()
1069 stm32port->port.uartclk = clk_get_rate(stm32port->clk); in stm32_usart_init_port()
1070 if (!stm32port->port.uartclk) { in stm32_usart_init_port()
1075 stm32port->gpios = mctrl_gpio_init(&stm32port->port, 0); in stm32_usart_init_port()
1076 if (IS_ERR(stm32port->gpios)) { in stm32_usart_init_port()
1077 ret = PTR_ERR(stm32port->gpios); in stm32_usart_init_port()
1082 if (stm32port->hw_flow_control) { in stm32_usart_init_port()
1083 if (mctrl_gpio_to_gpiod(stm32port->gpios, UART_GPIO_CTS) || in stm32_usart_init_port()
1084 mctrl_gpio_to_gpiod(stm32port->gpios, UART_GPIO_RTS)) { in stm32_usart_init_port()
1094 clk_disable_unprepare(stm32port->clk); in stm32_usart_init_port()
1137 static int stm32_usart_of_dma_rx_probe(struct stm32_port *stm32port, in stm32_usart_of_dma_rx_probe() argument
1140 const struct stm32_usart_offsets *ofs = &stm32port->info->ofs; in stm32_usart_of_dma_rx_probe()
1141 struct uart_port *port = &stm32port->port; in stm32_usart_of_dma_rx_probe()
1155 stm32port->rx_ch = dma_request_slave_channel(dev, "rx"); in stm32_usart_of_dma_rx_probe()
1156 if (!stm32port->rx_ch) { in stm32_usart_of_dma_rx_probe()
1160 stm32port->rx_buf = dma_alloc_coherent(&pdev->dev, RX_BUF_L, in stm32_usart_of_dma_rx_probe()
1161 &stm32port->rx_dma_buf, in stm32_usart_of_dma_rx_probe()
1163 if (!stm32port->rx_buf) { in stm32_usart_of_dma_rx_probe()
1173 ret = dmaengine_slave_config(stm32port->rx_ch, &config); in stm32_usart_of_dma_rx_probe()
1181 desc = dmaengine_prep_dma_cyclic(stm32port->rx_ch, in stm32_usart_of_dma_rx_probe()
1182 stm32port->rx_dma_buf, in stm32_usart_of_dma_rx_probe()
1198 dmaengine_terminate_sync(stm32port->rx_ch); in stm32_usart_of_dma_rx_probe()
1203 dma_async_issue_pending(stm32port->rx_ch); in stm32_usart_of_dma_rx_probe()
1209 RX_BUF_L, stm32port->rx_buf, in stm32_usart_of_dma_rx_probe()
1210 stm32port->rx_dma_buf); in stm32_usart_of_dma_rx_probe()
1213 dma_release_channel(stm32port->rx_ch); in stm32_usart_of_dma_rx_probe()
1214 stm32port->rx_ch = NULL; in stm32_usart_of_dma_rx_probe()
1219 static int stm32_usart_of_dma_tx_probe(struct stm32_port *stm32port, in stm32_usart_of_dma_tx_probe() argument
1222 const struct stm32_usart_offsets *ofs = &stm32port->info->ofs; in stm32_usart_of_dma_tx_probe()
1223 struct uart_port *port = &stm32port->port; in stm32_usart_of_dma_tx_probe()
1228 stm32port->tx_dma_busy = false; in stm32_usart_of_dma_tx_probe()
1231 stm32port->tx_ch = dma_request_slave_channel(dev, "tx"); in stm32_usart_of_dma_tx_probe()
1232 if (!stm32port->tx_ch) { in stm32_usart_of_dma_tx_probe()
1236 stm32port->tx_buf = dma_alloc_coherent(&pdev->dev, TX_BUF_L, in stm32_usart_of_dma_tx_probe()
1237 &stm32port->tx_dma_buf, in stm32_usart_of_dma_tx_probe()
1239 if (!stm32port->tx_buf) { in stm32_usart_of_dma_tx_probe()
1249 ret = dmaengine_slave_config(stm32port->tx_ch, &config); in stm32_usart_of_dma_tx_probe()
1260 TX_BUF_L, stm32port->tx_buf, in stm32_usart_of_dma_tx_probe()
1261 stm32port->tx_dma_buf); in stm32_usart_of_dma_tx_probe()
1264 dma_release_channel(stm32port->tx_ch); in stm32_usart_of_dma_tx_probe()
1265 stm32port->tx_ch = NULL; in stm32_usart_of_dma_tx_probe()
1272 struct stm32_port *stm32port; in stm32_usart_serial_probe() local
1275 stm32port = stm32_usart_of_get_port(pdev); in stm32_usart_serial_probe()
1276 if (!stm32port) in stm32_usart_serial_probe()
1279 stm32port->info = of_device_get_match_data(&pdev->dev); in stm32_usart_serial_probe()
1280 if (!stm32port->info) in stm32_usart_serial_probe()
1283 ret = stm32_usart_init_port(stm32port, pdev); in stm32_usart_serial_probe()
1287 if (stm32port->wakeirq > 0) { in stm32_usart_serial_probe()
1293 stm32port->wakeirq); in stm32_usart_serial_probe()
1300 ret = stm32_usart_of_dma_rx_probe(stm32port, pdev); in stm32_usart_serial_probe()
1304 ret = stm32_usart_of_dma_tx_probe(stm32port, pdev); in stm32_usart_serial_probe()
1308 platform_set_drvdata(pdev, &stm32port->port); in stm32_usart_serial_probe()
1314 ret = uart_add_one_port(&stm32_usart_driver, &stm32port->port); in stm32_usart_serial_probe()
1327 if (stm32port->rx_ch) { in stm32_usart_serial_probe()
1328 dmaengine_terminate_async(stm32port->rx_ch); in stm32_usart_serial_probe()
1329 dma_release_channel(stm32port->rx_ch); in stm32_usart_serial_probe()
1332 if (stm32port->rx_dma_buf) in stm32_usart_serial_probe()
1334 RX_BUF_L, stm32port->rx_buf, in stm32_usart_serial_probe()
1335 stm32port->rx_dma_buf); in stm32_usart_serial_probe()
1337 if (stm32port->tx_ch) { in stm32_usart_serial_probe()
1338 dmaengine_terminate_async(stm32port->tx_ch); in stm32_usart_serial_probe()
1339 dma_release_channel(stm32port->tx_ch); in stm32_usart_serial_probe()
1342 if (stm32port->tx_dma_buf) in stm32_usart_serial_probe()
1344 TX_BUF_L, stm32port->tx_buf, in stm32_usart_serial_probe()
1345 stm32port->tx_dma_buf); in stm32_usart_serial_probe()
1347 if (stm32port->wakeirq > 0) in stm32_usart_serial_probe()
1351 if (stm32port->wakeirq > 0) in stm32_usart_serial_probe()
1355 clk_disable_unprepare(stm32port->clk); in stm32_usart_serial_probe()
1459 struct stm32_port *stm32port; in stm32_usart_console_setup() local
1468 stm32port = &stm32_ports[co->index]; in stm32_usart_console_setup()
1476 if (stm32port->port.mapbase == 0 || !stm32port->port.membase) in stm32_usart_console_setup()
1482 return uart_set_options(&stm32port->port, co, baud, parity, bits, flow); in stm32_usart_console_setup()
1574 struct stm32_port *stm32port = container_of(port, in stm32_usart_runtime_suspend() local
1577 clk_disable_unprepare(stm32port->clk); in stm32_usart_runtime_suspend()
1585 struct stm32_port *stm32port = container_of(port, in stm32_usart_runtime_resume() local
1588 return clk_prepare_enable(stm32port->clk); in stm32_usart_runtime_resume()