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 };