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/arm-pl08x.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: ARM PrimeCells PL080 and PL081 and derivatives DMA controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Vinod Koul <vkoul@kernel.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciallOf:
1362306a36Sopenharmony_ci  - $ref: /schemas/arm/primecell.yaml#
1462306a36Sopenharmony_ci  - $ref: dma-controller.yaml#
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci# We need a select here so we don't match all nodes with 'arm,primecell'
1762306a36Sopenharmony_ciselect:
1862306a36Sopenharmony_ci  properties:
1962306a36Sopenharmony_ci    compatible:
2062306a36Sopenharmony_ci      contains:
2162306a36Sopenharmony_ci        enum:
2262306a36Sopenharmony_ci          - arm,pl080
2362306a36Sopenharmony_ci          - arm,pl081
2462306a36Sopenharmony_ci  required:
2562306a36Sopenharmony_ci    - compatible
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ciproperties:
2862306a36Sopenharmony_ci  compatible:
2962306a36Sopenharmony_ci    oneOf:
3062306a36Sopenharmony_ci      - items:
3162306a36Sopenharmony_ci          - enum:
3262306a36Sopenharmony_ci              - arm,pl080
3362306a36Sopenharmony_ci              - arm,pl081
3462306a36Sopenharmony_ci          - const: arm,primecell
3562306a36Sopenharmony_ci      - items:
3662306a36Sopenharmony_ci          - const: faraday,ftdma020
3762306a36Sopenharmony_ci          - const: arm,pl080
3862306a36Sopenharmony_ci          - const: arm,primecell
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci  reg:
4162306a36Sopenharmony_ci    maxItems: 1
4262306a36Sopenharmony_ci    description: Address range of the PL08x registers
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci  interrupts:
4562306a36Sopenharmony_ci    minItems: 1
4662306a36Sopenharmony_ci    description: The PL08x interrupt number
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  clocks:
4962306a36Sopenharmony_ci    minItems: 1
5062306a36Sopenharmony_ci    description: The clock running the IP core clock
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci  clock-names:
5362306a36Sopenharmony_ci    maxItems: 1
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  lli-bus-interface-ahb1:
5662306a36Sopenharmony_ci    type: boolean
5762306a36Sopenharmony_ci    description: if AHB master 1 is eligible for fetching LLIs
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci  lli-bus-interface-ahb2:
6062306a36Sopenharmony_ci    type: boolean
6162306a36Sopenharmony_ci    description: if AHB master 2 is eligible for fetching LLIs
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci  mem-bus-interface-ahb1:
6462306a36Sopenharmony_ci    type: boolean
6562306a36Sopenharmony_ci    description: if AHB master 1 is eligible for fetching memory contents
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci  mem-bus-interface-ahb2:
6862306a36Sopenharmony_ci    type: boolean
6962306a36Sopenharmony_ci    description: if AHB master 2 is eligible for fetching memory contents
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci  memcpy-burst-size:
7262306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
7362306a36Sopenharmony_ci    enum:
7462306a36Sopenharmony_ci      - 1
7562306a36Sopenharmony_ci      - 4
7662306a36Sopenharmony_ci      - 8
7762306a36Sopenharmony_ci      - 16
7862306a36Sopenharmony_ci      - 32
7962306a36Sopenharmony_ci      - 64
8062306a36Sopenharmony_ci      - 128
8162306a36Sopenharmony_ci      - 256
8262306a36Sopenharmony_ci    description: the size of the bursts for memcpy
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci  memcpy-bus-width:
8562306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
8662306a36Sopenharmony_ci    enum:
8762306a36Sopenharmony_ci      - 8
8862306a36Sopenharmony_ci      - 16
8962306a36Sopenharmony_ci      - 32
9062306a36Sopenharmony_ci      - 64
9162306a36Sopenharmony_ci    description: bus width used for memcpy in bits. FTDMAC020 also accept 64 bits
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci  resets:
9462306a36Sopenharmony_ci    maxItems: 1
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_cirequired:
9762306a36Sopenharmony_ci  - reg
9862306a36Sopenharmony_ci  - interrupts
9962306a36Sopenharmony_ci  - clocks
10062306a36Sopenharmony_ci  - clock-names
10162306a36Sopenharmony_ci  - "#dma-cells"
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ciunevaluatedProperties: false
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ciexamples:
10662306a36Sopenharmony_ci  - |
10762306a36Sopenharmony_ci    dmac0: dma-controller@10130000 {
10862306a36Sopenharmony_ci      compatible = "arm,pl080", "arm,primecell";
10962306a36Sopenharmony_ci      reg = <0x10130000 0x1000>;
11062306a36Sopenharmony_ci      interrupt-parent = <&vica>;
11162306a36Sopenharmony_ci      interrupts = <15>;
11262306a36Sopenharmony_ci      clocks = <&hclkdma0>;
11362306a36Sopenharmony_ci      clock-names = "apb_pclk";
11462306a36Sopenharmony_ci      lli-bus-interface-ahb1;
11562306a36Sopenharmony_ci      lli-bus-interface-ahb2;
11662306a36Sopenharmony_ci      mem-bus-interface-ahb2;
11762306a36Sopenharmony_ci      memcpy-burst-size = <256>;
11862306a36Sopenharmony_ci      memcpy-bus-width = <32>;
11962306a36Sopenharmony_ci      #dma-cells = <2>;
12062306a36Sopenharmony_ci    };
12162306a36Sopenharmony_ci  - |
12262306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
12362306a36Sopenharmony_ci    #include <dt-bindings/reset/cortina,gemini-reset.h>
12462306a36Sopenharmony_ci    #include <dt-bindings/clock/cortina,gemini-clock.h>
12562306a36Sopenharmony_ci    dma-controller@67000000 {
12662306a36Sopenharmony_ci      compatible = "faraday,ftdma020", "arm,pl080", "arm,primecell";
12762306a36Sopenharmony_ci      /* Faraday Technology FTDMAC020 variant */
12862306a36Sopenharmony_ci      arm,primecell-periphid = <0x0003b080>;
12962306a36Sopenharmony_ci      reg = <0x67000000 0x1000>;
13062306a36Sopenharmony_ci      interrupts = <9 IRQ_TYPE_EDGE_RISING>;
13162306a36Sopenharmony_ci      resets = <&syscon GEMINI_RESET_DMAC>;
13262306a36Sopenharmony_ci      clocks = <&syscon GEMINI_CLK_AHB>;
13362306a36Sopenharmony_ci      clock-names = "apb_pclk";
13462306a36Sopenharmony_ci      /* Bus interface AHB1 (AHB0) is totally tilted */
13562306a36Sopenharmony_ci      lli-bus-interface-ahb2;
13662306a36Sopenharmony_ci      mem-bus-interface-ahb2;
13762306a36Sopenharmony_ci      memcpy-burst-size = <256>;
13862306a36Sopenharmony_ci      memcpy-bus-width = <32>;
13962306a36Sopenharmony_ci      #dma-cells = <2>;
14062306a36Sopenharmony_ci    };
141