]>
Commit | Line | Data |
---|---|---|
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 | ||
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 | }; |