162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/soc/ti/ti,pruss.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: |+ 862306a36Sopenharmony_ci TI Programmable Real-Time Unit and Industrial Communication Subsystem 962306a36Sopenharmony_ci 1062306a36Sopenharmony_cimaintainers: 1162306a36Sopenharmony_ci - Suman Anna <s-anna@ti.com> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cidescription: |+ 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci The Programmable Real-Time Unit and Industrial Communication Subsystem 1662306a36Sopenharmony_ci (PRU-ICSS a.k.a. PRUSS) is present on various TI SoCs such as AM335x, AM437x, 1762306a36Sopenharmony_ci Keystone 66AK2G, OMAP-L138/DA850 etc. A PRUSS consists of dual 32-bit RISC 1862306a36Sopenharmony_ci cores (Programmable Real-Time Units, or PRUs), shared RAM, data and 1962306a36Sopenharmony_ci instruction RAMs, some internal peripheral modules to facilitate industrial 2062306a36Sopenharmony_ci communication, and an interrupt controller. 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci The programmable nature of the PRUs provide flexibility to implement custom 2362306a36Sopenharmony_ci peripheral interfaces, fast real-time responses, or specialized data handling. 2462306a36Sopenharmony_ci The common peripheral modules include the following, 2562306a36Sopenharmony_ci - an Ethernet MII_RT module with two MII ports 2662306a36Sopenharmony_ci - an MDIO port to control external Ethernet PHYs 2762306a36Sopenharmony_ci - an Industrial Ethernet Peripheral (IEP) to manage/generate Industrial 2862306a36Sopenharmony_ci Ethernet functions 2962306a36Sopenharmony_ci - an Enhanced Capture Module (eCAP) 3062306a36Sopenharmony_ci - an Industrial Ethernet Timer with 7/9 capture and 16 compare events 3162306a36Sopenharmony_ci - a 16550-compatible UART to support PROFIBUS 3262306a36Sopenharmony_ci - Enhanced GPIO with async capture and serial support 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci A PRU-ICSS subsystem can have up to three shared data memories. A PRU core 3562306a36Sopenharmony_ci acts on a primary Data RAM (there are usually 2 Data RAMs) at its address 3662306a36Sopenharmony_ci 0x0, but also has access to a secondary Data RAM (primary to the other PRU 3762306a36Sopenharmony_ci core) at its address 0x2000. A shared Data RAM, if present, can be accessed 3862306a36Sopenharmony_ci by both the PRU cores. The Interrupt Controller (INTC) and a CFG module are 3962306a36Sopenharmony_ci common to both the PRU cores. Each PRU core also has a private instruction 4062306a36Sopenharmony_ci RAM, and specific register spaces for Control and Debug functionalities. 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci Various sub-modules within a PRU-ICSS subsystem are represented as individual 4362306a36Sopenharmony_ci nodes and are defined using a parent-child hierarchy depending on their 4462306a36Sopenharmony_ci integration within the IP and the SoC. These nodes are described in the 4562306a36Sopenharmony_ci following sections. 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci PRU-ICSS Node 4962306a36Sopenharmony_ci ============== 5062306a36Sopenharmony_ci Each PRU-ICSS instance is represented as its own node with the individual PRU 5162306a36Sopenharmony_ci processor cores, the memories node, an INTC node and an MDIO node represented 5262306a36Sopenharmony_ci as child nodes within this PRUSS node. This node shall be a child of the 5362306a36Sopenharmony_ci corresponding interconnect bus nodes or target-module nodes. 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci See ../../mfd/syscon.yaml for generic SysCon binding details. 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ciproperties: 5962306a36Sopenharmony_ci $nodename: 6062306a36Sopenharmony_ci pattern: "^(pruss|icssg)@[0-9a-f]+$" 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci compatible: 6362306a36Sopenharmony_ci enum: 6462306a36Sopenharmony_ci - ti,am3356-pruss # for AM335x SoC family 6562306a36Sopenharmony_ci - ti,am4376-pruss0 # for AM437x SoC family and PRUSS unit 0 6662306a36Sopenharmony_ci - ti,am4376-pruss1 # for AM437x SoC family and PRUSS unit 1 6762306a36Sopenharmony_ci - ti,am5728-pruss # for AM57xx SoC family 6862306a36Sopenharmony_ci - ti,am625-pruss # for K3 AM62x SoC family 6962306a36Sopenharmony_ci - ti,am642-icssg # for K3 AM64x SoC family 7062306a36Sopenharmony_ci - ti,am654-icssg # for K3 AM65x SoC family 7162306a36Sopenharmony_ci - ti,j721e-icssg # for K3 J721E SoC family 7262306a36Sopenharmony_ci - ti,k2g-pruss # for 66AK2G SoC family 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci reg: 7562306a36Sopenharmony_ci maxItems: 1 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci "#address-cells": 7862306a36Sopenharmony_ci const: 1 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci "#size-cells": 8162306a36Sopenharmony_ci const: 1 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci ranges: 8462306a36Sopenharmony_ci maxItems: 1 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci dma-ranges: 8762306a36Sopenharmony_ci maxItems: 1 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci dma-coherent: true 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci power-domains: 9262306a36Sopenharmony_ci description: | 9362306a36Sopenharmony_ci This property is as per sci-pm-domain.txt. 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_cipatternProperties: 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci memories@[a-f0-9]+$: 9862306a36Sopenharmony_ci description: | 9962306a36Sopenharmony_ci The various Data RAMs within a single PRU-ICSS unit are represented as a 10062306a36Sopenharmony_ci single node with the name 'memories'. 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci type: object 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci properties: 10562306a36Sopenharmony_ci reg: 10662306a36Sopenharmony_ci minItems: 2 # On AM437x one of two PRUSS units don't contain Shared RAM. 10762306a36Sopenharmony_ci items: 10862306a36Sopenharmony_ci - description: Address and size of the Data RAM0. 10962306a36Sopenharmony_ci - description: Address and size of the Data RAM1. 11062306a36Sopenharmony_ci - description: | 11162306a36Sopenharmony_ci Address and size of the Shared Data RAM. Note that on AM437x one 11262306a36Sopenharmony_ci of two PRUSS units don't contain Shared RAM, while the second one 11362306a36Sopenharmony_ci has it. 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci reg-names: 11662306a36Sopenharmony_ci minItems: 2 11762306a36Sopenharmony_ci items: 11862306a36Sopenharmony_ci - const: dram0 11962306a36Sopenharmony_ci - const: dram1 12062306a36Sopenharmony_ci - const: shrdram2 12162306a36Sopenharmony_ci 12262306a36Sopenharmony_ci required: 12362306a36Sopenharmony_ci - reg 12462306a36Sopenharmony_ci - reg-names 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_ci additionalProperties: false 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci cfg@[a-f0-9]+$: 12962306a36Sopenharmony_ci description: | 13062306a36Sopenharmony_ci PRU-ICSS configuration space. CFG sub-module represented as a SysCon. 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_ci type: object 13362306a36Sopenharmony_ci additionalProperties: false 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci properties: 13662306a36Sopenharmony_ci compatible: 13762306a36Sopenharmony_ci items: 13862306a36Sopenharmony_ci - const: ti,pruss-cfg 13962306a36Sopenharmony_ci - const: syscon 14062306a36Sopenharmony_ci 14162306a36Sopenharmony_ci "#address-cells": 14262306a36Sopenharmony_ci const: 1 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_ci "#size-cells": 14562306a36Sopenharmony_ci const: 1 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci reg: 14862306a36Sopenharmony_ci maxItems: 1 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci ranges: 15162306a36Sopenharmony_ci maxItems: 1 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_ci clocks: 15462306a36Sopenharmony_ci type: object 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci properties: 15762306a36Sopenharmony_ci "#address-cells": 15862306a36Sopenharmony_ci const: 1 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci "#size-cells": 16162306a36Sopenharmony_ci const: 0 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci patternProperties: 16462306a36Sopenharmony_ci coreclk-mux@[a-f0-9]+$: 16562306a36Sopenharmony_ci description: | 16662306a36Sopenharmony_ci This is applicable only for ICSSG (K3 SoCs). The ICSSG modules 16762306a36Sopenharmony_ci core clock can be set to one of the 2 sources: ICSSG_CORE_CLK or 16862306a36Sopenharmony_ci ICSSG_ICLK. This node models this clock mux and should have the 16962306a36Sopenharmony_ci name "coreclk-mux". 17062306a36Sopenharmony_ci 17162306a36Sopenharmony_ci type: object 17262306a36Sopenharmony_ci 17362306a36Sopenharmony_ci properties: 17462306a36Sopenharmony_ci '#clock-cells': 17562306a36Sopenharmony_ci const: 0 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci clocks: 17862306a36Sopenharmony_ci items: 17962306a36Sopenharmony_ci - description: ICSSG_CORE Clock 18062306a36Sopenharmony_ci - description: ICSSG_ICLK Clock 18162306a36Sopenharmony_ci 18262306a36Sopenharmony_ci assigned-clocks: 18362306a36Sopenharmony_ci maxItems: 1 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ci assigned-clock-parents: 18662306a36Sopenharmony_ci maxItems: 1 18762306a36Sopenharmony_ci description: | 18862306a36Sopenharmony_ci Standard assigned-clocks-parents definition used for selecting 18962306a36Sopenharmony_ci mux parent (one of the mux input). 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ci reg: 19262306a36Sopenharmony_ci maxItems: 1 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ci required: 19562306a36Sopenharmony_ci - clocks 19662306a36Sopenharmony_ci 19762306a36Sopenharmony_ci additionalProperties: false 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_ci iepclk-mux@[a-f0-9]+$: 20062306a36Sopenharmony_ci description: | 20162306a36Sopenharmony_ci The IEP module can get its clock from 2 sources: ICSSG_IEP_CLK or 20262306a36Sopenharmony_ci CORE_CLK (OCP_CLK in older SoCs). This node models this clock 20362306a36Sopenharmony_ci mux and should have the name "iepclk-mux". 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci type: object 20662306a36Sopenharmony_ci 20762306a36Sopenharmony_ci properties: 20862306a36Sopenharmony_ci '#clock-cells': 20962306a36Sopenharmony_ci const: 0 21062306a36Sopenharmony_ci 21162306a36Sopenharmony_ci clocks: 21262306a36Sopenharmony_ci items: 21362306a36Sopenharmony_ci - description: ICSSG_IEP Clock 21462306a36Sopenharmony_ci - description: Core Clock (OCP Clock in older SoCs) 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci assigned-clocks: 21762306a36Sopenharmony_ci maxItems: 1 21862306a36Sopenharmony_ci 21962306a36Sopenharmony_ci assigned-clock-parents: 22062306a36Sopenharmony_ci maxItems: 1 22162306a36Sopenharmony_ci description: | 22262306a36Sopenharmony_ci Standard assigned-clocks-parents definition used for selecting 22362306a36Sopenharmony_ci mux parent (one of the mux input). 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_ci reg: 22662306a36Sopenharmony_ci maxItems: 1 22762306a36Sopenharmony_ci 22862306a36Sopenharmony_ci required: 22962306a36Sopenharmony_ci - clocks 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_ci additionalProperties: false 23262306a36Sopenharmony_ci 23362306a36Sopenharmony_ci additionalProperties: false 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_ci iep@[a-f0-9]+$: 23662306a36Sopenharmony_ci description: | 23762306a36Sopenharmony_ci Industrial Ethernet Peripheral to manage/generate Industrial Ethernet 23862306a36Sopenharmony_ci functions such as time stamping. Each PRUSS has either 1 IEP (on AM335x, 23962306a36Sopenharmony_ci AM437x, AM57xx & 66AK2G SoCs) or 2 IEPs (on K3 AM65x, J721E & AM64x SoCs). 24062306a36Sopenharmony_ci IEP is used for creating PTP clocks and generating PPS signals. 24162306a36Sopenharmony_ci 24262306a36Sopenharmony_ci type: object 24362306a36Sopenharmony_ci 24462306a36Sopenharmony_ci mii-rt@[a-f0-9]+$: 24562306a36Sopenharmony_ci description: | 24662306a36Sopenharmony_ci Real-Time Ethernet to support multiple industrial communication protocols. 24762306a36Sopenharmony_ci MII-RT sub-module represented as a SysCon. 24862306a36Sopenharmony_ci 24962306a36Sopenharmony_ci type: object 25062306a36Sopenharmony_ci 25162306a36Sopenharmony_ci properties: 25262306a36Sopenharmony_ci compatible: 25362306a36Sopenharmony_ci items: 25462306a36Sopenharmony_ci - const: ti,pruss-mii 25562306a36Sopenharmony_ci - const: syscon 25662306a36Sopenharmony_ci 25762306a36Sopenharmony_ci reg: 25862306a36Sopenharmony_ci maxItems: 1 25962306a36Sopenharmony_ci 26062306a36Sopenharmony_ci additionalProperties: false 26162306a36Sopenharmony_ci 26262306a36Sopenharmony_ci mii-g-rt@[a-f0-9]+$: 26362306a36Sopenharmony_ci description: | 26462306a36Sopenharmony_ci The Real-time Media Independent Interface to support multiple industrial 26562306a36Sopenharmony_ci communication protocols (G stands for Gigabit). MII-G-RT sub-module 26662306a36Sopenharmony_ci represented as a SysCon. 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ci type: object 26962306a36Sopenharmony_ci 27062306a36Sopenharmony_ci properties: 27162306a36Sopenharmony_ci compatible: 27262306a36Sopenharmony_ci items: 27362306a36Sopenharmony_ci - const: ti,pruss-mii-g 27462306a36Sopenharmony_ci - const: syscon 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ci reg: 27762306a36Sopenharmony_ci maxItems: 1 27862306a36Sopenharmony_ci 27962306a36Sopenharmony_ci additionalProperties: false 28062306a36Sopenharmony_ci 28162306a36Sopenharmony_ci interrupt-controller@[a-f0-9]+$: 28262306a36Sopenharmony_ci description: | 28362306a36Sopenharmony_ci PRUSS INTC Node. Each PRUSS has a single interrupt controller instance 28462306a36Sopenharmony_ci that is common to all the PRU cores. This should be represented as an 28562306a36Sopenharmony_ci interrupt-controller node. 28662306a36Sopenharmony_ci $ref: /schemas/interrupt-controller/ti,pruss-intc.yaml# 28762306a36Sopenharmony_ci type: object 28862306a36Sopenharmony_ci 28962306a36Sopenharmony_ci mdio@[a-f0-9]+$: 29062306a36Sopenharmony_ci description: | 29162306a36Sopenharmony_ci MDIO Node. Each PRUSS has an MDIO module that can be used to control 29262306a36Sopenharmony_ci external PHYs. The MDIO module used within the PRU-ICSS is an instance of 29362306a36Sopenharmony_ci the MDIO Controller used in TI Davinci SoCs. 29462306a36Sopenharmony_ci $ref: /schemas/net/ti,davinci-mdio.yaml# 29562306a36Sopenharmony_ci type: object 29662306a36Sopenharmony_ci 29762306a36Sopenharmony_ci "^(pru|rtu|txpru)@[0-9a-f]+$": 29862306a36Sopenharmony_ci description: | 29962306a36Sopenharmony_ci PRU Node. Each PRUSS has dual PRU cores, each represented as a RemoteProc 30062306a36Sopenharmony_ci device through a PRU child node each. Each node can optionally be rendered 30162306a36Sopenharmony_ci inactive by using the standard DT string property, "status". The ICSSG IP 30262306a36Sopenharmony_ci present on K3 SoCs have additional auxiliary PRU cores with slightly 30362306a36Sopenharmony_ci different IP integration. 30462306a36Sopenharmony_ci $ref: /schemas/remoteproc/ti,pru-rproc.yaml# 30562306a36Sopenharmony_ci type: object 30662306a36Sopenharmony_ci 30762306a36Sopenharmony_cirequired: 30862306a36Sopenharmony_ci - compatible 30962306a36Sopenharmony_ci - reg 31062306a36Sopenharmony_ci - ranges 31162306a36Sopenharmony_ci 31262306a36Sopenharmony_ciadditionalProperties: false 31362306a36Sopenharmony_ci 31462306a36Sopenharmony_ci# Due to inability of correctly verifying sub-nodes with an @address through 31562306a36Sopenharmony_ci# the "required" list, the required sub-nodes below are commented out for now. 31662306a36Sopenharmony_ci 31762306a36Sopenharmony_ci# required: 31862306a36Sopenharmony_ci# - memories 31962306a36Sopenharmony_ci# - interrupt-controller 32062306a36Sopenharmony_ci# - pru 32162306a36Sopenharmony_ci 32262306a36Sopenharmony_ciallOf: 32362306a36Sopenharmony_ci - if: 32462306a36Sopenharmony_ci properties: 32562306a36Sopenharmony_ci compatible: 32662306a36Sopenharmony_ci contains: 32762306a36Sopenharmony_ci enum: 32862306a36Sopenharmony_ci - ti,k2g-pruss 32962306a36Sopenharmony_ci - ti,am654-icssg 33062306a36Sopenharmony_ci - ti,j721e-icssg 33162306a36Sopenharmony_ci - ti,am642-icssg 33262306a36Sopenharmony_ci then: 33362306a36Sopenharmony_ci required: 33462306a36Sopenharmony_ci - power-domains 33562306a36Sopenharmony_ci 33662306a36Sopenharmony_ci - if: 33762306a36Sopenharmony_ci properties: 33862306a36Sopenharmony_ci compatible: 33962306a36Sopenharmony_ci contains: 34062306a36Sopenharmony_ci enum: 34162306a36Sopenharmony_ci - ti,k2g-pruss 34262306a36Sopenharmony_ci then: 34362306a36Sopenharmony_ci required: 34462306a36Sopenharmony_ci - dma-coherent 34562306a36Sopenharmony_ci 34662306a36Sopenharmony_ciexamples: 34762306a36Sopenharmony_ci - | 34862306a36Sopenharmony_ci 34962306a36Sopenharmony_ci /* Example 1 AM33xx PRU-ICSS */ 35062306a36Sopenharmony_ci pruss: pruss@0 { 35162306a36Sopenharmony_ci compatible = "ti,am3356-pruss"; 35262306a36Sopenharmony_ci reg = <0x0 0x80000>; 35362306a36Sopenharmony_ci #address-cells = <1>; 35462306a36Sopenharmony_ci #size-cells = <1>; 35562306a36Sopenharmony_ci ranges; 35662306a36Sopenharmony_ci 35762306a36Sopenharmony_ci pruss_mem: memories@0 { 35862306a36Sopenharmony_ci reg = <0x0 0x2000>, 35962306a36Sopenharmony_ci <0x2000 0x2000>, 36062306a36Sopenharmony_ci <0x10000 0x3000>; 36162306a36Sopenharmony_ci reg-names = "dram0", "dram1", "shrdram2"; 36262306a36Sopenharmony_ci }; 36362306a36Sopenharmony_ci 36462306a36Sopenharmony_ci pruss_cfg: cfg@26000 { 36562306a36Sopenharmony_ci compatible = "ti,pruss-cfg", "syscon"; 36662306a36Sopenharmony_ci #address-cells = <1>; 36762306a36Sopenharmony_ci #size-cells = <1>; 36862306a36Sopenharmony_ci reg = <0x26000 0x2000>; 36962306a36Sopenharmony_ci ranges = <0x00 0x26000 0x2000>; 37062306a36Sopenharmony_ci 37162306a36Sopenharmony_ci clocks { 37262306a36Sopenharmony_ci #address-cells = <1>; 37362306a36Sopenharmony_ci #size-cells = <0>; 37462306a36Sopenharmony_ci 37562306a36Sopenharmony_ci pruss_iepclk_mux: iepclk-mux@30 { 37662306a36Sopenharmony_ci reg = <0x30>; 37762306a36Sopenharmony_ci #clock-cells = <0>; 37862306a36Sopenharmony_ci clocks = <&l3_gclk>, /* icss_iep */ 37962306a36Sopenharmony_ci <&pruss_ocp_gclk>; /* icss_ocp */ 38062306a36Sopenharmony_ci }; 38162306a36Sopenharmony_ci }; 38262306a36Sopenharmony_ci }; 38362306a36Sopenharmony_ci 38462306a36Sopenharmony_ci pruss_mii_rt: mii-rt@32000 { 38562306a36Sopenharmony_ci compatible = "ti,pruss-mii", "syscon"; 38662306a36Sopenharmony_ci reg = <0x32000 0x58>; 38762306a36Sopenharmony_ci }; 38862306a36Sopenharmony_ci 38962306a36Sopenharmony_ci pruss_intc: interrupt-controller@20000 { 39062306a36Sopenharmony_ci compatible = "ti,pruss-intc"; 39162306a36Sopenharmony_ci reg = <0x20000 0x2000>; 39262306a36Sopenharmony_ci interrupt-controller; 39362306a36Sopenharmony_ci #interrupt-cells = <3>; 39462306a36Sopenharmony_ci interrupts = <20 21 22 23 24 25 26 27>; 39562306a36Sopenharmony_ci interrupt-names = "host_intr0", "host_intr1", 39662306a36Sopenharmony_ci "host_intr2", "host_intr3", 39762306a36Sopenharmony_ci "host_intr4", "host_intr5", 39862306a36Sopenharmony_ci "host_intr6", "host_intr7"; 39962306a36Sopenharmony_ci }; 40062306a36Sopenharmony_ci 40162306a36Sopenharmony_ci pru0: pru@34000 { 40262306a36Sopenharmony_ci compatible = "ti,am3356-pru"; 40362306a36Sopenharmony_ci reg = <0x34000 0x2000>, 40462306a36Sopenharmony_ci <0x22000 0x400>, 40562306a36Sopenharmony_ci <0x22400 0x100>; 40662306a36Sopenharmony_ci reg-names = "iram", "control", "debug"; 40762306a36Sopenharmony_ci firmware-name = "am335x-pru0-fw"; 40862306a36Sopenharmony_ci }; 40962306a36Sopenharmony_ci 41062306a36Sopenharmony_ci pru1: pru@38000 { 41162306a36Sopenharmony_ci compatible = "ti,am3356-pru"; 41262306a36Sopenharmony_ci reg = <0x38000 0x2000>, 41362306a36Sopenharmony_ci <0x24000 0x400>, 41462306a36Sopenharmony_ci <0x24400 0x100>; 41562306a36Sopenharmony_ci reg-names = "iram", "control", "debug"; 41662306a36Sopenharmony_ci firmware-name = "am335x-pru1-fw"; 41762306a36Sopenharmony_ci }; 41862306a36Sopenharmony_ci 41962306a36Sopenharmony_ci pruss_mdio: mdio@32400 { 42062306a36Sopenharmony_ci compatible = "ti,davinci_mdio"; 42162306a36Sopenharmony_ci reg = <0x32400 0x90>; 42262306a36Sopenharmony_ci clocks = <&dpll_core_m4_ck>; 42362306a36Sopenharmony_ci clock-names = "fck"; 42462306a36Sopenharmony_ci bus_freq = <1000000>; 42562306a36Sopenharmony_ci #address-cells = <1>; 42662306a36Sopenharmony_ci #size-cells = <0>; 42762306a36Sopenharmony_ci }; 42862306a36Sopenharmony_ci }; 42962306a36Sopenharmony_ci 43062306a36Sopenharmony_ci - | 43162306a36Sopenharmony_ci 43262306a36Sopenharmony_ci /* Example 2 AM43xx PRU-ICSS with PRUSS1 node */ 43362306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/arm-gic.h> 43462306a36Sopenharmony_ci pruss1: pruss@0 { 43562306a36Sopenharmony_ci compatible = "ti,am4376-pruss1"; 43662306a36Sopenharmony_ci reg = <0x0 0x40000>; 43762306a36Sopenharmony_ci #address-cells = <1>; 43862306a36Sopenharmony_ci #size-cells = <1>; 43962306a36Sopenharmony_ci ranges; 44062306a36Sopenharmony_ci 44162306a36Sopenharmony_ci pruss1_mem: memories@0 { 44262306a36Sopenharmony_ci reg = <0x0 0x2000>, 44362306a36Sopenharmony_ci <0x2000 0x2000>, 44462306a36Sopenharmony_ci <0x10000 0x8000>; 44562306a36Sopenharmony_ci reg-names = "dram0", "dram1", "shrdram2"; 44662306a36Sopenharmony_ci }; 44762306a36Sopenharmony_ci 44862306a36Sopenharmony_ci pruss1_cfg: cfg@26000 { 44962306a36Sopenharmony_ci compatible = "ti,pruss-cfg", "syscon"; 45062306a36Sopenharmony_ci #address-cells = <1>; 45162306a36Sopenharmony_ci #size-cells = <1>; 45262306a36Sopenharmony_ci reg = <0x26000 0x2000>; 45362306a36Sopenharmony_ci ranges = <0x00 0x26000 0x2000>; 45462306a36Sopenharmony_ci 45562306a36Sopenharmony_ci clocks { 45662306a36Sopenharmony_ci #address-cells = <1>; 45762306a36Sopenharmony_ci #size-cells = <0>; 45862306a36Sopenharmony_ci 45962306a36Sopenharmony_ci pruss1_iepclk_mux: iepclk-mux@30 { 46062306a36Sopenharmony_ci reg = <0x30>; 46162306a36Sopenharmony_ci #clock-cells = <0>; 46262306a36Sopenharmony_ci clocks = <&sysclk_div>, /* icss_iep */ 46362306a36Sopenharmony_ci <&pruss_ocp_gclk>; /* icss_ocp */ 46462306a36Sopenharmony_ci }; 46562306a36Sopenharmony_ci }; 46662306a36Sopenharmony_ci }; 46762306a36Sopenharmony_ci 46862306a36Sopenharmony_ci pruss1_mii_rt: mii-rt@32000 { 46962306a36Sopenharmony_ci compatible = "ti,pruss-mii", "syscon"; 47062306a36Sopenharmony_ci reg = <0x32000 0x58>; 47162306a36Sopenharmony_ci }; 47262306a36Sopenharmony_ci 47362306a36Sopenharmony_ci pruss1_intc: interrupt-controller@20000 { 47462306a36Sopenharmony_ci compatible = "ti,pruss-intc"; 47562306a36Sopenharmony_ci reg = <0x20000 0x2000>; 47662306a36Sopenharmony_ci interrupt-controller; 47762306a36Sopenharmony_ci #interrupt-cells = <3>; 47862306a36Sopenharmony_ci interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>, 47962306a36Sopenharmony_ci <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>, 48062306a36Sopenharmony_ci <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>, 48162306a36Sopenharmony_ci <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>, 48262306a36Sopenharmony_ci <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>, 48362306a36Sopenharmony_ci <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>, 48462306a36Sopenharmony_ci <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>; 48562306a36Sopenharmony_ci interrupt-names = "host_intr0", "host_intr1", 48662306a36Sopenharmony_ci "host_intr2", "host_intr3", 48762306a36Sopenharmony_ci "host_intr4", 48862306a36Sopenharmony_ci "host_intr6", "host_intr7"; 48962306a36Sopenharmony_ci ti,irqs-reserved = /bits/ 8 <0x20>; /* BIT(5) */ 49062306a36Sopenharmony_ci }; 49162306a36Sopenharmony_ci 49262306a36Sopenharmony_ci pru1_0: pru@34000 { 49362306a36Sopenharmony_ci compatible = "ti,am4376-pru"; 49462306a36Sopenharmony_ci reg = <0x34000 0x3000>, 49562306a36Sopenharmony_ci <0x22000 0x400>, 49662306a36Sopenharmony_ci <0x22400 0x100>; 49762306a36Sopenharmony_ci reg-names = "iram", "control", "debug"; 49862306a36Sopenharmony_ci firmware-name = "am437x-pru1_0-fw"; 49962306a36Sopenharmony_ci }; 50062306a36Sopenharmony_ci 50162306a36Sopenharmony_ci pru1_1: pru@38000 { 50262306a36Sopenharmony_ci compatible = "ti,am4376-pru"; 50362306a36Sopenharmony_ci reg = <0x38000 0x3000>, 50462306a36Sopenharmony_ci <0x24000 0x400>, 50562306a36Sopenharmony_ci <0x24400 0x100>; 50662306a36Sopenharmony_ci reg-names = "iram", "control", "debug"; 50762306a36Sopenharmony_ci firmware-name = "am437x-pru1_1-fw"; 50862306a36Sopenharmony_ci }; 50962306a36Sopenharmony_ci 51062306a36Sopenharmony_ci pruss1_mdio: mdio@32400 { 51162306a36Sopenharmony_ci compatible = "ti,davinci_mdio"; 51262306a36Sopenharmony_ci reg = <0x32400 0x90>; 51362306a36Sopenharmony_ci clocks = <&dpll_core_m4_ck>; 51462306a36Sopenharmony_ci clock-names = "fck"; 51562306a36Sopenharmony_ci bus_freq = <1000000>; 51662306a36Sopenharmony_ci #address-cells = <1>; 51762306a36Sopenharmony_ci #size-cells = <0>; 51862306a36Sopenharmony_ci }; 51962306a36Sopenharmony_ci }; 52062306a36Sopenharmony_ci 52162306a36Sopenharmony_ci... 522