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/snps,dw-axi-dmac.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Synopsys DesignWare AXI DMA Controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription:
1362306a36Sopenharmony_ci  Synopsys DesignWare AXI DMA Controller DT Binding
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciallOf:
1662306a36Sopenharmony_ci  - $ref: dma-controller.yaml#
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciproperties:
1962306a36Sopenharmony_ci  compatible:
2062306a36Sopenharmony_ci    enum:
2162306a36Sopenharmony_ci      - snps,axi-dma-1.01a
2262306a36Sopenharmony_ci      - intel,kmb-axi-dma
2362306a36Sopenharmony_ci      - starfive,jh7110-axi-dma
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci  reg:
2662306a36Sopenharmony_ci    minItems: 1
2762306a36Sopenharmony_ci    items:
2862306a36Sopenharmony_ci      - description: Address range of the DMAC registers
2962306a36Sopenharmony_ci      - description: Address range of the DMAC APB registers
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci  reg-names:
3262306a36Sopenharmony_ci    items:
3362306a36Sopenharmony_ci      - const: axidma_ctrl_regs
3462306a36Sopenharmony_ci      - const: axidma_apb_regs
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci  interrupts:
3762306a36Sopenharmony_ci    description:
3862306a36Sopenharmony_ci      If the IP-core synthesis parameter DMAX_INTR_IO_TYPE is set to 1, this
3962306a36Sopenharmony_ci      will be per-channel interrupts. Otherwise, this is a single combined IRQ
4062306a36Sopenharmony_ci      for all channels.
4162306a36Sopenharmony_ci    minItems: 1
4262306a36Sopenharmony_ci    maxItems: 8
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci  clocks:
4562306a36Sopenharmony_ci    items:
4662306a36Sopenharmony_ci      - description: Bus Clock
4762306a36Sopenharmony_ci      - description: Module Clock
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci  clock-names:
5062306a36Sopenharmony_ci    items:
5162306a36Sopenharmony_ci      - const: core-clk
5262306a36Sopenharmony_ci      - const: cfgr-clk
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci  '#dma-cells':
5562306a36Sopenharmony_ci    const: 1
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci  dma-channels:
5862306a36Sopenharmony_ci    minimum: 1
5962306a36Sopenharmony_ci    maximum: 8
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci  resets:
6262306a36Sopenharmony_ci    minItems: 1
6362306a36Sopenharmony_ci    maxItems: 2
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci  snps,dma-masters:
6662306a36Sopenharmony_ci    description: |
6762306a36Sopenharmony_ci      Number of AXI masters supported by the hardware.
6862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
6962306a36Sopenharmony_ci    enum: [1, 2]
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci  snps,data-width:
7262306a36Sopenharmony_ci    description: |
7362306a36Sopenharmony_ci      AXI data width supported by hardware.
7462306a36Sopenharmony_ci      (0 - 8bits, 1 - 16bits, 2 - 32bits, ..., 6 - 512bits)
7562306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
7662306a36Sopenharmony_ci    enum: [0, 1, 2, 3, 4, 5, 6]
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci  snps,priority:
7962306a36Sopenharmony_ci    description: |
8062306a36Sopenharmony_ci      Channel priority specifier associated with the DMA channels.
8162306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
8262306a36Sopenharmony_ci    minItems: 1
8362306a36Sopenharmony_ci    maxItems: 8
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci  snps,block-size:
8662306a36Sopenharmony_ci    description: |
8762306a36Sopenharmony_ci      Channel block size specifier associated with the DMA channels.
8862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
8962306a36Sopenharmony_ci    minItems: 1
9062306a36Sopenharmony_ci    maxItems: 8
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci  snps,axi-max-burst-len:
9362306a36Sopenharmony_ci    description: |
9462306a36Sopenharmony_ci      Restrict master AXI burst length by value specified in this property.
9562306a36Sopenharmony_ci      If this property is missing the maximum AXI burst length supported by
9662306a36Sopenharmony_ci      DMAC is used.
9762306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
9862306a36Sopenharmony_ci    minimum: 1
9962306a36Sopenharmony_ci    maximum: 256
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_cirequired:
10262306a36Sopenharmony_ci  - compatible
10362306a36Sopenharmony_ci  - reg
10462306a36Sopenharmony_ci  - clocks
10562306a36Sopenharmony_ci  - clock-names
10662306a36Sopenharmony_ci  - interrupts
10762306a36Sopenharmony_ci  - '#dma-cells'
10862306a36Sopenharmony_ci  - dma-channels
10962306a36Sopenharmony_ci  - snps,dma-masters
11062306a36Sopenharmony_ci  - snps,data-width
11162306a36Sopenharmony_ci  - snps,priority
11262306a36Sopenharmony_ci  - snps,block-size
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ciif:
11562306a36Sopenharmony_ci  properties:
11662306a36Sopenharmony_ci    compatible:
11762306a36Sopenharmony_ci      contains:
11862306a36Sopenharmony_ci        enum:
11962306a36Sopenharmony_ci          - starfive,jh7110-axi-dma
12062306a36Sopenharmony_cithen:
12162306a36Sopenharmony_ci  properties:
12262306a36Sopenharmony_ci    resets:
12362306a36Sopenharmony_ci      minItems: 2
12462306a36Sopenharmony_ci      items:
12562306a36Sopenharmony_ci        - description: AXI reset line
12662306a36Sopenharmony_ci        - description: AHB reset line
12762306a36Sopenharmony_ci        - description: module reset
12862306a36Sopenharmony_cielse:
12962306a36Sopenharmony_ci  properties:
13062306a36Sopenharmony_ci    resets:
13162306a36Sopenharmony_ci      maxItems: 1
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ciadditionalProperties: false
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ciexamples:
13662306a36Sopenharmony_ci  - |
13762306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
13862306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
13962306a36Sopenharmony_ci    /* example with snps,dw-axi-dmac */
14062306a36Sopenharmony_ci    dma-controller@80000 {
14162306a36Sopenharmony_ci        compatible = "snps,axi-dma-1.01a";
14262306a36Sopenharmony_ci        reg = <0x80000 0x400>;
14362306a36Sopenharmony_ci        clocks = <&core_clk>, <&cfgr_clk>;
14462306a36Sopenharmony_ci        clock-names = "core-clk", "cfgr-clk";
14562306a36Sopenharmony_ci        interrupt-parent = <&intc>;
14662306a36Sopenharmony_ci        interrupts = <27>;
14762306a36Sopenharmony_ci        #dma-cells = <1>;
14862306a36Sopenharmony_ci        dma-channels = <4>;
14962306a36Sopenharmony_ci        snps,dma-masters = <2>;
15062306a36Sopenharmony_ci        snps,data-width = <3>;
15162306a36Sopenharmony_ci        snps,block-size = <4096 4096 4096 4096>;
15262306a36Sopenharmony_ci        snps,priority = <0 1 2 3>;
15362306a36Sopenharmony_ci        snps,axi-max-burst-len = <16>;
15462306a36Sopenharmony_ci    };
155