Default REQ/ACK 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, add support to select alternative REQ/ACK protocol.
Amelie Delaunay (2):
dt-bindings: dma: add alternative REQ/ACK protocol selection in
stm32-dma
dmaengine: stm32-dma: add alternate REQ/ACK protocol management
Documentation/devicetree/bindings/dma/st,stm32-dma.yaml | 7 +++++++
drivers/dma/stm32-dma.c | 8 ++++++--
2 files changed, 13 insertions(+), 2 deletions(-)
--
2.25.1
STM32 USART/UART is not managing correctly the default DMA REQ/ACK protocol
leading to possibly lock the DMA stream.
Default 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.
This patch retrieves the need of the alternative protocol through the
device tree, and sets the protocol accordingly.
It also unwrap STM32_DMA_DIRECT_MODE_GET macro definition for consistency
with new STM32_DMA_ALT_ACK_MODE_GET macro definition.
Signed-off-by: Amelie Delaunay <amelie.delaunay@foss.st.com>
---
drivers/dma/stm32-dma.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
Default REQ/ACK 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, this new bindings allow to select this alternative protocol in
device tree, especially for STM32 USART/UART nodes.
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Amelie Delaunay <amelie.delaunay@foss.st.com>
---
Documentation/devicetree/bindings/dma/st,stm32-dma.yaml | 7 +++++++
1 file changed, 7 insertions(+)
@@ -40,6 +40,13 @@ description: |0x0:FIFO mode with threshold selectable with bit 0-10x1: Direct mode:each DMA request immediately initiates a transferfrom/to the memory, FIFO is bypassed.+-bit 4:alternative DMA request/acknowledge protocol+0x0:Use standard DMA ACK management, where ACK signal is maintained+up to the removal of request and transfer completion+0x1:Use alternative DMA ACK management, where ACK de-assertion does+not wait for the de-assertion of the REQuest, ACK is only managed+by transfer completion. This must only be used on channels+managing transfers for STM32 USART/UART.maintainers: