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-mdma.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: STMicroelectronics STM32 MDMA Controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cidescription: |
1062306a36Sopenharmony_ci  The STM32 MDMA is a general-purpose direct memory access controller capable of
1162306a36Sopenharmony_ci  supporting 64 independent DMA channels with 256 HW requests.
1262306a36Sopenharmony_ci  DMA clients connected to the STM32 MDMA controller must use the format
1362306a36Sopenharmony_ci  described in the dma.txt file, using a five-cell specifier for each channel:
1462306a36Sopenharmony_ci  a phandle to the MDMA controller plus the following five integer cells:
1562306a36Sopenharmony_ci    1. The request line number
1662306a36Sopenharmony_ci    2. The priority level
1762306a36Sopenharmony_ci      0x0: Low
1862306a36Sopenharmony_ci      0x1: Medium
1962306a36Sopenharmony_ci      0x2: High
2062306a36Sopenharmony_ci      0x3: Very high
2162306a36Sopenharmony_ci    3. A 32bit mask specifying the DMA channel configuration
2262306a36Sopenharmony_ci      -bit 0-1: Source increment mode
2362306a36Sopenharmony_ci        0x0: Source address pointer is fixed
2462306a36Sopenharmony_ci        0x2: Source address pointer is incremented after each data transfer
2562306a36Sopenharmony_ci        0x3: Source address pointer is decremented after each data transfer
2662306a36Sopenharmony_ci      -bit 2-3: Destination increment mode
2762306a36Sopenharmony_ci        0x0: Destination address pointer is fixed
2862306a36Sopenharmony_ci        0x2: Destination address pointer is incremented after each data transfer
2962306a36Sopenharmony_ci        0x3: Destination address pointer is decremented after each data transfer
3062306a36Sopenharmony_ci      -bit 8-9: Source increment offset size
3162306a36Sopenharmony_ci        0x0: byte (8bit)
3262306a36Sopenharmony_ci        0x1: half-word (16bit)
3362306a36Sopenharmony_ci        0x2: word (32bit)
3462306a36Sopenharmony_ci        0x3: double-word (64bit)
3562306a36Sopenharmony_ci      -bit 10-11: Destination increment offset size
3662306a36Sopenharmony_ci        0x0: byte (8bit)
3762306a36Sopenharmony_ci        0x1: half-word (16bit)
3862306a36Sopenharmony_ci        0x2: word (32bit)
3962306a36Sopenharmony_ci        0x3: double-word (64bit)
4062306a36Sopenharmony_ci      -bit 25-18: The number of bytes to be transferred in a single transfer
4162306a36Sopenharmony_ci                  (min = 1 byte, max = 128 bytes)
4262306a36Sopenharmony_ci      -bit 29:28: Trigger Mode
4362306a36Sopenharmony_ci        0x00: Each MDMA request triggers a buffer transfer (max 128 bytes)
4462306a36Sopenharmony_ci        0x1: Each MDMA request triggers a block transfer (max 64K bytes)
4562306a36Sopenharmony_ci        0x2: Each MDMA request triggers a repeated block transfer
4662306a36Sopenharmony_ci        0x3: Each MDMA request triggers a linked list transfer
4762306a36Sopenharmony_ci    4. A 32bit value specifying the register to be used to acknowledge the request
4862306a36Sopenharmony_ci       if no HW ack signal is used by the MDMA client
4962306a36Sopenharmony_ci    5. A 32bit mask specifying the value to be written to acknowledge the request
5062306a36Sopenharmony_ci       if no HW ack signal is used by the MDMA client
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: 5
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci  compatible:
6362306a36Sopenharmony_ci    const: st,stm32h7-mdma
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: 1
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci  resets:
7562306a36Sopenharmony_ci    maxItems: 1
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci  st,ahb-addr-masks:
7862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
7962306a36Sopenharmony_ci    description: Array of u32 mask to list memory devices addressed via AHB bus.
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_cirequired:
8262306a36Sopenharmony_ci  - compatible
8362306a36Sopenharmony_ci  - reg
8462306a36Sopenharmony_ci  - clocks
8562306a36Sopenharmony_ci  - interrupts
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ciunevaluatedProperties: false
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ciexamples:
9062306a36Sopenharmony_ci  - |
9162306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
9262306a36Sopenharmony_ci    #include <dt-bindings/clock/stm32mp1-clks.h>
9362306a36Sopenharmony_ci    #include <dt-bindings/reset/stm32mp1-resets.h>
9462306a36Sopenharmony_ci    dma-controller@52000000 {
9562306a36Sopenharmony_ci      compatible = "st,stm32h7-mdma";
9662306a36Sopenharmony_ci      reg = <0x52000000 0x1000>;
9762306a36Sopenharmony_ci      interrupts = <122>;
9862306a36Sopenharmony_ci      clocks = <&timer_clk>;
9962306a36Sopenharmony_ci      resets = <&rcc 992>;
10062306a36Sopenharmony_ci      #dma-cells = <5>;
10162306a36Sopenharmony_ci      dma-channels = <16>;
10262306a36Sopenharmony_ci      dma-requests = <32>;
10362306a36Sopenharmony_ci      st,ahb-addr-masks = <0x20000000>, <0x00000000>;
10462306a36Sopenharmony_ci    };
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci...
107