Skip to content

Commit 689f055

Browse files
ADESTMvinodkoul
authored andcommitted
dt-bindings: dma: stm32-dma3: prevent packing/unpacking mode
When source data width/burst and destination data width/burst are different, data are packed or unpacked in DMA3 channel FIFO. Data are pushed out from DMA3 channel FIFO when the destination burst length (= data width * burst) is reached. If the channel is stopped before the transfer end, and if some bytes are packed/unpacked in the DMA3 channel FIFO, these bytes are lost. Indeed, DMA3 channel FIFO has no flush capability, only reset. To avoid potential bytes lost, pack/unpack must be prevented by setting memory data width/burst equal to peripheral data width/burst. Memory accesses will be penalized. But it is the only way to avoid bytes lost. Some devices (e.g. cyclic RX like UART) need this, so add the possibility to prevent pack/unpack feature, by setting bit 16 of the 'DMA transfer requirements' bit mask. Acked-by: Rob Herring (Arm) <robh@kernel.org> Signed-off-by: Amelie Delaunay <amelie.delaunay@foss.st.com> Link: https://lore.kernel.org/r/20241016-dma3-mp25-updates-v3-1-8311fe6f228d@foss.st.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
1 parent 3e482e2 commit 689f055

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

Documentation/devicetree/bindings/dma/stm32/st,stm32-dma3.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ properties:
9696
including the update of the LLI if any
9797
0x3: at channel level, the transfer complete event is generated at the
9898
end of the last LLI
99+
-bit 16: Prevent packing/unpacking mode
100+
0x0: pack/unpack enabled when source data width/burst != destination data width/burst
101+
0x1: memory data width/burst forced to peripheral data width/burst to prevent pack/unpack
99102
100103
required:
101104
- compatible

0 commit comments

Comments
 (0)