162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/dma/st,stm32-dma.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: STMicroelectronics STM32 DMA Controller 862306a36Sopenharmony_ci 962306a36Sopenharmony_cidescription: | 1062306a36Sopenharmony_ci The STM32 DMA is a general-purpose direct memory access controller capable of 1162306a36Sopenharmony_ci supporting 8 independent DMA channels. Each channel can have up to 8 requests. 1262306a36Sopenharmony_ci DMA clients connected to the STM32 DMA controller must use the format 1362306a36Sopenharmony_ci described in the dma.txt file, using a four-cell specifier for each 1462306a36Sopenharmony_ci channel: a phandle to the DMA controller plus the following four integer cells: 1562306a36Sopenharmony_ci 1. The channel id 1662306a36Sopenharmony_ci 2. The request line number 1762306a36Sopenharmony_ci 3. A 32bit mask specifying the DMA channel configuration which are device 1862306a36Sopenharmony_ci dependent: 1962306a36Sopenharmony_ci -bit 9: Peripheral Increment Address 2062306a36Sopenharmony_ci 0x0: no address increment between transfers 2162306a36Sopenharmony_ci 0x1: increment address between transfers 2262306a36Sopenharmony_ci -bit 10: Memory Increment Address 2362306a36Sopenharmony_ci 0x0: no address increment between transfers 2462306a36Sopenharmony_ci 0x1: increment address between transfers 2562306a36Sopenharmony_ci -bit 15: Peripheral Increment Offset Size 2662306a36Sopenharmony_ci 0x0: offset size is linked to the peripheral bus width 2762306a36Sopenharmony_ci 0x1: offset size is fixed to 4 (32-bit alignment) 2862306a36Sopenharmony_ci -bit 16-17: Priority level 2962306a36Sopenharmony_ci 0x0: low 3062306a36Sopenharmony_ci 0x1: medium 3162306a36Sopenharmony_ci 0x2: high 3262306a36Sopenharmony_ci 0x3: very high 3362306a36Sopenharmony_ci 4. A 32bit bitfield value specifying DMA features which are device dependent: 3462306a36Sopenharmony_ci -bit 0-1: DMA FIFO threshold selection 3562306a36Sopenharmony_ci 0x0: 1/4 full FIFO 3662306a36Sopenharmony_ci 0x1: 1/2 full FIFO 3762306a36Sopenharmony_ci 0x2: 3/4 full FIFO 3862306a36Sopenharmony_ci 0x3: full FIFO 3962306a36Sopenharmony_ci -bit 2: DMA direct mode 4062306a36Sopenharmony_ci 0x0: FIFO mode with threshold selectable with bit 0-1 4162306a36Sopenharmony_ci 0x1: Direct mode: each DMA request immediately initiates a transfer 4262306a36Sopenharmony_ci from/to the memory, FIFO is bypassed. 4362306a36Sopenharmony_ci -bit 4: alternative DMA request/acknowledge protocol 4462306a36Sopenharmony_ci 0x0: Use standard DMA ACK management, where ACK signal is maintained 4562306a36Sopenharmony_ci up to the removal of request and transfer completion 4662306a36Sopenharmony_ci 0x1: Use alternative DMA ACK management, where ACK de-assertion does 4762306a36Sopenharmony_ci not wait for the de-assertion of the REQuest, ACK is only managed 4862306a36Sopenharmony_ci by transfer completion. This must only be used on channels 4962306a36Sopenharmony_ci managing transfers for STM32 USART/UART. 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_cimaintainers: 5362306a36Sopenharmony_ci - Amelie Delaunay <amelie.delaunay@foss.st.com> 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ciallOf: 5662306a36Sopenharmony_ci - $ref: dma-controller.yaml# 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ciproperties: 5962306a36Sopenharmony_ci "#dma-cells": 6062306a36Sopenharmony_ci const: 4 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci compatible: 6362306a36Sopenharmony_ci const: st,stm32-dma 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci reg: 6662306a36Sopenharmony_ci maxItems: 1 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci clocks: 6962306a36Sopenharmony_ci maxItems: 1 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci interrupts: 7262306a36Sopenharmony_ci maxItems: 8 7362306a36Sopenharmony_ci description: Should contain all of the per-channel DMA 7462306a36Sopenharmony_ci interrupts in ascending order with respect to the 7562306a36Sopenharmony_ci DMA channel index. 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci resets: 7862306a36Sopenharmony_ci maxItems: 1 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci st,mem2mem: 8162306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/flag 8262306a36Sopenharmony_ci description: if defined, it indicates that the controller 8362306a36Sopenharmony_ci supports memory-to-memory transfer 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_cirequired: 8662306a36Sopenharmony_ci - compatible 8762306a36Sopenharmony_ci - reg 8862306a36Sopenharmony_ci - clocks 8962306a36Sopenharmony_ci - interrupts 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ciunevaluatedProperties: false 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ciexamples: 9462306a36Sopenharmony_ci - | 9562306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/arm-gic.h> 9662306a36Sopenharmony_ci #include <dt-bindings/clock/stm32mp1-clks.h> 9762306a36Sopenharmony_ci #include <dt-bindings/reset/stm32mp1-resets.h> 9862306a36Sopenharmony_ci dma-controller@40026400 { 9962306a36Sopenharmony_ci compatible = "st,stm32-dma"; 10062306a36Sopenharmony_ci reg = <0x40026400 0x400>; 10162306a36Sopenharmony_ci interrupts = <56>, 10262306a36Sopenharmony_ci <57>, 10362306a36Sopenharmony_ci <58>, 10462306a36Sopenharmony_ci <59>, 10562306a36Sopenharmony_ci <60>, 10662306a36Sopenharmony_ci <68>, 10762306a36Sopenharmony_ci <69>, 10862306a36Sopenharmony_ci <70>; 10962306a36Sopenharmony_ci clocks = <&clk_hclk>; 11062306a36Sopenharmony_ci #dma-cells = <4>; 11162306a36Sopenharmony_ci st,mem2mem; 11262306a36Sopenharmony_ci resets = <&rcc 150>; 11362306a36Sopenharmony_ci dma-requests = <8>; 11462306a36Sopenharmony_ci }; 11562306a36Sopenharmony_ci 11662306a36Sopenharmony_ci... 117