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,am642-pru # for PRUs in K3 AM64x SoC family 40 - ti,am642-rtu # for RTUs in K3 AM64x SoC family 41 - ti,am642-tx-pru # for Tx_PRUs in K3 AM64x SoC family 42 - ti,am5728-pru # for AM57xx SoC family 43 - ti,k2g-pru # for 66AK2G SoC family 44 - ti,am654-pru # for PRUs in K3 AM65x SoC family 45 - ti,am654-rtu # for RTUs in K3 AM65x SoC family 46 - ti,am654-tx-pru # for Tx_PRUs in K3 AM65x SR2.0 SoCs 47 - ti,j721e-pru # for PRUs in K3 J721E SoC family 48 - ti,j721e-rtu # for RTUs in K3 J721E SoC family 49 - ti,j721e-tx-pru # for Tx_PRUs in K3 J721E SoC family 50 51 reg: 52 items: 53 - description: Address and Size of the PRU Instruction RAM 54 - description: Address and Size of the PRU CTRL sub-module registers 55 - description: Address and Size of the PRU Debug sub-module registers 56 57 reg-names: 58 items: 59 - const: iram 60 - const: control 61 - const: debug 62 63 firmware-name: 64 description: | 65 Should contain the name of the default firmware image 66 file located on the firmware search path. 67 68if: 69 properties: 70 compatible: 71 enum: 72 - ti,am654-rtu 73 - ti,j721e-rtu 74 - ti,am642-rtu 75then: 76 properties: 77 $nodename: 78 pattern: "^rtu@[0-9a-f]+$" 79else: 80 if: 81 properties: 82 compatible: 83 enum: 84 - ti,am654-tx-pru 85 - ti,j721e-tx-pru 86 - ti,am642-tx-pru 87 then: 88 properties: 89 $nodename: 90 pattern: "^txpru@[0-9a-f]+" 91 else: 92 properties: 93 $nodename: 94 pattern: "^pru@[0-9a-f]+$" 95 96required: 97 - compatible 98 - reg 99 - reg-names 100 - firmware-name 101 102additionalProperties: false 103 104examples: 105 - | 106 /* AM33xx PRU-ICSS */ 107 pruss_tm: target-module@300000 { /* 0x4a300000, ap 9 04.0 */ 108 compatible = "ti,sysc-pruss", "ti,sysc"; 109 #address-cells = <1>; 110 #size-cells = <1>; 111 ranges = <0x0 0x300000 0x80000>; 112 113 pruss: pruss@0 { 114 compatible = "ti,am3356-pruss"; 115 reg = <0x0 0x80000>; 116 #address-cells = <1>; 117 #size-cells = <1>; 118 ranges; 119 120 pruss_mem: memories@0 { 121 reg = <0x0 0x2000>, 122 <0x2000 0x2000>, 123 <0x10000 0x3000>; 124 reg-names = "dram0", "dram1", "shrdram2"; 125 }; 126 127 pru0: pru@34000 { 128 compatible = "ti,am3356-pru"; 129 reg = <0x34000 0x2000>, 130 <0x22000 0x400>, 131 <0x22400 0x100>; 132 reg-names = "iram", "control", "debug"; 133 firmware-name = "am335x-pru0-fw"; 134 }; 135 136 pru1: pru@38000 { 137 compatible = "ti,am3356-pru"; 138 reg = <0x38000 0x2000>, 139 <0x24000 0x400>, 140 <0x24400 0x100>; 141 reg-names = "iram", "control", "debug"; 142 firmware-name = "am335x-pru1-fw"; 143 }; 144 }; 145 }; 146 147 - | 148 /* AM65x SR2.0 ICSSG */ 149 #include <dt-bindings/soc/ti,sci_pm_domain.h> 150 151 icssg0: icssg@b000000 { 152 compatible = "ti,am654-icssg"; 153 reg = <0xb000000 0x80000>; 154 power-domains = <&k3_pds 62 TI_SCI_PD_EXCLUSIVE>; 155 #address-cells = <1>; 156 #size-cells = <1>; 157 ranges = <0x0 0xb000000 0x80000>; 158 159 icssg0_mem: memories@0 { 160 reg = <0x0 0x2000>, 161 <0x2000 0x2000>, 162 <0x10000 0x10000>; 163 reg-names = "dram0", "dram1", "shrdram2"; 164 }; 165 166 pru0_0: pru@34000 { 167 compatible = "ti,am654-pru"; 168 reg = <0x34000 0x4000>, 169 <0x22000 0x100>, 170 <0x22400 0x100>; 171 reg-names = "iram", "control", "debug"; 172 firmware-name = "am65x-pru0_0-fw"; 173 }; 174 175 rtu0_0: rtu@4000 { 176 compatible = "ti,am654-rtu"; 177 reg = <0x4000 0x2000>, 178 <0x23000 0x100>, 179 <0x23400 0x100>; 180 reg-names = "iram", "control", "debug"; 181 firmware-name = "am65x-rtu0_0-fw"; 182 }; 183 184 tx_pru0_0: txpru@a000 { 185 compatible = "ti,am654-tx-pru"; 186 reg = <0xa000 0x1800>, 187 <0x25000 0x100>, 188 <0x25400 0x100>; 189 reg-names = "iram", "control", "debug"; 190 firmware-name = "am65x-txpru0_0-fw"; 191 }; 192 193 pru0_1: pru@38000 { 194 compatible = "ti,am654-pru"; 195 reg = <0x38000 0x4000>, 196 <0x24000 0x100>, 197 <0x24400 0x100>; 198 reg-names = "iram", "control", "debug"; 199 firmware-name = "am65x-pru0_1-fw"; 200 }; 201 202 rtu0_1: rtu@6000 { 203 compatible = "ti,am654-rtu"; 204 reg = <0x6000 0x2000>, 205 <0x23800 0x100>, 206 <0x23c00 0x100>; 207 reg-names = "iram", "control", "debug"; 208 firmware-name = "am65x-rtu0_1-fw"; 209 }; 210 211 tx_pru0_1: txpru@c000 { 212 compatible = "ti,am654-tx-pru"; 213 reg = <0xc000 0x1800>, 214 <0x25800 0x100>, 215 <0x25c00 0x100>; 216 reg-names = "iram", "control", "debug"; 217 firmware-name = "am65x-txpru0_1-fw"; 218 }; 219 }; 220