Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/remoteproc/ti,pru-rproc.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006 
0007 title: TI Programmable Realtime Unit (PRU) cores
0008 
0009 maintainers:
0010   - Suman Anna <s-anna@ti.com>
0011 
0012 description: |
0013   Each Programmable Real-Time Unit and Industrial Communication Subsystem
0014   (PRU-ICSS or PRUSS) has two 32-bit load/store RISC CPU cores called
0015   Programmable Real-Time Units (PRUs), each represented by a node. Each PRU
0016   core has a dedicated Instruction RAM, Control and Debug register sets, and
0017   use the Data RAMs present within the PRU-ICSS for code execution.
0018 
0019   The K3 SoCs containing ICSSG v1.0 (eg: AM65x SR1.0) also have two Auxiliary
0020   PRU cores called RTUs with slightly different IP integration. The K3 SoCs
0021   containing the revised ICSSG v1.1 (eg: J721E, AM65x SR2.0) have an extra two
0022   auxiliary Transmit PRU cores called Tx_PRUs that augment the PRUs. Each RTU
0023   or Tx_PRU core can also be used independently like a PRU, or alongside a
0024   corresponding PRU core to provide/implement auxiliary functionality/support.
0025 
0026   Each PRU, RTU or Tx_PRU core node should be defined as a child node of the
0027   corresponding PRU-ICSS node. Each node can optionally be rendered inactive by
0028   using the standard DT string property, "status".
0029 
0030   Please see the overall PRU-ICSS bindings document for additional details
0031   including a complete example,
0032     Documentation/devicetree/bindings/soc/ti/ti,pruss.yaml
0033 
0034 properties:
0035   compatible:
0036     enum:
0037       - ti,am3356-pru   # for AM335x SoC family (AM3356+ SoCs only)
0038       - ti,am4376-pru   # for AM437x SoC family (AM4376+ SoCs only)
0039       - ti,am5728-pru   # for AM57xx SoC family
0040       - ti,am625-pru    # for PRUs in K3 AM62x SoC family
0041       - ti,am642-pru    # for PRUs in K3 AM64x SoC family
0042       - ti,am642-rtu    # for RTUs in K3 AM64x SoC family
0043       - ti,am642-tx-pru # for Tx_PRUs in K3 AM64x SoC family
0044       - ti,am654-pru    # for PRUs in K3 AM65x SoC family
0045       - ti,am654-rtu    # for RTUs in K3 AM65x SoC family
0046       - ti,am654-tx-pru # for Tx_PRUs in K3 AM65x SR2.0 SoCs
0047       - ti,j721e-pru    # for PRUs in K3 J721E SoC family
0048       - ti,j721e-rtu    # for RTUs in K3 J721E SoC family
0049       - ti,j721e-tx-pru # for Tx_PRUs in K3 J721E SoC family
0050       - ti,k2g-pru      # for 66AK2G SoC family
0051 
0052   reg:
0053     items:
0054       - description: Address and Size of the PRU Instruction RAM
0055       - description: Address and Size of the PRU CTRL sub-module registers
0056       - description: Address and Size of the PRU Debug sub-module registers
0057 
0058   reg-names:
0059     items:
0060       - const: iram
0061       - const: control
0062       - const: debug
0063 
0064   firmware-name:
0065     description: |
0066       Should contain the name of the default firmware image
0067       file located on the firmware search path.
0068 
0069 if:
0070   properties:
0071     compatible:
0072       enum:
0073         - ti,am654-rtu
0074         - ti,j721e-rtu
0075         - ti,am642-rtu
0076 then:
0077   properties:
0078     $nodename:
0079       pattern: "^rtu@[0-9a-f]+$"
0080 else:
0081   if:
0082     properties:
0083       compatible:
0084         enum:
0085           - ti,am654-tx-pru
0086           - ti,j721e-tx-pru
0087           - ti,am642-tx-pru
0088   then:
0089     properties:
0090       $nodename:
0091         pattern: "^txpru@[0-9a-f]+"
0092   else:
0093     properties:
0094       $nodename:
0095         pattern: "^pru@[0-9a-f]+$"
0096 
0097 required:
0098   - compatible
0099   - reg
0100   - reg-names
0101   - firmware-name
0102 
0103 additionalProperties: false
0104 
0105 examples:
0106   - |
0107     /* AM33xx PRU-ICSS */
0108     pruss_tm: target-module@300000 {  /* 0x4a300000, ap 9 04.0 */
0109       compatible = "ti,sysc-pruss", "ti,sysc";
0110       #address-cells = <1>;
0111       #size-cells = <1>;
0112       ranges = <0x0 0x300000 0x80000>;
0113 
0114       pruss: pruss@0 {
0115         compatible = "ti,am3356-pruss";
0116         reg = <0x0 0x80000>;
0117         #address-cells = <1>;
0118         #size-cells = <1>;
0119         ranges;
0120 
0121         pruss_mem: memories@0 {
0122           reg = <0x0 0x2000>,
0123                 <0x2000 0x2000>,
0124                 <0x10000 0x3000>;
0125           reg-names = "dram0", "dram1", "shrdram2";
0126         };
0127 
0128         pru0: pru@34000 {
0129           compatible = "ti,am3356-pru";
0130           reg = <0x34000 0x2000>,
0131                 <0x22000 0x400>,
0132                 <0x22400 0x100>;
0133           reg-names = "iram", "control", "debug";
0134           firmware-name = "am335x-pru0-fw";
0135         };
0136 
0137         pru1: pru@38000 {
0138           compatible = "ti,am3356-pru";
0139           reg = <0x38000 0x2000>,
0140                 <0x24000 0x400>,
0141                 <0x24400 0x100>;
0142           reg-names = "iram", "control", "debug";
0143           firmware-name = "am335x-pru1-fw";
0144         };
0145       };
0146     };
0147 
0148   - |
0149     /* AM65x SR2.0 ICSSG */
0150     #include <dt-bindings/soc/ti,sci_pm_domain.h>
0151 
0152     icssg0: icssg@b000000 {
0153       compatible = "ti,am654-icssg";
0154       reg = <0xb000000 0x80000>;
0155       power-domains = <&k3_pds 62 TI_SCI_PD_EXCLUSIVE>;
0156       #address-cells = <1>;
0157       #size-cells = <1>;
0158       ranges = <0x0 0xb000000 0x80000>;
0159 
0160       icssg0_mem: memories@0 {
0161         reg = <0x0 0x2000>,
0162               <0x2000 0x2000>,
0163               <0x10000 0x10000>;
0164         reg-names = "dram0", "dram1", "shrdram2";
0165       };
0166 
0167       pru0_0: pru@34000 {
0168         compatible = "ti,am654-pru";
0169         reg = <0x34000 0x4000>,
0170               <0x22000 0x100>,
0171               <0x22400 0x100>;
0172         reg-names = "iram", "control", "debug";
0173         firmware-name = "am65x-pru0_0-fw";
0174       };
0175 
0176       rtu0_0: rtu@4000 {
0177         compatible = "ti,am654-rtu";
0178         reg = <0x4000 0x2000>,
0179               <0x23000 0x100>,
0180               <0x23400 0x100>;
0181         reg-names = "iram", "control", "debug";
0182         firmware-name = "am65x-rtu0_0-fw";
0183       };
0184 
0185       tx_pru0_0: txpru@a000 {
0186         compatible = "ti,am654-tx-pru";
0187         reg = <0xa000 0x1800>,
0188               <0x25000 0x100>,
0189               <0x25400 0x100>;
0190         reg-names = "iram", "control", "debug";
0191         firmware-name = "am65x-txpru0_0-fw";
0192       };
0193 
0194       pru0_1: pru@38000 {
0195         compatible = "ti,am654-pru";
0196         reg = <0x38000 0x4000>,
0197               <0x24000 0x100>,
0198               <0x24400 0x100>;
0199         reg-names = "iram", "control", "debug";
0200         firmware-name = "am65x-pru0_1-fw";
0201       };
0202 
0203       rtu0_1: rtu@6000 {
0204         compatible = "ti,am654-rtu";
0205         reg = <0x6000 0x2000>,
0206               <0x23800 0x100>,
0207               <0x23c00 0x100>;
0208         reg-names = "iram", "control", "debug";
0209         firmware-name = "am65x-rtu0_1-fw";
0210       };
0211 
0212       tx_pru0_1: txpru@c000 {
0213         compatible = "ti,am654-tx-pru";
0214         reg = <0xc000 0x1800>,
0215               <0x25800 0x100>,
0216               <0x25c00 0x100>;
0217         reg-names = "iram", "control", "debug";
0218         firmware-name = "am65x-txpru0_1-fw";
0219       };
0220     };