# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/remoteproc/ti,pru-rproc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: TI Programmable Realtime Unit (PRU) cores

maintainers:
  - Suman Anna <s-anna@ti.com>

description: |
  Each Programmable Real-Time Unit and Industrial Communication Subsystem
  (PRU-ICSS or PRUSS) has two 32-bit load/store RISC CPU cores called
  Programmable Real-Time Units (PRUs), each represented by a node. Each PRU
  core has a dedicated Instruction RAM, Control and Debug register sets, and
  use the Data RAMs present within the PRU-ICSS for code execution.

  The K3 SoCs containing ICSSG v1.0 (eg: AM65x SR1.0) also have two Auxiliary
  PRU cores called RTUs with slightly different IP integration. The K3 SoCs
  containing the revised ICSSG v1.1 (eg: J721E, AM65x SR2.0) have an extra two
  auxiliary Transmit PRU cores called Tx_PRUs that augment the PRUs. Each RTU
  or Tx_PRU core can also be used independently like a PRU, or alongside a
  corresponding PRU core to provide/implement auxiliary functionality/support.

  Each PRU, RTU or Tx_PRU core node should be defined as a child node of the
  corresponding PRU-ICSS node. Each node can optionally be rendered inactive by
  using the standard DT string property, "status".

  Please see the overall PRU-ICSS bindings document for additional details
  including a complete example,
    Documentation/devicetree/bindings/soc/ti/ti,pruss.yaml

properties:
  compatible:
    enum:
      - ti,am3356-pru   # for AM335x SoC family (AM3356+ SoCs only)
      - ti,am4376-pru   # for AM437x SoC family (AM4376+ SoCs only)
      - ti,am5728-pru   # for AM57xx SoC family
      - ti,am625-pru    # for PRUs in K3 AM62x SoC family
      - ti,am642-pru    # for PRUs in K3 AM64x SoC family
      - ti,am642-rtu    # for RTUs in K3 AM64x SoC family
      - ti,am642-tx-pru # for Tx_PRUs in K3 AM64x SoC family
      - ti,am654-pru    # for PRUs in K3 AM65x SoC family
      - ti,am654-rtu    # for RTUs in K3 AM65x SoC family
      - ti,am654-tx-pru # for Tx_PRUs in K3 AM65x SR2.0 SoCs
      - ti,j721e-pru    # for PRUs in K3 J721E SoC family
      - ti,j721e-rtu    # for RTUs in K3 J721E SoC family
      - ti,j721e-tx-pru # for Tx_PRUs in K3 J721E SoC family
      - ti,k2g-pru      # for 66AK2G SoC family

  reg:
    items:
      - description: Address and Size of the PRU Instruction RAM
      - description: Address and Size of the PRU CTRL sub-module registers
      - description: Address and Size of the PRU Debug sub-module registers

  reg-names:
    items:
      - const: iram
      - const: control
      - const: debug

  firmware-name:
    description: |
      Should contain the name of the default firmware image
      file located on the firmware search path.

  interrupts:
    maxItems: 1
    description:
      Interrupt specifiers enable the virtio/rpmsg communication between MPU
      and the PRU/RTU cores. For the values of the interrupt cells please refer
      to interrupt-controller/ti,pruss-intc.yaml schema.

  interrupt-names:
    items:
      - const: vring

if:
  properties:
    compatible:
      enum:
        - ti,am654-rtu
        - ti,j721e-rtu
        - ti,am642-rtu
then:
  properties:
    $nodename:
      pattern: "^rtu@[0-9a-f]+$"
else:
  if:
    properties:
      compatible:
        enum:
          - ti,am654-tx-pru
          - ti,j721e-tx-pru
          - ti,am642-tx-pru
  then:
    properties:
      $nodename:
        pattern: "^txpru@[0-9a-f]+"
  else:
    properties:
      $nodename:
        pattern: "^pru@[0-9a-f]+$"

required:
  - compatible
  - reg
  - reg-names
  - firmware-name

additionalProperties: false

