Merge tag 'ntb-5.11' of git://github.com/jonmason/ntb
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / remoteproc / ti,pru-rproc.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/remoteproc/ti,pru-rproc.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: TI Programmable Realtime Unit (PRU) cores
8
9 maintainers:
10   - Suman Anna <s-anna@ti.com>
11
12 description: |
13   Each Programmable Real-Time Unit and Industrial Communication Subsystem
14   (PRU-ICSS or PRUSS) has two 32-bit load/store RISC CPU cores called
15   Programmable Real-Time Units (PRUs), each represented by a node. Each PRU
16   core has a dedicated Instruction RAM, Control and Debug register sets, and
17   use the Data RAMs present within the PRU-ICSS for code execution.
18
19   The K3 SoCs containing ICSSG v1.0 (eg: AM65x SR1.0) also have two Auxiliary
20   PRU cores called RTUs with slightly different IP integration. The K3 SoCs
21   containing the revised ICSSG v1.1 (eg: J721E, AM65x SR2.0) have an extra two
22   auxiliary Transmit PRU cores called Tx_PRUs that augment the PRUs. Each RTU
23   or Tx_PRU core can also be used independently like a PRU, or alongside a
24   corresponding PRU core to provide/implement auxiliary functionality/support.
25
26   Each PRU, RTU or Tx_PRU core node should be defined as a child node of the
27   corresponding PRU-ICSS node. Each node can optionally be rendered inactive by
28   using the standard DT string property, "status".
29
30   Please see the overall PRU-ICSS bindings document for additional details
31   including a complete example,
32     Documentation/devicetree/bindings/soc/ti/ti,pruss.yaml
33
34 properties:
35   compatible:
36     enum:
37       - ti,am3356-pru   # for AM335x SoC family (AM3356+ SoCs only)
38       - ti,am4376-pru   # for AM437x SoC family (AM4376+ SoCs only)
39       - ti,am5728-pru   # for AM57xx SoC family
40       - ti,k2g-pru      # for 66AK2G SoC family
41       - ti,am654-pru    # for PRUs in K3 AM65x SoC family
42       - ti,am654-rtu    # for RTUs in K3 AM65x SoC family
43       - ti,am654-tx-pru # for Tx_PRUs in K3 AM65x SR2.0 SoCs
44       - ti,j721e-pru    # for PRUs in K3 J721E SoC family
45       - ti,j721e-rtu    # for RTUs in K3 J721E SoC family
46       - ti,j721e-tx-pru # for Tx_PRUs in K3 J721E SoC family
47
48   reg:
49     items:
50       - description: Address and Size of the PRU Instruction RAM
51       - description: Address and Size of the PRU CTRL sub-module registers
52       - description: Address and Size of the PRU Debug sub-module registers
53
54   reg-names:
55     items:
56       - const: iram
57       - const: control
58       - const: debug
59
60   firmware-name:
61     description: |
62       Should contain the name of the default firmware image
63       file located on the firmware search path.
64
65 if:
66   properties:
67     compatible:
68       enum:
69         - ti,am654-rtu
70         - ti,j721e-rtu
71 then:
72   properties:
73     $nodename:
74       pattern: "^rtu@[0-9a-f]+$"
75 else:
76   if:
77     properties:
78       compatible:
79         enum:
80           - ti,am654-tx-pru
81           - ti,j721e-tx-pru
82   then:
83     properties:
84       $nodename:
85         pattern: "^txpru@[0-9a-f]+"
86   else:
87     properties:
88       $nodename:
89         pattern: "^pru@[0-9a-f]+$"
90
91 required:
92   - compatible
93   - reg
94   - reg-names
95   - firmware-name
96
97 additionalProperties: false
98
99 examples:
100   - |
101     /* AM33xx PRU-ICSS */
102     pruss_tm: target-module@300000 {  /* 0x4a300000, ap 9 04.0 */
103       compatible = "ti,sysc-pruss", "ti,sysc";
104       #address-cells = <1>;
105       #size-cells = <1>;
106       ranges = <0x0 0x300000 0x80000>;
107
108       pruss: pruss@0 {
109         compatible = "ti,am3356-pruss";
110         reg = <0x0 0x80000>;
111         #address-cells = <1>;
112         #size-cells = <1>;
113         ranges;
114
115         pruss_mem: memories@0 {
116           reg = <0x0 0x2000>,
117                 <0x2000 0x2000>,
118                 <0x10000 0x3000>;
119           reg-names = "dram0", "dram1", "shrdram2";
120         };
121
122         pru0: pru@34000 {
123           compatible = "ti,am3356-pru";
124           reg = <0x34000 0x2000>,
125                 <0x22000 0x400>,
126                 <0x22400 0x100>;
127           reg-names = "iram", "control", "debug";
128           firmware-name = "am335x-pru0-fw";
129         };
130
131         pru1: pru@38000 {
132           compatible = "ti,am3356-pru";
133           reg = <0x38000 0x2000>,
134                 <0x24000 0x400>,
135                 <0x24400 0x100>;
136           reg-names = "iram", "control", "debug";
137           firmware-name = "am335x-pru1-fw";
138         };
139       };
140     };
141
142   - |
143     /* AM65x SR2.0 ICSSG */
144     #include <dt-bindings/soc/ti,sci_pm_domain.h>
145
146     icssg0: icssg@b000000 {
147       compatible = "ti,am654-icssg";
148       reg = <0xb000000 0x80000>;
149       power-domains = <&k3_pds 62 TI_SCI_PD_EXCLUSIVE>;
150       #address-cells = <1>;
151       #size-cells = <1>;
152       ranges = <0x0 0xb000000 0x80000>;
153
154       icssg0_mem: memories@0 {
155         reg = <0x0 0x2000>,
156               <0x2000 0x2000>,
157               <0x10000 0x10000>;
158         reg-names = "dram0", "dram1", "shrdram2";
159       };
160
161       pru0_0: pru@34000 {
162         compatible = "ti,am654-pru";
163         reg = <0x34000 0x4000>,
164               <0x22000 0x100>,
165               <0x22400 0x100>;
166         reg-names = "iram", "control", "debug";
167         firmware-name = "am65x-pru0_0-fw";
168       };
169
170       rtu0_0: rtu@4000 {
171         compatible = "ti,am654-rtu";
172         reg = <0x4000 0x2000>,
173               <0x23000 0x100>,
174               <0x23400 0x100>;
175         reg-names = "iram", "control", "debug";
176         firmware-name = "am65x-rtu0_0-fw";
177       };
178
179       tx_pru0_0: txpru@a000 {
180         compatible = "ti,am654-tx-pru";
181         reg = <0xa000 0x1800>,
182               <0x25000 0x100>,
183               <0x25400 0x100>;
184         reg-names = "iram", "control", "debug";
185         firmware-name = "am65x-txpru0_0-fw";
186       };
187
188       pru0_1: pru@38000 {
189         compatible = "ti,am654-pru";
190         reg = <0x38000 0x4000>,
191               <0x24000 0x100>,
192               <0x24400 0x100>;
193         reg-names = "iram", "control", "debug";
194         firmware-name = "am65x-pru0_1-fw";
195       };
196
197       rtu0_1: rtu@6000 {
198         compatible = "ti,am654-rtu";
199         reg = <0x6000 0x2000>,
200               <0x23800 0x100>,
201               <0x23c00 0x100>;
202         reg-names = "iram", "control", "debug";
203         firmware-name = "am65x-rtu0_1-fw";
204       };
205
206       tx_pru0_1: txpru@c000 {
207         compatible = "ti,am654-tx-pru";
208         reg = <0xc000 0x1800>,
209               <0x25800 0x100>,
210               <0x25c00 0x100>;
211         reg-names = "iram", "control", "debug";
212         firmware-name = "am65x-txpru0_1-fw";
213       };
214     };