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 7title: TI Programmable Realtime Unit (PRU) cores 8 9maintainers: 10 - Suman Anna <s-anna@ti.com> 11 12description: | 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 34properties: 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 65if: 66 properties: 67 compatible: 68 enum: 69 - ti,am654-rtu 70 - ti,j721e-rtu 71then: 72 properties: 73 $nodename: 74 pattern: "^rtu@[0-9a-f]+$" 75else: 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 91required: 92 - compatible 93 - reg 94 - reg-names 95 - firmware-name 96 97additionalProperties: false 98 99examples: 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 }; 215