ARM: dts: stm32: add DMA configuration to UART nodes on stm32mp151
authorErwan Le Ray <erwan.leray@foss.st.com>
Thu, 3 Feb 2022 17:10:59 +0000 (18:10 +0100)
committerAlexandre Torgue <alexandre.torgue@foss.st.com>
Fri, 25 Feb 2022 09:53:15 +0000 (10:53 +0100)
Add DMA configuration in stm32mp15x uart nodes by selecting dma direct
mode and alternate REQ/ACK dma protocol for uart.

DMA direct mode allows to bypass DMA FIFO. Each DMA request immediately
initiates a transfer from/to the memory. This allows USART to get data
transferred, even when the transfer ends before the DMA FIFO completion.

Default REQ/ACK DMA protocol consists in maintaining ACK signal up to the
removal of REQuest and the transfer completion.
In case of alternative REQ/ACK protocol, ACK de-assertion does not wait the
removal of the REQuest, but only the transfer completion.
Due to a possible DMA stream lock when transferring data to/from STM32
USART/UART, select this alternative protocol in STM32 USART/UART nodes.

Signed-off-by: Valentin Caron <valentin.caron@foss.st.com>
Signed-off-by: Erwan Le Ray <erwan.leray@foss.st.com>
Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
arch/arm/boot/dts/stm32mp151.dtsi

index f266973..2171e7a 100644 (file)
                        interrupts-extended = <&exti 27 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&rcc USART2_K>;
                        wakeup-source;
+                       dmas = <&dmamux1 43 0x400 0x15>,
+                              <&dmamux1 44 0x400 0x11>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        interrupts-extended = <&exti 28 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&rcc USART3_K>;
                        wakeup-source;
+                       dmas = <&dmamux1 45 0x400 0x15>,
+                              <&dmamux1 46 0x400 0x11>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        interrupts-extended = <&exti 30 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&rcc UART4_K>;
                        wakeup-source;
+                       dmas = <&dmamux1 63 0x400 0x15>,
+                              <&dmamux1 64 0x400 0x11>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        interrupts-extended = <&exti 31 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&rcc UART5_K>;
                        wakeup-source;
+                       dmas = <&dmamux1 65 0x400 0x15>,
+                              <&dmamux1 66 0x400 0x11>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        interrupts-extended = <&exti 32 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&rcc UART7_K>;
                        wakeup-source;
+                       dmas = <&dmamux1 79 0x400 0x15>,
+                              <&dmamux1 80 0x400 0x11>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        interrupts-extended = <&exti 33 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&rcc UART8_K>;
                        wakeup-source;
+                       dmas = <&dmamux1 81 0x400 0x15>,
+                              <&dmamux1 82 0x400 0x11>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        interrupts-extended = <&exti 29 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&rcc USART6_K>;
                        wakeup-source;
+                       dmas = <&dmamux1 71 0x400 0x15>,
+                              <&dmamux1 72 0x400 0x11>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };