244 lines · yaml
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)2%YAML 1.23---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) cores8 9maintainers:10 - Suman Anna <s-anna@ti.com>11 12description: |13 Each Programmable Real-Time Unit and Industrial Communication Subsystem14 (PRU-ICSS or PRUSS) has two 32-bit load/store RISC CPU cores called15 Programmable Real-Time Units (PRUs), each represented by a node. Each PRU16 core has a dedicated Instruction RAM, Control and Debug register sets, and17 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 Auxiliary20 PRU cores called RTUs with slightly different IP integration. The K3 SoCs21 containing the revised ICSSG v1.1 (eg: J721E, AM65x SR2.0) have an extra two22 auxiliary Transmit PRU cores called Tx_PRUs that augment the PRUs. Each RTU23 or Tx_PRU core can also be used independently like a PRU, or alongside a24 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 the27 corresponding PRU-ICSS node. Each node can optionally be rendered inactive by28 using the standard DT string property, "status".29 30 Please see the overall PRU-ICSS bindings document for additional details31 including a complete example,32 Documentation/devicetree/bindings/soc/ti/ti,pruss.yaml33 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 family40 - ti,am625-pru # for PRUs in K3 AM62x SoC family41 - ti,am642-pru # for PRUs in K3 AM64x SoC family42 - ti,am642-rtu # for RTUs in K3 AM64x SoC family43 - ti,am642-tx-pru # for Tx_PRUs in K3 AM64x SoC family44 - ti,am654-pru # for PRUs in K3 AM65x SoC family45 - ti,am654-rtu # for RTUs in K3 AM65x SoC family46 - ti,am654-tx-pru # for Tx_PRUs in K3 AM65x SR2.0 SoCs47 - ti,j721e-pru # for PRUs in K3 J721E SoC family48 - ti,j721e-rtu # for RTUs in K3 J721E SoC family49 - ti,j721e-tx-pru # for Tx_PRUs in K3 J721E SoC family50 - ti,k2g-pru # for 66AK2G SoC family51 52 reg:53 items:54 - description: Address and Size of the PRU Instruction RAM55 - description: Address and Size of the PRU CTRL sub-module registers56 - description: Address and Size of the PRU Debug sub-module registers57 58 reg-names:59 items:60 - const: iram61 - const: control62 - const: debug63 64 firmware-name:65 description: |66 Should contain the name of the default firmware image67 file located on the firmware search path.68 69 interrupts:70 maxItems: 171 description:72 Interrupt specifiers enable the virtio/rpmsg communication between MPU73 and the PRU/RTU cores. For the values of the interrupt cells please refer74 to interrupt-controller/ti,pruss-intc.yaml schema.75 76 interrupt-names:77 items:78 - const: vring79 80if:81 properties:82 compatible:83 enum:84 - ti,am654-rtu85 - ti,j721e-rtu86 - ti,am642-rtu87then:88 properties:89 $nodename:90 pattern: "^rtu@[0-9a-f]+$"91else:92 if:93 properties:94 compatible:95 enum:96 - ti,am654-tx-pru97 - ti,j721e-tx-pru98 - ti,am642-tx-pru99 then:100 properties:101 $nodename:102 pattern: "^txpru@[0-9a-f]+"103 else:104 properties:105 $nodename:106 pattern: "^pru@[0-9a-f]+$"107 108required:109 - compatible110 - reg111 - reg-names112 - firmware-name113 114additionalProperties: false115 116examples:117 - |118 /* AM33xx PRU-ICSS */119 pruss_tm: target-module@300000 { /* 0x4a300000, ap 9 04.0 */120 compatible = "ti,sysc-pruss", "ti,sysc";121 #address-cells = <1>;122 #size-cells = <1>;123 ranges = <0x0 0x300000 0x80000>;124 125 pruss: pruss@0 {126 compatible = "ti,am3356-pruss";127 reg = <0x0 0x80000>;128 #address-cells = <1>;129 #size-cells = <1>;130 ranges;131 132 pruss_mem: memories@0 {133 reg = <0x0 0x2000>,134 <0x2000 0x2000>,135 <0x10000 0x3000>;136 reg-names = "dram0", "dram1", "shrdram2";137 };138 139 pru0: pru@34000 {140 compatible = "ti,am3356-pru";141 reg = <0x34000 0x2000>,142 <0x22000 0x400>,143 <0x22400 0x100>;144 reg-names = "iram", "control", "debug";145 firmware-name = "am335x-pru0-fw";146 };147 148 pru1: pru@38000 {149 compatible = "ti,am3356-pru";150 reg = <0x38000 0x2000>,151 <0x24000 0x400>,152 <0x24400 0x100>;153 reg-names = "iram", "control", "debug";154 firmware-name = "am335x-pru1-fw";155 };156 };157 };158 159 - |160 /* AM65x SR2.0 ICSSG */161 #include <dt-bindings/soc/ti,sci_pm_domain.h>162 163 icssg0: icssg@b000000 {164 compatible = "ti,am654-icssg";165 reg = <0xb000000 0x80000>;166 power-domains = <&k3_pds 62 TI_SCI_PD_EXCLUSIVE>;167 #address-cells = <1>;168 #size-cells = <1>;169 ranges = <0x0 0xb000000 0x80000>;170 171 icssg0_mem: memories@0 {172 reg = <0x0 0x2000>,173 <0x2000 0x2000>,174 <0x10000 0x10000>;175 reg-names = "dram0", "dram1", "shrdram2";176 };177 178 pru0_0: pru@34000 {179 compatible = "ti,am654-pru";180 reg = <0x34000 0x4000>,181 <0x22000 0x100>,182 <0x22400 0x100>;183 reg-names = "iram", "control", "debug";184 firmware-name = "am65x-pru0_0-fw";185 interrupt-parent = <&icssg0_intc>;186 interrupts = <16 2 2>;187 interrupt-names = "vring";188 };189 190 rtu0_0: rtu@4000 {191 compatible = "ti,am654-rtu";192 reg = <0x4000 0x2000>,193 <0x23000 0x100>,194 <0x23400 0x100>;195 reg-names = "iram", "control", "debug";196 firmware-name = "am65x-rtu0_0-fw";197 interrupt-parent = <&icssg0_intc>;198 interrupts = <20 4 4>;199 interrupt-names = "vring";200 };201 202 tx_pru0_0: txpru@a000 {203 compatible = "ti,am654-tx-pru";204 reg = <0xa000 0x1800>,205 <0x25000 0x100>,206 <0x25400 0x100>;207 reg-names = "iram", "control", "debug";208 firmware-name = "am65x-txpru0_0-fw";209 };210 211 pru0_1: pru@38000 {212 compatible = "ti,am654-pru";213 reg = <0x38000 0x4000>,214 <0x24000 0x100>,215 <0x24400 0x100>;216 reg-names = "iram", "control", "debug";217 firmware-name = "am65x-pru0_1-fw";218 interrupt-parent = <&icssg0_intc>;219 interrupts = <18 3 3>;220 interrupt-names = "vring";221 };222 223 rtu0_1: rtu@6000 {224 compatible = "ti,am654-rtu";225 reg = <0x6000 0x2000>,226 <0x23800 0x100>,227 <0x23c00 0x100>;228 reg-names = "iram", "control", "debug";229 firmware-name = "am65x-rtu0_1-fw";230 interrupt-parent = <&icssg0_intc>;231 interrupts = <22 5 5>;232 interrupt-names = "vring";233 };234 235 tx_pru0_1: txpru@c000 {236 compatible = "ti,am654-tx-pru";237 reg = <0xc000 0x1800>,238 <0x25800 0x100>,239 <0x25c00 0x100>;240 reg-names = "iram", "control", "debug";241 firmware-name = "am65x-txpru0_1-fw";242 };243 };244