Lines Matching +full:am335x +full:- +full:pru1 +full:- +full:fw
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
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
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 - description: ICSSG_CORE Clock
98 - description: ICSSG_IEP Clock
99 - description: ICSSG_RGMII_MHZ_250 Clock
100 - description: ICSSG_RGMII_MHZ_50 Clock
101 - description: ICSSG_RGMII_MHZ_5 Clock
102 - description: ICSSG_UART Clock
103 - description: ICSSG_ICLK Clock
107 memories@[a-f0-9]+$:
109 The various Data RAMs within a single PRU-ICSS unit are represented as a
118 - description: Address and size of the Data RAM0.
119 - description: Address and size of the Data RAM1.
120 - description: |
125 reg-names:
128 - const: dram0
129 - const: dram1
130 - const: shrdram2
133 - reg
134 - reg-names
138 cfg@[a-f0-9]+$:
140 PRU-ICSS configuration space. CFG sub-module represented as a SysCon.
148 - const: ti,pruss-cfg
149 - const: syscon
151 "#address-cells":
154 "#size-cells":
167 "#address-cells":
170 "#size-cells":
174 coreclk-mux@[a-f0-9]+$:
179 name "coreclk-mux".
184 '#clock-cells':
189 - description: ICSSG_CORE Clock
190 - description: ICSSG_ICLK Clock
192 assigned-clocks:
195 assigned-clock-parents:
198 Standard assigned-clocks-parents definition used for selecting
205 - clocks
209 iepclk-mux@[a-f0-9]+$:
213 mux and should have the name "iepclk-mux".
218 '#clock-cells':
223 - description: ICSSG_IEP Clock
224 - description: Core Clock (OCP Clock in older SoCs)
226 assigned-clocks:
229 assigned-clock-parents:
232 Standard assigned-clocks-parents definition used for selecting
239 - clocks
245 iep@[a-f0-9]+$:
248 functions such as time stamping. Each PRUSS has either 1 IEP (on AM335x,
254 mii-rt@[a-f0-9]+$:
256 Real-Time Ethernet to support multiple industrial communication protocols.
257 MII-RT sub-module represented as a SysCon.
264 - const: ti,pruss-mii
265 - const: syscon
272 mii-g-rt@[a-f0-9]+$:
274 The Real-time Media Independent Interface to support multiple industrial
275 communication protocols (G stands for Gigabit). MII-G-RT sub-module
283 - const: ti,pruss-mii-g
284 - const: syscon
291 ^pa-stats@[a-f0-9]+$:
293 PA-STATS sub-module represented as a SysCon. PA_STATS is a set of
295 ICSSG firmware. This syscon sub-module will help the device to
305 - const: ti,pruss-pa-st
306 - const: syscon
311 interrupt-controller@[a-f0-9]+$:
315 interrupt-controller node.
316 $ref: /schemas/interrupt-controller/ti,pruss-intc.yaml#
319 mdio@[a-f0-9]+$:
322 external PHYs. The MDIO module used within the PRU-ICSS is an instance of
324 $ref: /schemas/net/ti,davinci-mdio.yaml#
327 "^(pru|rtu|txpru)@[0-9a-f]+$":
334 $ref: /schemas/remoteproc/ti,pru-rproc.yaml#
338 - compatible
339 - reg
340 - ranges
344 # Due to inability of correctly verifying sub-nodes with an @address through
345 # the "required" list, the required sub-nodes below are commented out for now.
348 # - memories
349 # - interrupt-controller
350 # - pru
353 - if:
358 - ti,k2g-pruss
359 - ti,am654-icssg
360 - ti,j721e-icssg
361 - ti,am642-icssg
364 - power-domains
366 - if:
371 - ti,k2g-pruss
374 - dma-coherent
377 - |
379 /* Example 1 AM33xx PRU-ICSS */
381 compatible = "ti,am3356-pruss";
383 #address-cells = <1>;
384 #size-cells = <1>;
391 reg-names = "dram0", "dram1", "shrdram2";
395 compatible = "ti,pruss-cfg", "syscon";
396 #address-cells = <1>;
397 #size-cells = <1>;
402 #address-cells = <1>;
403 #size-cells = <0>;
405 pruss_iepclk_mux: iepclk-mux@30 {
407 #clock-cells = <0>;
414 pruss_mii_rt: mii-rt@32000 {
415 compatible = "ti,pruss-mii", "syscon";
419 pruss_intc: interrupt-controller@20000 {
420 compatible = "ti,pruss-intc";
422 interrupt-controller;
423 #interrupt-cells = <3>;
425 interrupt-names = "host_intr0", "host_intr1",
432 compatible = "ti,am3356-pru";
436 reg-names = "iram", "control", "debug";
437 firmware-name = "am335x-pru0-fw";
440 pru1: pru@38000 {
441 compatible = "ti,am3356-pru";
445 reg-names = "iram", "control", "debug";
446 firmware-name = "am335x-pru1-fw";
453 clock-names = "fck";
455 #address-cells = <1>;
456 #size-cells = <0>;
460 - |
462 /* Example 2 AM43xx PRU-ICSS with PRUSS1 node */
463 #include <dt-bindings/interrupt-controller/arm-gic.h>
465 compatible = "ti,am4376-pruss1";
467 #address-cells = <1>;
468 #size-cells = <1>;
475 reg-names = "dram0", "dram1", "shrdram2";
479 compatible = "ti,pruss-cfg", "syscon";
480 #address-cells = <1>;
481 #size-cells = <1>;
486 #address-cells = <1>;
487 #size-cells = <0>;
489 pruss1_iepclk_mux: iepclk-mux@30 {
491 #clock-cells = <0>;
498 pruss1_mii_rt: mii-rt@32000 {
499 compatible = "ti,pruss-mii", "syscon";
503 pruss1_intc: interrupt-controller@20000 {
504 compatible = "ti,pruss-intc";
506 interrupt-controller;
507 #interrupt-cells = <3>;
515 interrupt-names = "host_intr0", "host_intr1",
519 ti,irqs-reserved = /bits/ 8 <0x20>; /* BIT(5) */
523 compatible = "ti,am4376-pru";
527 reg-names = "iram", "control", "debug";
528 firmware-name = "am437x-pru1_0-fw";
532 compatible = "ti,am4376-pru";
536 reg-names = "iram", "control", "debug";
537 firmware-name = "am437x-pru1_1-fw";
544 clock-names = "fck";
546 #address-cells = <1>;
547 #size-cells = <0>;