]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blame - Documentation/devicetree/bindings/remoteproc/ti,pru-rproc.yaml
Merge tag 's390-5.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
[mirror_ubuntu-jammy-kernel.git] / Documentation / devicetree / bindings / remoteproc / ti,pru-rproc.yaml
CommitLineData
d570d05e
SA
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
7title: TI Programmable Realtime Unit (PRU) cores
8
9maintainers:
10 - Suman Anna <s-anna@ti.com>
11
12description: |
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
34properties:
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
65if:
66 properties:
67 compatible:
68 enum:
69 - ti,am654-rtu
70 - ti,j721e-rtu
71then:
72 properties:
73 $nodename:
74 pattern: "^rtu@[0-9a-f]+$"
75else:
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
91required:
92 - compatible
93 - reg
94 - reg-names
95 - firmware-name
96
97additionalProperties: false
98
99examples:
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 };