1aa1a8ff2SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 25def4c47SEmmanuel Vadot%YAML 1.2 35def4c47SEmmanuel Vadot--- 45def4c47SEmmanuel Vadot$id: http://devicetree.org/schemas/remoteproc/ti,pru-rproc.yaml# 55def4c47SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 65def4c47SEmmanuel Vadot 75def4c47SEmmanuel Vadottitle: TI Programmable Realtime Unit (PRU) cores 85def4c47SEmmanuel Vadot 95def4c47SEmmanuel Vadotmaintainers: 105def4c47SEmmanuel Vadot - Suman Anna <s-anna@ti.com> 115def4c47SEmmanuel Vadot 125def4c47SEmmanuel Vadotdescription: | 135def4c47SEmmanuel Vadot Each Programmable Real-Time Unit and Industrial Communication Subsystem 145def4c47SEmmanuel Vadot (PRU-ICSS or PRUSS) has two 32-bit load/store RISC CPU cores called 155def4c47SEmmanuel Vadot Programmable Real-Time Units (PRUs), each represented by a node. Each PRU 165def4c47SEmmanuel Vadot core has a dedicated Instruction RAM, Control and Debug register sets, and 175def4c47SEmmanuel Vadot use the Data RAMs present within the PRU-ICSS for code execution. 185def4c47SEmmanuel Vadot 195def4c47SEmmanuel Vadot The K3 SoCs containing ICSSG v1.0 (eg: AM65x SR1.0) also have two Auxiliary 205def4c47SEmmanuel Vadot PRU cores called RTUs with slightly different IP integration. The K3 SoCs 215def4c47SEmmanuel Vadot containing the revised ICSSG v1.1 (eg: J721E, AM65x SR2.0) have an extra two 225def4c47SEmmanuel Vadot auxiliary Transmit PRU cores called Tx_PRUs that augment the PRUs. Each RTU 235def4c47SEmmanuel Vadot or Tx_PRU core can also be used independently like a PRU, or alongside a 245def4c47SEmmanuel Vadot corresponding PRU core to provide/implement auxiliary functionality/support. 255def4c47SEmmanuel Vadot 265def4c47SEmmanuel Vadot Each PRU, RTU or Tx_PRU core node should be defined as a child node of the 275def4c47SEmmanuel Vadot corresponding PRU-ICSS node. Each node can optionally be rendered inactive by 285def4c47SEmmanuel Vadot using the standard DT string property, "status". 295def4c47SEmmanuel Vadot 305def4c47SEmmanuel Vadot Please see the overall PRU-ICSS bindings document for additional details 315def4c47SEmmanuel Vadot including a complete example, 325def4c47SEmmanuel Vadot Documentation/devicetree/bindings/soc/ti/ti,pruss.yaml 335def4c47SEmmanuel Vadot 345def4c47SEmmanuel Vadotproperties: 355def4c47SEmmanuel Vadot compatible: 365def4c47SEmmanuel Vadot enum: 375def4c47SEmmanuel Vadot - ti,am3356-pru # for AM335x SoC family (AM3356+ SoCs only) 385def4c47SEmmanuel Vadot - ti,am4376-pru # for AM437x SoC family (AM4376+ SoCs only) 39b97ee269SEmmanuel Vadot - ti,am5728-pru # for AM57xx SoC family 40b97ee269SEmmanuel Vadot - ti,am625-pru # for PRUs in K3 AM62x SoC family 415956d97fSEmmanuel Vadot - ti,am642-pru # for PRUs in K3 AM64x SoC family 425956d97fSEmmanuel Vadot - ti,am642-rtu # for RTUs in K3 AM64x SoC family 435956d97fSEmmanuel Vadot - ti,am642-tx-pru # for Tx_PRUs in K3 AM64x SoC family 445def4c47SEmmanuel Vadot - ti,am654-pru # for PRUs in K3 AM65x SoC family 455def4c47SEmmanuel Vadot - ti,am654-rtu # for RTUs in K3 AM65x SoC family 465def4c47SEmmanuel Vadot - ti,am654-tx-pru # for Tx_PRUs in K3 AM65x SR2.0 SoCs 475def4c47SEmmanuel Vadot - ti,j721e-pru # for PRUs in K3 J721E SoC family 485def4c47SEmmanuel Vadot - ti,j721e-rtu # for RTUs in K3 J721E SoC family 495def4c47SEmmanuel Vadot - ti,j721e-tx-pru # for Tx_PRUs in K3 J721E SoC family 50b97ee269SEmmanuel Vadot - ti,k2g-pru # for 66AK2G SoC family 515def4c47SEmmanuel Vadot 525def4c47SEmmanuel Vadot reg: 535def4c47SEmmanuel Vadot items: 545def4c47SEmmanuel Vadot - description: Address and Size of the PRU Instruction RAM 555def4c47SEmmanuel Vadot - description: Address and Size of the PRU CTRL sub-module registers 565def4c47SEmmanuel Vadot - description: Address and Size of the PRU Debug sub-module registers 575def4c47SEmmanuel Vadot 585def4c47SEmmanuel Vadot reg-names: 595def4c47SEmmanuel Vadot items: 605def4c47SEmmanuel Vadot - const: iram 615def4c47SEmmanuel Vadot - const: control 625def4c47SEmmanuel Vadot - const: debug 635def4c47SEmmanuel Vadot 645def4c47SEmmanuel Vadot firmware-name: 655def4c47SEmmanuel Vadot description: | 665def4c47SEmmanuel Vadot Should contain the name of the default firmware image 675def4c47SEmmanuel Vadot file located on the firmware search path. 685def4c47SEmmanuel Vadot 69*84943d6fSEmmanuel Vadot interrupts: 70*84943d6fSEmmanuel Vadot maxItems: 1 71*84943d6fSEmmanuel Vadot description: 72*84943d6fSEmmanuel Vadot Interrupt specifiers enable the virtio/rpmsg communication between MPU 73*84943d6fSEmmanuel Vadot and the PRU/RTU cores. For the values of the interrupt cells please refer 74*84943d6fSEmmanuel Vadot to interrupt-controller/ti,pruss-intc.yaml schema. 75*84943d6fSEmmanuel Vadot 76*84943d6fSEmmanuel Vadot interrupt-names: 77*84943d6fSEmmanuel Vadot items: 78*84943d6fSEmmanuel Vadot - const: vring 79*84943d6fSEmmanuel Vadot 805def4c47SEmmanuel Vadotif: 815def4c47SEmmanuel Vadot properties: 825def4c47SEmmanuel Vadot compatible: 835def4c47SEmmanuel Vadot enum: 845def4c47SEmmanuel Vadot - ti,am654-rtu 855def4c47SEmmanuel Vadot - ti,j721e-rtu 865956d97fSEmmanuel Vadot - ti,am642-rtu 875def4c47SEmmanuel Vadotthen: 885def4c47SEmmanuel Vadot properties: 895def4c47SEmmanuel Vadot $nodename: 905def4c47SEmmanuel Vadot pattern: "^rtu@[0-9a-f]+$" 915def4c47SEmmanuel Vadotelse: 925def4c47SEmmanuel Vadot if: 935def4c47SEmmanuel Vadot properties: 945def4c47SEmmanuel Vadot compatible: 955def4c47SEmmanuel Vadot enum: 965def4c47SEmmanuel Vadot - ti,am654-tx-pru 975def4c47SEmmanuel Vadot - ti,j721e-tx-pru 985956d97fSEmmanuel Vadot - ti,am642-tx-pru 995def4c47SEmmanuel Vadot then: 1005def4c47SEmmanuel Vadot properties: 1015def4c47SEmmanuel Vadot $nodename: 1025def4c47SEmmanuel Vadot pattern: "^txpru@[0-9a-f]+" 1035def4c47SEmmanuel Vadot else: 1045def4c47SEmmanuel Vadot properties: 1055def4c47SEmmanuel Vadot $nodename: 1065def4c47SEmmanuel Vadot pattern: "^pru@[0-9a-f]+$" 1075def4c47SEmmanuel Vadot 1085def4c47SEmmanuel Vadotrequired: 1095def4c47SEmmanuel Vadot - compatible 1105def4c47SEmmanuel Vadot - reg 1115def4c47SEmmanuel Vadot - reg-names 1125def4c47SEmmanuel Vadot - firmware-name 1135def4c47SEmmanuel Vadot 1145def4c47SEmmanuel VadotadditionalProperties: false 1155def4c47SEmmanuel Vadot 1165def4c47SEmmanuel Vadotexamples: 1175def4c47SEmmanuel Vadot - | 1185def4c47SEmmanuel Vadot /* AM33xx PRU-ICSS */ 1195def4c47SEmmanuel Vadot pruss_tm: target-module@300000 { /* 0x4a300000, ap 9 04.0 */ 1205def4c47SEmmanuel Vadot compatible = "ti,sysc-pruss", "ti,sysc"; 1215def4c47SEmmanuel Vadot #address-cells = <1>; 1225def4c47SEmmanuel Vadot #size-cells = <1>; 1235def4c47SEmmanuel Vadot ranges = <0x0 0x300000 0x80000>; 1245def4c47SEmmanuel Vadot 1255def4c47SEmmanuel Vadot pruss: pruss@0 { 1265def4c47SEmmanuel Vadot compatible = "ti,am3356-pruss"; 1275def4c47SEmmanuel Vadot reg = <0x0 0x80000>; 1285def4c47SEmmanuel Vadot #address-cells = <1>; 1295def4c47SEmmanuel Vadot #size-cells = <1>; 1305def4c47SEmmanuel Vadot ranges; 1315def4c47SEmmanuel Vadot 1325def4c47SEmmanuel Vadot pruss_mem: memories@0 { 1335def4c47SEmmanuel Vadot reg = <0x0 0x2000>, 1345def4c47SEmmanuel Vadot <0x2000 0x2000>, 1355def4c47SEmmanuel Vadot <0x10000 0x3000>; 1365def4c47SEmmanuel Vadot reg-names = "dram0", "dram1", "shrdram2"; 1375def4c47SEmmanuel Vadot }; 1385def4c47SEmmanuel Vadot 1395def4c47SEmmanuel Vadot pru0: pru@34000 { 1405def4c47SEmmanuel Vadot compatible = "ti,am3356-pru"; 1415def4c47SEmmanuel Vadot reg = <0x34000 0x2000>, 1425def4c47SEmmanuel Vadot <0x22000 0x400>, 1435def4c47SEmmanuel Vadot <0x22400 0x100>; 1445def4c47SEmmanuel Vadot reg-names = "iram", "control", "debug"; 1455def4c47SEmmanuel Vadot firmware-name = "am335x-pru0-fw"; 1465def4c47SEmmanuel Vadot }; 1475def4c47SEmmanuel Vadot 1485def4c47SEmmanuel Vadot pru1: pru@38000 { 1495def4c47SEmmanuel Vadot compatible = "ti,am3356-pru"; 1505def4c47SEmmanuel Vadot reg = <0x38000 0x2000>, 1515def4c47SEmmanuel Vadot <0x24000 0x400>, 1525def4c47SEmmanuel Vadot <0x24400 0x100>; 1535def4c47SEmmanuel Vadot reg-names = "iram", "control", "debug"; 1545def4c47SEmmanuel Vadot firmware-name = "am335x-pru1-fw"; 1555def4c47SEmmanuel Vadot }; 1565def4c47SEmmanuel Vadot }; 1575def4c47SEmmanuel Vadot }; 1585def4c47SEmmanuel Vadot 1595def4c47SEmmanuel Vadot - | 1605def4c47SEmmanuel Vadot /* AM65x SR2.0 ICSSG */ 1615def4c47SEmmanuel Vadot #include <dt-bindings/soc/ti,sci_pm_domain.h> 1625def4c47SEmmanuel Vadot 1635def4c47SEmmanuel Vadot icssg0: icssg@b000000 { 1645def4c47SEmmanuel Vadot compatible = "ti,am654-icssg"; 1655def4c47SEmmanuel Vadot reg = <0xb000000 0x80000>; 1665def4c47SEmmanuel Vadot power-domains = <&k3_pds 62 TI_SCI_PD_EXCLUSIVE>; 1675def4c47SEmmanuel Vadot #address-cells = <1>; 1685def4c47SEmmanuel Vadot #size-cells = <1>; 1695def4c47SEmmanuel Vadot ranges = <0x0 0xb000000 0x80000>; 1705def4c47SEmmanuel Vadot 1715def4c47SEmmanuel Vadot icssg0_mem: memories@0 { 1725def4c47SEmmanuel Vadot reg = <0x0 0x2000>, 1735def4c47SEmmanuel Vadot <0x2000 0x2000>, 1745def4c47SEmmanuel Vadot <0x10000 0x10000>; 1755def4c47SEmmanuel Vadot reg-names = "dram0", "dram1", "shrdram2"; 1765def4c47SEmmanuel Vadot }; 1775def4c47SEmmanuel Vadot 1785def4c47SEmmanuel Vadot pru0_0: pru@34000 { 1795def4c47SEmmanuel Vadot compatible = "ti,am654-pru"; 1805def4c47SEmmanuel Vadot reg = <0x34000 0x4000>, 1815def4c47SEmmanuel Vadot <0x22000 0x100>, 1825def4c47SEmmanuel Vadot <0x22400 0x100>; 1835def4c47SEmmanuel Vadot reg-names = "iram", "control", "debug"; 1845def4c47SEmmanuel Vadot firmware-name = "am65x-pru0_0-fw"; 185*84943d6fSEmmanuel Vadot interrupt-parent = <&icssg0_intc>; 186*84943d6fSEmmanuel Vadot interrupts = <16 2 2>; 187*84943d6fSEmmanuel Vadot interrupt-names = "vring"; 1885def4c47SEmmanuel Vadot }; 1895def4c47SEmmanuel Vadot 1905def4c47SEmmanuel Vadot rtu0_0: rtu@4000 { 1915def4c47SEmmanuel Vadot compatible = "ti,am654-rtu"; 1925def4c47SEmmanuel Vadot reg = <0x4000 0x2000>, 1935def4c47SEmmanuel Vadot <0x23000 0x100>, 1945def4c47SEmmanuel Vadot <0x23400 0x100>; 1955def4c47SEmmanuel Vadot reg-names = "iram", "control", "debug"; 1965def4c47SEmmanuel Vadot firmware-name = "am65x-rtu0_0-fw"; 197*84943d6fSEmmanuel Vadot interrupt-parent = <&icssg0_intc>; 198*84943d6fSEmmanuel Vadot interrupts = <20 4 4>; 199*84943d6fSEmmanuel Vadot interrupt-names = "vring"; 2005def4c47SEmmanuel Vadot }; 2015def4c47SEmmanuel Vadot 2025def4c47SEmmanuel Vadot tx_pru0_0: txpru@a000 { 2035def4c47SEmmanuel Vadot compatible = "ti,am654-tx-pru"; 2045def4c47SEmmanuel Vadot reg = <0xa000 0x1800>, 2055def4c47SEmmanuel Vadot <0x25000 0x100>, 2065def4c47SEmmanuel Vadot <0x25400 0x100>; 2075def4c47SEmmanuel Vadot reg-names = "iram", "control", "debug"; 2085def4c47SEmmanuel Vadot firmware-name = "am65x-txpru0_0-fw"; 2095def4c47SEmmanuel Vadot }; 2105def4c47SEmmanuel Vadot 2115def4c47SEmmanuel Vadot pru0_1: pru@38000 { 2125def4c47SEmmanuel Vadot compatible = "ti,am654-pru"; 2135def4c47SEmmanuel Vadot reg = <0x38000 0x4000>, 2145def4c47SEmmanuel Vadot <0x24000 0x100>, 2155def4c47SEmmanuel Vadot <0x24400 0x100>; 2165def4c47SEmmanuel Vadot reg-names = "iram", "control", "debug"; 2175def4c47SEmmanuel Vadot firmware-name = "am65x-pru0_1-fw"; 218*84943d6fSEmmanuel Vadot interrupt-parent = <&icssg0_intc>; 219*84943d6fSEmmanuel Vadot interrupts = <18 3 3>; 220*84943d6fSEmmanuel Vadot interrupt-names = "vring"; 2215def4c47SEmmanuel Vadot }; 2225def4c47SEmmanuel Vadot 2235def4c47SEmmanuel Vadot rtu0_1: rtu@6000 { 2245def4c47SEmmanuel Vadot compatible = "ti,am654-rtu"; 2255def4c47SEmmanuel Vadot reg = <0x6000 0x2000>, 2265def4c47SEmmanuel Vadot <0x23800 0x100>, 2275def4c47SEmmanuel Vadot <0x23c00 0x100>; 2285def4c47SEmmanuel Vadot reg-names = "iram", "control", "debug"; 2295def4c47SEmmanuel Vadot firmware-name = "am65x-rtu0_1-fw"; 230*84943d6fSEmmanuel Vadot interrupt-parent = <&icssg0_intc>; 231*84943d6fSEmmanuel Vadot interrupts = <22 5 5>; 232*84943d6fSEmmanuel Vadot interrupt-names = "vring"; 2335def4c47SEmmanuel Vadot }; 2345def4c47SEmmanuel Vadot 2355def4c47SEmmanuel Vadot tx_pru0_1: txpru@c000 { 2365def4c47SEmmanuel Vadot compatible = "ti,am654-tx-pru"; 2375def4c47SEmmanuel Vadot reg = <0xc000 0x1800>, 2385def4c47SEmmanuel Vadot <0x25800 0x100>, 2395def4c47SEmmanuel Vadot <0x25c00 0x100>; 2405def4c47SEmmanuel Vadot reg-names = "iram", "control", "debug"; 2415def4c47SEmmanuel Vadot firmware-name = "am65x-txpru0_1-fw"; 2425def4c47SEmmanuel Vadot }; 2435def4c47SEmmanuel Vadot }; 244