xref: /freebsd/sys/contrib/device-tree/Bindings/remoteproc/ti,pru-rproc.yaml (revision 84943d6f38e936ac3b7a3947ca26eeb27a39f938)
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