brintos

brintos / linux-shallow public Read only

0
0
Text · 7.2 KiB · faf16cf Raw
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