examples:
  - |
    /* AM33xx PRU-ICSS */
    pruss_tm: target-module@300000 {  /* 0x4a300000, ap 9 04.0 */
      compatible = "ti,sysc-pruss", "ti,sysc";
      #address-cells = <1>;
      #size-cells = <1>;
      ranges = <0x0 0x300000 0x80000>;

      pruss: pruss@0 {
        compatible = "ti,am3356-pruss";
        reg = <0x0 0x80000>;
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;

        pruss_mem: memories@0 {
          reg = <0x0 0x2000>,
                <0x2000 0x2000>,
                <0x10000 0x3000>;
          reg-names = "dram0", "dram1", "shrdram2";
        };

        pru0: pru@34000 {
          compatible = "ti,am3356-pru";
          reg = <0x34000 0x2000>,
                <0x22000 0x400>,
                <0x22400 0x100>;
          reg-names = "iram", "control", "debug";
          firmware-name = "am335x-pru0-fw";
        };

        pru1: pru@38000 {
          compatible = "ti,am3356-pru";
          reg = <0x38000 0x2000>,
                <0x24000 0x400>,
                <0x24400 0x100>;
          reg-names = "iram", "control", "debug";
          firmware-name = "am335x-pru1-fw";
        };
      };
    };

  - |
    /* AM65x SR2.0 ICSSG */
    #include <dt-bindings/soc/ti,sci_pm_domain.h>

    icssg0: icssg@b000000 {
      compatible = "ti,am654-icssg";
      reg = <0xb000000 0x80000>;
      power-domains = <&k3_pds 62 TI_SCI_PD_EXCLUSIVE>;
      #address-cells = <1>;
      #size-cells = <1>;
      ranges = <0x0 0xb000000 0x80000>;

      icssg0_mem: memories@0 {
        reg = <0x0 0x2000>,
              <0x2000 0x2000>,
              <0x10000 0x10000>;
        reg-names = "dram0", "dram1", "shrdram2";
      };

      pru0_0: pru@34000 {
        compatible = "ti,am654-pru";
        reg = <0x34000 0x4000>,
              <0x22000 0x100>,
              <0x22400 0x100>;
        reg-names = "iram", "control", "debug";
        firmware-name = "am65x-pru0_0-fw";
        interrupt-parent = <&icssg0_intc>;
        interrupts = <16 2 2>;
        interrupt-names = "vring";
      };

      rtu0_0: rtu@4000 {
        compatible = "ti,am654-rtu";
        reg = <0x4000 0x2000>,
              <0x23000 0x100>,
              <0x23400 0x100>;
        reg-names = "iram", "control", "debug";
        firmware-name = "am65x-rtu0_0-fw";
        interrupt-parent = <&icssg0_intc>;
        interrupts = <20 4 4>;
        interrupt-names = "vring";
      };

      tx_pru0_0: txpru@a000 {
        compatible = "ti,am654-tx-pru";
        reg = <0xa000 0x1800>,
              <0x25000 0x100>,
              <0x25400 0x100>;
        reg-names = "iram", "control", "debug";
        firmware-name = "am65x-txpru0_0-fw";
      };

      pru0_1: pru@38000 {
        compatible = "ti,am654-pru";
        reg = <0x38000 0x4000>,
              <0x24000 0x100>,
              <0x24400 0x100>;
        reg-names = "iram", "control", "debug";
        firmware-name = "am65x-pru0_1-fw";
        interrupt-parent = <&icssg0_intc>;
        interrupts = <18 3 3>;
        interrupt-names = "vring";
      };

      rtu0_1: rtu@6000 {
        compatible = "ti,am654-rtu";
        reg = <0x6000 0x2000>,
              <0x23800 0x100>,
              <0x23c00 0x100>;
        reg-names = "iram", "control", "debug";
        firmware-name = "am65x-rtu0_1-fw";
        interrupt-parent = <&icssg0_intc>;
        interrupts = <22 5 5>;
        interrupt-names = "vring";
      };

      tx_pru0_1: txpru@c000 {
        compatible = "ti,am654-tx-pru";
        reg = <0xc000 0x1800>,
              <0x25800 0x100>,
              <0x25c00 0x100>;
        reg-names = "iram", "control", "debug";
        firmware-name = "am65x-txpru0_1-fw";
      };
    };
