16f64aa57SCorentin Labbe# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
26f64aa57SCorentin Labbe%YAML 1.2
36f64aa57SCorentin Labbe---
46f64aa57SCorentin Labbe$id: http://devicetree.org/schemas/dma/arm-pl08x.yaml#
56f64aa57SCorentin Labbe$schema: http://devicetree.org/meta-schemas/core.yaml#
66f64aa57SCorentin Labbe
76f64aa57SCorentin Labbetitle: ARM PrimeCells PL080 and PL081 and derivatives DMA controller
86f64aa57SCorentin Labbe
96f64aa57SCorentin Labbemaintainers:
106f64aa57SCorentin Labbe  - Vinod Koul <vkoul@kernel.org>
116f64aa57SCorentin Labbe
126f64aa57SCorentin LabbeallOf:
13a173a242SRob Herring  - $ref: /schemas/arm/primecell.yaml#
14*10cafa2dSKrzysztof Kozlowski  - $ref: dma-controller.yaml#
156f64aa57SCorentin Labbe
166f64aa57SCorentin Labbe# We need a select here so we don't match all nodes with 'arm,primecell'
176f64aa57SCorentin Labbeselect:
186f64aa57SCorentin Labbe  properties:
196f64aa57SCorentin Labbe    compatible:
206f64aa57SCorentin Labbe      contains:
216f64aa57SCorentin Labbe        enum:
226f64aa57SCorentin Labbe          - arm,pl080
236f64aa57SCorentin Labbe          - arm,pl081
246f64aa57SCorentin Labbe  required:
256f64aa57SCorentin Labbe    - compatible
266f64aa57SCorentin Labbe
276f64aa57SCorentin Labbeproperties:
286f64aa57SCorentin Labbe  compatible:
296f64aa57SCorentin Labbe    oneOf:
306f64aa57SCorentin Labbe      - items:
316f64aa57SCorentin Labbe          - enum:
326f64aa57SCorentin Labbe              - arm,pl080
336f64aa57SCorentin Labbe              - arm,pl081
346f64aa57SCorentin Labbe          - const: arm,primecell
356f64aa57SCorentin Labbe      - items:
366f64aa57SCorentin Labbe          - const: faraday,ftdma020
376f64aa57SCorentin Labbe          - const: arm,pl080
386f64aa57SCorentin Labbe          - const: arm,primecell
396f64aa57SCorentin Labbe
406f64aa57SCorentin Labbe  reg:
416f64aa57SCorentin Labbe    maxItems: 1
426f64aa57SCorentin Labbe    description: Address range of the PL08x registers
436f64aa57SCorentin Labbe
446f64aa57SCorentin Labbe  interrupts:
456f64aa57SCorentin Labbe    minItems: 1
466f64aa57SCorentin Labbe    description: The PL08x interrupt number
476f64aa57SCorentin Labbe
486f64aa57SCorentin Labbe  clocks:
496f64aa57SCorentin Labbe    minItems: 1
506f64aa57SCorentin Labbe    description: The clock running the IP core clock
516f64aa57SCorentin Labbe
526f64aa57SCorentin Labbe  clock-names:
536f64aa57SCorentin Labbe    maxItems: 1
546f64aa57SCorentin Labbe
556f64aa57SCorentin Labbe  lli-bus-interface-ahb1:
566f64aa57SCorentin Labbe    type: boolean
576f64aa57SCorentin Labbe    description: if AHB master 1 is eligible for fetching LLIs
586f64aa57SCorentin Labbe
596f64aa57SCorentin Labbe  lli-bus-interface-ahb2:
606f64aa57SCorentin Labbe    type: boolean
616f64aa57SCorentin Labbe    description: if AHB master 2 is eligible for fetching LLIs
626f64aa57SCorentin Labbe
636f64aa57SCorentin Labbe  mem-bus-interface-ahb1:
646f64aa57SCorentin Labbe    type: boolean
656f64aa57SCorentin Labbe    description: if AHB master 1 is eligible for fetching memory contents
666f64aa57SCorentin Labbe
676f64aa57SCorentin Labbe  mem-bus-interface-ahb2:
686f64aa57SCorentin Labbe    type: boolean
696f64aa57SCorentin Labbe    description: if AHB master 2 is eligible for fetching memory contents
706f64aa57SCorentin Labbe
716f64aa57SCorentin Labbe  memcpy-burst-size:
726f64aa57SCorentin Labbe    $ref: /schemas/types.yaml#/definitions/uint32
736f64aa57SCorentin Labbe    enum:
746f64aa57SCorentin Labbe      - 1
756f64aa57SCorentin Labbe      - 4
766f64aa57SCorentin Labbe      - 8
776f64aa57SCorentin Labbe      - 16
786f64aa57SCorentin Labbe      - 32
796f64aa57SCorentin Labbe      - 64
806f64aa57SCorentin Labbe      - 128
816f64aa57SCorentin Labbe      - 256
826f64aa57SCorentin Labbe    description: the size of the bursts for memcpy
836f64aa57SCorentin Labbe
846f64aa57SCorentin Labbe  memcpy-bus-width:
856f64aa57SCorentin Labbe    $ref: /schemas/types.yaml#/definitions/uint32
866f64aa57SCorentin Labbe    enum:
876f64aa57SCorentin Labbe      - 8
886f64aa57SCorentin Labbe      - 16
896f64aa57SCorentin Labbe      - 32
906f64aa57SCorentin Labbe      - 64
916f64aa57SCorentin Labbe    description: bus width used for memcpy in bits. FTDMAC020 also accept 64 bits
926f64aa57SCorentin Labbe
93a173a242SRob Herring  resets:
94a173a242SRob Herring    maxItems: 1
95a173a242SRob Herring
966f64aa57SCorentin Labberequired:
976f64aa57SCorentin Labbe  - reg
986f64aa57SCorentin Labbe  - interrupts
996f64aa57SCorentin Labbe  - clocks
1006f64aa57SCorentin Labbe  - clock-names
1016f64aa57SCorentin Labbe  - "#dma-cells"
1026f64aa57SCorentin Labbe
1036f64aa57SCorentin LabbeunevaluatedProperties: false
1046f64aa57SCorentin Labbe
1056f64aa57SCorentin Labbeexamples:
1066f64aa57SCorentin Labbe  - |
1076f64aa57SCorentin Labbe    dmac0: dma-controller@10130000 {
1086f64aa57SCorentin Labbe      compatible = "arm,pl080", "arm,primecell";
1096f64aa57SCorentin Labbe      reg = <0x10130000 0x1000>;
1106f64aa57SCorentin Labbe      interrupt-parent = <&vica>;
1116f64aa57SCorentin Labbe      interrupts = <15>;
1126f64aa57SCorentin Labbe      clocks = <&hclkdma0>;
1136f64aa57SCorentin Labbe      clock-names = "apb_pclk";
1146f64aa57SCorentin Labbe      lli-bus-interface-ahb1;
1156f64aa57SCorentin Labbe      lli-bus-interface-ahb2;
1166f64aa57SCorentin Labbe      mem-bus-interface-ahb2;
1176f64aa57SCorentin Labbe      memcpy-burst-size = <256>;
1186f64aa57SCorentin Labbe      memcpy-bus-width = <32>;
1196f64aa57SCorentin Labbe      #dma-cells = <2>;
1206f64aa57SCorentin Labbe    };
1216f64aa57SCorentin Labbe  - |
1226f64aa57SCorentin Labbe    #include <dt-bindings/interrupt-controller/irq.h>
1236f64aa57SCorentin Labbe    #include <dt-bindings/reset/cortina,gemini-reset.h>
1246f64aa57SCorentin Labbe    #include <dt-bindings/clock/cortina,gemini-clock.h>
1256f64aa57SCorentin Labbe    dma-controller@67000000 {
1266f64aa57SCorentin Labbe      compatible = "faraday,ftdma020", "arm,pl080", "arm,primecell";
1276f64aa57SCorentin Labbe      /* Faraday Technology FTDMAC020 variant */
1286f64aa57SCorentin Labbe      arm,primecell-periphid = <0x0003b080>;
1296f64aa57SCorentin Labbe      reg = <0x67000000 0x1000>;
1306f64aa57SCorentin Labbe      interrupts = <9 IRQ_TYPE_EDGE_RISING>;
1316f64aa57SCorentin Labbe      resets = <&syscon GEMINI_RESET_DMAC>;
1326f64aa57SCorentin Labbe      clocks = <&syscon GEMINI_CLK_AHB>;
1336f64aa57SCorentin Labbe      clock-names = "apb_pclk";
1346f64aa57SCorentin Labbe      /* Bus interface AHB1 (AHB0) is totally tilted */
1356f64aa57SCorentin Labbe      lli-bus-interface-ahb2;
1366f64aa57SCorentin Labbe      mem-bus-interface-ahb2;
1376f64aa57SCorentin Labbe      memcpy-burst-size = <256>;
1386f64aa57SCorentin Labbe      memcpy-bus-width = <32>;
1396f64aa57SCorentin Labbe      #dma-cells = <2>;
1406f64aa57SCorentin Labbe    };
141