blob: ab25ae63d2c36dce0db5d229c32f256c5fc79219 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/dma/arm-pl08x.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: ARM PrimeCells PL080 and PL081 and derivatives DMA controller
8
9maintainers:
10 - Vinod Koul <vkoul@kernel.org>
11
12allOf:
13 - $ref: /schemas/arm/primecell.yaml#
14 - $ref: dma-controller.yaml#
15
16# We need a select here so we don't match all nodes with 'arm,primecell'
17select:
18 properties:
19 compatible:
20 contains:
21 enum:
22 - arm,pl080
23 - arm,pl081
24 required:
25 - compatible
26
27properties:
28 compatible:
29 oneOf:
30 - items:
31 - enum:
32 - arm,pl080
33 - arm,pl081
34 - const: arm,primecell
35 - items:
36 - const: faraday,ftdma020
37 - const: arm,pl080
38 - const: arm,primecell
39
40 reg:
41 maxItems: 1
42 description: Address range of the PL08x registers
43
44 interrupts:
45 minItems: 1
46 description: The PL08x interrupt number
47
48 clocks:
49 minItems: 1
50 description: The clock running the IP core clock
51
52 clock-names:
53 maxItems: 1
54
55 lli-bus-interface-ahb1:
56 type: boolean
57 description: if AHB master 1 is eligible for fetching LLIs
58
59 lli-bus-interface-ahb2:
60 type: boolean
61 description: if AHB master 2 is eligible for fetching LLIs
62
63 mem-bus-interface-ahb1:
64 type: boolean
65 description: if AHB master 1 is eligible for fetching memory contents
66
67 mem-bus-interface-ahb2:
68 type: boolean
69 description: if AHB master 2 is eligible for fetching memory contents
70
71 memcpy-burst-size:
72 $ref: /schemas/types.yaml#/definitions/uint32
73 enum:
74 - 1
75 - 4
76 - 8
77 - 16
78 - 32
79 - 64
80 - 128
81 - 256
82 description: the size of the bursts for memcpy
83
84 memcpy-bus-width:
85 $ref: /schemas/types.yaml#/definitions/uint32
86 enum:
87 - 8
88 - 16
89 - 32
90 - 64
91 description: bus width used for memcpy in bits. FTDMAC020 also accept 64 bits
92
93 resets:
94 maxItems: 1
95
96required:
97 - reg
98 - interrupts
99 - clocks
100 - clock-names
101 - "#dma-cells"
102
103unevaluatedProperties: false
104
105examples:
106 - |
107 dmac0: dma-controller@10130000 {
108 compatible = "arm,pl080", "arm,primecell";
109 reg = <0x10130000 0x1000>;
110 interrupt-parent = <&vica>;
111 interrupts = <15>;
112 clocks = <&hclkdma0>;
113 clock-names = "apb_pclk";
114 lli-bus-interface-ahb1;
115 lli-bus-interface-ahb2;
116 mem-bus-interface-ahb2;
117 memcpy-burst-size = <256>;
118 memcpy-bus-width = <32>;
119 #dma-cells = <2>;
120 };
121 - |
122 #include <dt-bindings/interrupt-controller/irq.h>
123 #include <dt-bindings/reset/cortina,gemini-reset.h>
124 #include <dt-bindings/clock/cortina,gemini-clock.h>
125 dma-controller@67000000 {
126 compatible = "faraday,ftdma020", "arm,pl080", "arm,primecell";
127 /* Faraday Technology FTDMAC020 variant */
128 arm,primecell-periphid = <0x0003b080>;
129 reg = <0x67000000 0x1000>;
130 interrupts = <9 IRQ_TYPE_EDGE_RISING>;
131 resets = <&syscon GEMINI_RESET_DMAC>;
132 clocks = <&syscon GEMINI_CLK_AHB>;
133 clock-names = "apb_pclk";
134 /* Bus interface AHB1 (AHB0) is totally tilted */
135 lli-bus-interface-ahb2;
136 mem-bus-interface-ahb2;
137 memcpy-burst-size = <256>;
138 memcpy-bus-width = <32>;
139 #dma-cells = <2>;
140 };