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/remoteproc/ti,pru-rproc.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: TI Programmable Realtime Unit (PRU) cores 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Suman Anna <s-anna@ti.com> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: | 1362306a36Sopenharmony_ci Each Programmable Real-Time Unit and Industrial Communication Subsystem 1462306a36Sopenharmony_ci (PRU-ICSS or PRUSS) has two 32-bit load/store RISC CPU cores called 1562306a36Sopenharmony_ci Programmable Real-Time Units (PRUs), each represented by a node. Each PRU 1662306a36Sopenharmony_ci core has a dedicated Instruction RAM, Control and Debug register sets, and 1762306a36Sopenharmony_ci use the Data RAMs present within the PRU-ICSS for code execution. 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci The K3 SoCs containing ICSSG v1.0 (eg: AM65x SR1.0) also have two Auxiliary 2062306a36Sopenharmony_ci PRU cores called RTUs with slightly different IP integration. The K3 SoCs 2162306a36Sopenharmony_ci containing the revised ICSSG v1.1 (eg: J721E, AM65x SR2.0) have an extra two 2262306a36Sopenharmony_ci auxiliary Transmit PRU cores called Tx_PRUs that augment the PRUs. Each RTU 2362306a36Sopenharmony_ci or Tx_PRU core can also be used independently like a PRU, or alongside a 2462306a36Sopenharmony_ci corresponding PRU core to provide/implement auxiliary functionality/support. 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci Each PRU, RTU or Tx_PRU core node should be defined as a child node of the 2762306a36Sopenharmony_ci corresponding PRU-ICSS node. Each node can optionally be rendered inactive by 2862306a36Sopenharmony_ci using the standard DT string property, "status". 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci Please see the overall PRU-ICSS bindings document for additional details 3162306a36Sopenharmony_ci including a complete example, 3262306a36Sopenharmony_ci Documentation/devicetree/bindings/soc/ti/ti,pruss.yaml 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ciproperties: 3562306a36Sopenharmony_ci compatible: 3662306a36Sopenharmony_ci enum: 3762306a36Sopenharmony_ci - ti,am3356-pru # for AM335x SoC family (AM3356+ SoCs only) 3862306a36Sopenharmony_ci - ti,am4376-pru # for AM437x SoC family (AM4376+ SoCs only) 3962306a36Sopenharmony_ci - ti,am5728-pru # for AM57xx SoC family 4062306a36Sopenharmony_ci - ti,am625-pru # for PRUs in K3 AM62x SoC family 4162306a36Sopenharmony_ci - ti,am642-pru # for PRUs in K3 AM64x SoC family 4262306a36Sopenharmony_ci - ti,am642-rtu # for RTUs in K3 AM64x SoC family 4362306a36Sopenharmony_ci - ti,am642-tx-pru # for Tx_PRUs in K3 AM64x SoC family 4462306a36Sopenharmony_ci - ti,am654-pru # for PRUs in K3 AM65x SoC family 4562306a36Sopenharmony_ci - ti,am654-rtu # for RTUs in K3 AM65x SoC family 4662306a36Sopenharmony_ci - ti,am654-tx-pru # for Tx_PRUs in K3 AM65x SR2.0 SoCs 4762306a36Sopenharmony_ci - ti,j721e-pru # for PRUs in K3 J721E SoC family 4862306a36Sopenharmony_ci - ti,j721e-rtu # for RTUs in K3 J721E SoC family 4962306a36Sopenharmony_ci - ti,j721e-tx-pru # for Tx_PRUs in K3 J721E SoC family 5062306a36Sopenharmony_ci - ti,k2g-pru # for 66AK2G SoC family 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci reg: 5362306a36Sopenharmony_ci items: 5462306a36Sopenharmony_ci - description: Address and Size of the PRU Instruction RAM 5562306a36Sopenharmony_ci - description: Address and Size of the PRU CTRL sub-module registers 5662306a36Sopenharmony_ci - description: Address and Size of the PRU Debug sub-module registers 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci reg-names: 5962306a36Sopenharmony_ci items: 6062306a36Sopenharmony_ci - const: iram 6162306a36Sopenharmony_ci - const: control 6262306a36Sopenharmony_ci - const: debug 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci firmware-name: 6562306a36Sopenharmony_ci description: | 6662306a36Sopenharmony_ci Should contain the name of the default firmware image 6762306a36Sopenharmony_ci file located on the firmware search path. 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ciif: 7062306a36Sopenharmony_ci properties: 7162306a36Sopenharmony_ci compatible: 7262306a36Sopenharmony_ci enum: 7362306a36Sopenharmony_ci - ti,am654-rtu 7462306a36Sopenharmony_ci - ti,j721e-rtu 7562306a36Sopenharmony_ci - ti,am642-rtu 7662306a36Sopenharmony_cithen: 7762306a36Sopenharmony_ci properties: 7862306a36Sopenharmony_ci $nodename: 7962306a36Sopenharmony_ci pattern: "^rtu@[0-9a-f]+$" 8062306a36Sopenharmony_cielse: 8162306a36Sopenharmony_ci if: 8262306a36Sopenharmony_ci properties: 8362306a36Sopenharmony_ci compatible: 8462306a36Sopenharmony_ci enum: 8562306a36Sopenharmony_ci - ti,am654-tx-pru 8662306a36Sopenharmony_ci - ti,j721e-tx-pru 8762306a36Sopenharmony_ci - ti,am642-tx-pru 8862306a36Sopenharmony_ci then: 8962306a36Sopenharmony_ci properties: 9062306a36Sopenharmony_ci $nodename: 9162306a36Sopenharmony_ci pattern: "^txpru@[0-9a-f]+" 9262306a36Sopenharmony_ci else: 9362306a36Sopenharmony_ci properties: 9462306a36Sopenharmony_ci $nodename: 9562306a36Sopenharmony_ci pattern: "^pru@[0-9a-f]+$" 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_cirequired: 9862306a36Sopenharmony_ci - compatible 9962306a36Sopenharmony_ci - reg 10062306a36Sopenharmony_ci - reg-names 10162306a36Sopenharmony_ci - firmware-name 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ciadditionalProperties: false 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ciexamples: 10662306a36Sopenharmony_ci - | 10762306a36Sopenharmony_ci /* AM33xx PRU-ICSS */ 10862306a36Sopenharmony_ci pruss_tm: target-module@300000 { /* 0x4a300000, ap 9 04.0 */ 10962306a36Sopenharmony_ci compatible = "ti,sysc-pruss", "ti,sysc"; 11062306a36Sopenharmony_ci #address-cells = <1>; 11162306a36Sopenharmony_ci #size-cells = <1>; 11262306a36Sopenharmony_ci ranges = <0x0 0x300000 0x80000>; 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci pruss: pruss@0 { 11562306a36Sopenharmony_ci compatible = "ti,am3356-pruss"; 11662306a36Sopenharmony_ci reg = <0x0 0x80000>; 11762306a36Sopenharmony_ci #address-cells = <1>; 11862306a36Sopenharmony_ci #size-cells = <1>; 11962306a36Sopenharmony_ci ranges; 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci pruss_mem: memories@0 { 12262306a36Sopenharmony_ci reg = <0x0 0x2000>, 12362306a36Sopenharmony_ci <0x2000 0x2000>, 12462306a36Sopenharmony_ci <0x10000 0x3000>; 12562306a36Sopenharmony_ci reg-names = "dram0", "dram1", "shrdram2"; 12662306a36Sopenharmony_ci }; 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci pru0: pru@34000 { 12962306a36Sopenharmony_ci compatible = "ti,am3356-pru"; 13062306a36Sopenharmony_ci reg = <0x34000 0x2000>, 13162306a36Sopenharmony_ci <0x22000 0x400>, 13262306a36Sopenharmony_ci <0x22400 0x100>; 13362306a36Sopenharmony_ci reg-names = "iram", "control", "debug"; 13462306a36Sopenharmony_ci firmware-name = "am335x-pru0-fw"; 13562306a36Sopenharmony_ci }; 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ci pru1: pru@38000 { 13862306a36Sopenharmony_ci compatible = "ti,am3356-pru"; 13962306a36Sopenharmony_ci reg = <0x38000 0x2000>, 14062306a36Sopenharmony_ci <0x24000 0x400>, 14162306a36Sopenharmony_ci <0x24400 0x100>; 14262306a36Sopenharmony_ci reg-names = "iram", "control", "debug"; 14362306a36Sopenharmony_ci firmware-name = "am335x-pru1-fw"; 14462306a36Sopenharmony_ci }; 14562306a36Sopenharmony_ci }; 14662306a36Sopenharmony_ci }; 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ci - | 14962306a36Sopenharmony_ci /* AM65x SR2.0 ICSSG */ 15062306a36Sopenharmony_ci #include <dt-bindings/soc/ti,sci_pm_domain.h> 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci icssg0: icssg@b000000 { 15362306a36Sopenharmony_ci compatible = "ti,am654-icssg"; 15462306a36Sopenharmony_ci reg = <0xb000000 0x80000>; 15562306a36Sopenharmony_ci power-domains = <&k3_pds 62 TI_SCI_PD_EXCLUSIVE>; 15662306a36Sopenharmony_ci #address-cells = <1>; 15762306a36Sopenharmony_ci #size-cells = <1>; 15862306a36Sopenharmony_ci ranges = <0x0 0xb000000 0x80000>; 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci icssg0_mem: memories@0 { 16162306a36Sopenharmony_ci reg = <0x0 0x2000>, 16262306a36Sopenharmony_ci <0x2000 0x2000>, 16362306a36Sopenharmony_ci <0x10000 0x10000>; 16462306a36Sopenharmony_ci reg-names = "dram0", "dram1", "shrdram2"; 16562306a36Sopenharmony_ci }; 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci pru0_0: pru@34000 { 16862306a36Sopenharmony_ci compatible = "ti,am654-pru"; 16962306a36Sopenharmony_ci reg = <0x34000 0x4000>, 17062306a36Sopenharmony_ci <0x22000 0x100>, 17162306a36Sopenharmony_ci <0x22400 0x100>; 17262306a36Sopenharmony_ci reg-names = "iram", "control", "debug"; 17362306a36Sopenharmony_ci firmware-name = "am65x-pru0_0-fw"; 17462306a36Sopenharmony_ci }; 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci rtu0_0: rtu@4000 { 17762306a36Sopenharmony_ci compatible = "ti,am654-rtu"; 17862306a36Sopenharmony_ci reg = <0x4000 0x2000>, 17962306a36Sopenharmony_ci <0x23000 0x100>, 18062306a36Sopenharmony_ci <0x23400 0x100>; 18162306a36Sopenharmony_ci reg-names = "iram", "control", "debug"; 18262306a36Sopenharmony_ci firmware-name = "am65x-rtu0_0-fw"; 18362306a36Sopenharmony_ci }; 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ci tx_pru0_0: txpru@a000 { 18662306a36Sopenharmony_ci compatible = "ti,am654-tx-pru"; 18762306a36Sopenharmony_ci reg = <0xa000 0x1800>, 18862306a36Sopenharmony_ci <0x25000 0x100>, 18962306a36Sopenharmony_ci <0x25400 0x100>; 19062306a36Sopenharmony_ci reg-names = "iram", "control", "debug"; 19162306a36Sopenharmony_ci firmware-name = "am65x-txpru0_0-fw"; 19262306a36Sopenharmony_ci }; 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ci pru0_1: pru@38000 { 19562306a36Sopenharmony_ci compatible = "ti,am654-pru"; 19662306a36Sopenharmony_ci reg = <0x38000 0x4000>, 19762306a36Sopenharmony_ci <0x24000 0x100>, 19862306a36Sopenharmony_ci <0x24400 0x100>; 19962306a36Sopenharmony_ci reg-names = "iram", "control", "debug"; 20062306a36Sopenharmony_ci firmware-name = "am65x-pru0_1-fw"; 20162306a36Sopenharmony_ci }; 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ci rtu0_1: rtu@6000 { 20462306a36Sopenharmony_ci compatible = "ti,am654-rtu"; 20562306a36Sopenharmony_ci reg = <0x6000 0x2000>, 20662306a36Sopenharmony_ci <0x23800 0x100>, 20762306a36Sopenharmony_ci <0x23c00 0x100>; 20862306a36Sopenharmony_ci reg-names = "iram", "control", "debug"; 20962306a36Sopenharmony_ci firmware-name = "am65x-rtu0_1-fw"; 21062306a36Sopenharmony_ci }; 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci tx_pru0_1: txpru@c000 { 21362306a36Sopenharmony_ci compatible = "ti,am654-tx-pru"; 21462306a36Sopenharmony_ci reg = <0xc000 0x1800>, 21562306a36Sopenharmony_ci <0x25800 0x100>, 21662306a36Sopenharmony_ci <0x25c00 0x100>; 21762306a36Sopenharmony_ci reg-names = "iram", "control", "debug"; 21862306a36Sopenharmony_ci firmware-name = "am65x-txpru0_1-fw"; 21962306a36Sopenharmony_ci }; 22062306a36Sopenharmony_ci }; 221