Lines Matching +full:reg +full:- +full:spaces

1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
3 ---
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
8 TI Programmable Real-Time Unit and Industrial Communication Subsystem
11 - Suman Anna <s-anna@ti.com>
15 The Programmable Real-Time Unit and Industrial Communication Subsystem
16 (PRU-ICSS a.k.a. PRUSS) is present on various TI SoCs such as AM335x, AM437x,
17 Keystone 66AK2G, OMAP-L138/DA850 etc. A PRUSS consists of dual 32-bit RISC
18 cores (Programmable Real-Time Units, or PRUs), shared RAM, data and
23 peripheral interfaces, fast real-time responses, or specialized data handling.
25 - an Ethernet MII_RT module with two MII ports
26 - an MDIO port to control external Ethernet PHYs
27 - an Industrial Ethernet Peripheral (IEP) to manage/generate Industrial
29 - an Enhanced Capture Module (eCAP)
30 - an Industrial Ethernet Timer with 7/9 capture and 16 compare events
31 - a 16550-compatible UART to support PROFIBUS
32 - Enhanced GPIO with async capture and serial support
34 A PRU-ICSS subsystem can have up to three shared data memories. A PRU core
40 RAM, and specific register spaces for Control and Debug functionalities.
42 Various sub-modules within a PRU-ICSS subsystem are represented as individual
43 nodes and are defined using a parent-child hierarchy depending on their
48 PRU-ICSS Node
50 Each PRU-ICSS instance is represented as its own node with the individual PRU
53 corresponding interconnect bus nodes or target-module nodes.
60 pattern: "^(pruss|icssg)@[0-9a-f]+$"
64 - ti,am3356-pruss # for AM335x SoC family
65 - ti,am4376-pruss0 # for AM437x SoC family and PRUSS unit 0
66 - ti,am4376-pruss1 # for AM437x SoC family and PRUSS unit 1
67 - ti,am5728-pruss # for AM57xx SoC family
68 - ti,am625-pruss # for K3 AM62x SoC family
69 - ti,am642-icssg # for K3 AM64x SoC family
70 - ti,am654-icssg # for K3 AM65x SoC family
71 - ti,j721e-icssg # for K3 J721E SoC family
72 - ti,k2g-pruss # for 66AK2G SoC family
74 reg:
77 "#address-cells":
80 "#size-cells":
86 dma-ranges:
89 dma-coherent: true
91 power-domains:
93 This property is as per sci-pm-domain.txt.
97 memories@[a-f0-9]+$:
99 The various Data RAMs within a single PRU-ICSS unit are represented as a
105 reg:
108 - description: Address and size of the Data RAM0.
109 - description: Address and size of the Data RAM1.
110 - description: |
115 reg-names:
118 - const: dram0
119 - const: dram1
120 - const: shrdram2
123 - reg
124 - reg-names
128 cfg@[a-f0-9]+$:
130 PRU-ICSS configuration space. CFG sub-module represented as a SysCon.
138 - const: ti,pruss-cfg
139 - const: syscon
141 "#address-cells":
144 "#size-cells":
147 reg:
157 "#address-cells":
160 "#size-cells":
164 coreclk-mux@[a-f0-9]+$:
169 name "coreclk-mux".
174 '#clock-cells':
179 - description: ICSSG_CORE Clock
180 - description: ICSSG_ICLK Clock
182 assigned-clocks:
185 assigned-clock-parents:
188 Standard assigned-clocks-parents definition used for selecting
191 reg:
195 - clocks
199 iepclk-mux@[a-f0-9]+$:
203 mux and should have the name "iepclk-mux".
208 '#clock-cells':
213 - description: ICSSG_IEP Clock
214 - description: Core Clock (OCP Clock in older SoCs)
216 assigned-clocks:
219 assigned-clock-parents:
222 Standard assigned-clocks-parents definition used for selecting
225 reg:
229 - clocks
235 iep@[a-f0-9]+$:
244 mii-rt@[a-f0-9]+$:
246 Real-Time Ethernet to support multiple industrial communication protocols.
247 MII-RT sub-module represented as a SysCon.
254 - const: ti,pruss-mii
255 - const: syscon
257 reg:
262 mii-g-rt@[a-f0-9]+$:
264 The Real-time Media Independent Interface to support multiple industrial
265 communication protocols (G stands for Gigabit). MII-G-RT sub-module
273 - const: ti,pruss-mii-g
274 - const: syscon
276 reg:
281 interrupt-controller@[a-f0-9]+$:
285 interrupt-controller node.
286 $ref: /schemas/interrupt-controller/ti,pruss-intc.yaml#
289 mdio@[a-f0-9]+$:
292 external PHYs. The MDIO module used within the PRU-ICSS is an instance of
294 $ref: /schemas/net/ti,davinci-mdio.yaml#
297 "^(pru|rtu|txpru)@[0-9a-f]+$":
304 $ref: /schemas/remoteproc/ti,pru-rproc.yaml#
308 - compatible
309 - reg
310 - ranges
314 # Due to inability of correctly verifying sub-nodes with an @address through
315 # the "required" list, the required sub-nodes below are commented out for now.
318 # - memories
319 # - interrupt-controller
320 # - pru
323 - if:
328 - ti,k2g-pruss
329 - ti,am654-icssg
330 - ti,j721e-icssg
331 - ti,am642-icssg
334 - power-domains
336 - if:
341 - ti,k2g-pruss
344 - dma-coherent
347 - |
349 /* Example 1 AM33xx PRU-ICSS */
351 compatible = "ti,am3356-pruss";
352 reg = <0x0 0x80000>;
353 #address-cells = <1>;
354 #size-cells = <1>;
358 reg = <0x0 0x2000>,
361 reg-names = "dram0", "dram1", "shrdram2";
365 compatible = "ti,pruss-cfg", "syscon";
366 #address-cells = <1>;
367 #size-cells = <1>;
368 reg = <0x26000 0x2000>;
372 #address-cells = <1>;
373 #size-cells = <0>;
375 pruss_iepclk_mux: iepclk-mux@30 {
376 reg = <0x30>;
377 #clock-cells = <0>;
384 pruss_mii_rt: mii-rt@32000 {
385 compatible = "ti,pruss-mii", "syscon";
386 reg = <0x32000 0x58>;
389 pruss_intc: interrupt-controller@20000 {
390 compatible = "ti,pruss-intc";
391 reg = <0x20000 0x2000>;
392 interrupt-controller;
393 #interrupt-cells = <3>;
395 interrupt-names = "host_intr0", "host_intr1",
402 compatible = "ti,am3356-pru";
403 reg = <0x34000 0x2000>,
406 reg-names = "iram", "control", "debug";
407 firmware-name = "am335x-pru0-fw";
411 compatible = "ti,am3356-pru";
412 reg = <0x38000 0x2000>,
415 reg-names = "iram", "control", "debug";
416 firmware-name = "am335x-pru1-fw";
421 reg = <0x32400 0x90>;
423 clock-names = "fck";
425 #address-cells = <1>;
426 #size-cells = <0>;
430 - |
432 /* Example 2 AM43xx PRU-ICSS with PRUSS1 node */
433 #include <dt-bindings/interrupt-controller/arm-gic.h>
435 compatible = "ti,am4376-pruss1";
436 reg = <0x0 0x40000>;
437 #address-cells = <1>;
438 #size-cells = <1>;
442 reg = <0x0 0x2000>,
445 reg-names = "dram0", "dram1", "shrdram2";
449 compatible = "ti,pruss-cfg", "syscon";
450 #address-cells = <1>;
451 #size-cells = <1>;
452 reg = <0x26000 0x2000>;
456 #address-cells = <1>;
457 #size-cells = <0>;
459 pruss1_iepclk_mux: iepclk-mux@30 {
460 reg = <0x30>;
461 #clock-cells = <0>;
468 pruss1_mii_rt: mii-rt@32000 {
469 compatible = "ti,pruss-mii", "syscon";
470 reg = <0x32000 0x58>;
473 pruss1_intc: interrupt-controller@20000 {
474 compatible = "ti,pruss-intc";
475 reg = <0x20000 0x2000>;
476 interrupt-controller;
477 #interrupt-cells = <3>;
485 interrupt-names = "host_intr0", "host_intr1",
489 ti,irqs-reserved = /bits/ 8 <0x20>; /* BIT(5) */
493 compatible = "ti,am4376-pru";
494 reg = <0x34000 0x3000>,
497 reg-names = "iram", "control", "debug";
498 firmware-name = "am437x-pru1_0-fw";
502 compatible = "ti,am4376-pru";
503 reg = <0x38000 0x3000>,
506 reg-names = "iram", "control", "debug";
507 firmware-name = "am437x-pru1_1-fw";
512 reg = <0x32400 0x90>;
514 clock-names = "fck";
516 #address-cells = <1>;
517 #size-cells = <0>;