xref: /linux/Documentation/devicetree/bindings/remoteproc/ti,pru-rproc.yaml (revision 0ea5c948cb64bab5bc7a5516774eb8536f05aa0d)
1440b075bSKrzysztof Kozlowski# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2d570d05eSSuman Anna%YAML 1.2
3d570d05eSSuman Anna---
4d570d05eSSuman Anna$id: http://devicetree.org/schemas/remoteproc/ti,pru-rproc.yaml#
5d570d05eSSuman Anna$schema: http://devicetree.org/meta-schemas/core.yaml#
6d570d05eSSuman Anna
7d570d05eSSuman Annatitle: TI Programmable Realtime Unit (PRU) cores
8d570d05eSSuman Anna
9d570d05eSSuman Annamaintainers:
10d570d05eSSuman Anna  - Suman Anna <s-anna@ti.com>
11d570d05eSSuman Anna
12d570d05eSSuman Annadescription: |
13d570d05eSSuman Anna  Each Programmable Real-Time Unit and Industrial Communication Subsystem
14d570d05eSSuman Anna  (PRU-ICSS or PRUSS) has two 32-bit load/store RISC CPU cores called
15d570d05eSSuman Anna  Programmable Real-Time Units (PRUs), each represented by a node. Each PRU
16d570d05eSSuman Anna  core has a dedicated Instruction RAM, Control and Debug register sets, and
17d570d05eSSuman Anna  use the Data RAMs present within the PRU-ICSS for code execution.
18d570d05eSSuman Anna
19d570d05eSSuman Anna  The K3 SoCs containing ICSSG v1.0 (eg: AM65x SR1.0) also have two Auxiliary
20d570d05eSSuman Anna  PRU cores called RTUs with slightly different IP integration. The K3 SoCs
21d570d05eSSuman Anna  containing the revised ICSSG v1.1 (eg: J721E, AM65x SR2.0) have an extra two
22d570d05eSSuman Anna  auxiliary Transmit PRU cores called Tx_PRUs that augment the PRUs. Each RTU
23d570d05eSSuman Anna  or Tx_PRU core can also be used independently like a PRU, or alongside a
24d570d05eSSuman Anna  corresponding PRU core to provide/implement auxiliary functionality/support.
25d570d05eSSuman Anna
26d570d05eSSuman Anna  Each PRU, RTU or Tx_PRU core node should be defined as a child node of the
27d570d05eSSuman Anna  corresponding PRU-ICSS node. Each node can optionally be rendered inactive by
28d570d05eSSuman Anna  using the standard DT string property, "status".
29d570d05eSSuman Anna
30d570d05eSSuman Anna  Please see the overall PRU-ICSS bindings document for additional details
31d570d05eSSuman Anna  including a complete example,
32d570d05eSSuman Anna    Documentation/devicetree/bindings/soc/ti/ti,pruss.yaml
33d570d05eSSuman Anna
34d570d05eSSuman Annaproperties:
35d570d05eSSuman Anna  compatible:
36d570d05eSSuman Anna    enum:
37d570d05eSSuman Anna      - ti,am3356-pru   # for AM335x SoC family (AM3356+ SoCs only)
38d570d05eSSuman Anna      - ti,am4376-pru   # for AM437x SoC family (AM4376+ SoCs only)
3910f003b4SKishon Vijay Abraham I      - ti,am5728-pru   # for AM57xx SoC family
40ca63e3d8SKishon Vijay Abraham I      - ti,am625-pru    # for PRUs in K3 AM62x SoC family
41bfc24512SSuman Anna      - ti,am642-pru    # for PRUs in K3 AM64x SoC family
42bfc24512SSuman Anna      - ti,am642-rtu    # for RTUs in K3 AM64x SoC family
43bfc24512SSuman Anna      - ti,am642-tx-pru # for Tx_PRUs in K3 AM64x SoC family
44d570d05eSSuman Anna      - ti,am654-pru    # for PRUs in K3 AM65x SoC family
45d570d05eSSuman Anna      - ti,am654-rtu    # for RTUs in K3 AM65x SoC family
46d570d05eSSuman Anna      - ti,am654-tx-pru # for Tx_PRUs in K3 AM65x SR2.0 SoCs
47d570d05eSSuman Anna      - ti,j721e-pru    # for PRUs in K3 J721E SoC family
48d570d05eSSuman Anna      - ti,j721e-rtu    # for RTUs in K3 J721E SoC family
49d570d05eSSuman Anna      - ti,j721e-tx-pru # for Tx_PRUs in K3 J721E SoC family
5010f003b4SKishon Vijay Abraham I      - ti,k2g-pru      # for 66AK2G SoC family
51d570d05eSSuman Anna
52d570d05eSSuman Anna  reg:
53d570d05eSSuman Anna    items:
54d570d05eSSuman Anna      - description: Address and Size of the PRU Instruction RAM
55d570d05eSSuman Anna      - description: Address and Size of the PRU CTRL sub-module registers
56d570d05eSSuman Anna      - description: Address and Size of the PRU Debug sub-module registers
57d570d05eSSuman Anna
58d570d05eSSuman Anna  reg-names:
59d570d05eSSuman Anna    items:
60d570d05eSSuman Anna      - const: iram
61d570d05eSSuman Anna      - const: control
62d570d05eSSuman Anna      - const: debug
63d570d05eSSuman Anna
64d570d05eSSuman Anna  firmware-name:
65d570d05eSSuman Anna    description: |
66d570d05eSSuman Anna      Should contain the name of the default firmware image
67d570d05eSSuman Anna      file located on the firmware search path.
68d570d05eSSuman Anna
69*d93f191bSMD Danish Anwar  interrupts:
70*d93f191bSMD Danish Anwar    maxItems: 1
71*d93f191bSMD Danish Anwar    description:
72*d93f191bSMD Danish Anwar      Interrupt specifiers enable the virtio/rpmsg communication between MPU
73*d93f191bSMD Danish Anwar      and the PRU/RTU cores. For the values of the interrupt cells please refer
74*d93f191bSMD Danish Anwar      to interrupt-controller/ti,pruss-intc.yaml schema.
75*d93f191bSMD Danish Anwar
76*d93f191bSMD Danish Anwar  interrupt-names:
77*d93f191bSMD Danish Anwar    items:
78*d93f191bSMD Danish Anwar      - const: vring
79*d93f191bSMD Danish Anwar
80d570d05eSSuman Annaif:
81d570d05eSSuman Anna  properties:
82d570d05eSSuman Anna    compatible:
83d570d05eSSuman Anna      enum:
84d570d05eSSuman Anna        - ti,am654-rtu
85d570d05eSSuman Anna        - ti,j721e-rtu
86bfc24512SSuman Anna        - ti,am642-rtu
87d570d05eSSuman Annathen:
88d570d05eSSuman Anna  properties:
89d570d05eSSuman Anna    $nodename:
90d570d05eSSuman Anna      pattern: "^rtu@[0-9a-f]+$"
91d570d05eSSuman Annaelse:
92d570d05eSSuman Anna  if:
93d570d05eSSuman Anna    properties:
94d570d05eSSuman Anna      compatible:
95d570d05eSSuman Anna        enum:
96d570d05eSSuman Anna          - ti,am654-tx-pru
97d570d05eSSuman Anna          - ti,j721e-tx-pru
98bfc24512SSuman Anna          - ti,am642-tx-pru
99d570d05eSSuman Anna  then:
100d570d05eSSuman Anna    properties:
101d570d05eSSuman Anna      $nodename:
102d570d05eSSuman Anna        pattern: "^txpru@[0-9a-f]+"
103d570d05eSSuman Anna  else:
104d570d05eSSuman Anna    properties:
105d570d05eSSuman Anna      $nodename:
106d570d05eSSuman Anna        pattern: "^pru@[0-9a-f]+$"
107d570d05eSSuman Anna
108d570d05eSSuman Annarequired:
109d570d05eSSuman Anna  - compatible
110d570d05eSSuman Anna  - reg
111d570d05eSSuman Anna  - reg-names
112d570d05eSSuman Anna  - firmware-name
113d570d05eSSuman Anna
114d570d05eSSuman AnnaadditionalProperties: false
115d570d05eSSuman Anna
116d570d05eSSuman Annaexamples:
117d570d05eSSuman Anna  - |
118d570d05eSSuman Anna    /* AM33xx PRU-ICSS */
119d570d05eSSuman Anna    pruss_tm: target-module@300000 {  /* 0x4a300000, ap 9 04.0 */
120d570d05eSSuman Anna      compatible = "ti,sysc-pruss", "ti,sysc";
121d570d05eSSuman Anna      #address-cells = <1>;
122d570d05eSSuman Anna      #size-cells = <1>;
123d570d05eSSuman Anna      ranges = <0x0 0x300000 0x80000>;
124d570d05eSSuman Anna
125d570d05eSSuman Anna      pruss: pruss@0 {
126d570d05eSSuman Anna        compatible = "ti,am3356-pruss";
127d570d05eSSuman Anna        reg = <0x0 0x80000>;
128d570d05eSSuman Anna        #address-cells = <1>;
129d570d05eSSuman Anna        #size-cells = <1>;
130d570d05eSSuman Anna        ranges;
131d570d05eSSuman Anna
132d570d05eSSuman Anna        pruss_mem: memories@0 {
133d570d05eSSuman Anna          reg = <0x0 0x2000>,
134d570d05eSSuman Anna                <0x2000 0x2000>,
135d570d05eSSuman Anna                <0x10000 0x3000>;
136d570d05eSSuman Anna          reg-names = "dram0", "dram1", "shrdram2";
137d570d05eSSuman Anna        };
138d570d05eSSuman Anna
139d570d05eSSuman Anna        pru0: pru@34000 {
140d570d05eSSuman Anna          compatible = "ti,am3356-pru";
141d570d05eSSuman Anna          reg = <0x34000 0x2000>,
142d570d05eSSuman Anna                <0x22000 0x400>,
143d570d05eSSuman Anna                <0x22400 0x100>;
144d570d05eSSuman Anna          reg-names = "iram", "control", "debug";
145d570d05eSSuman Anna          firmware-name = "am335x-pru0-fw";
146d570d05eSSuman Anna        };
147d570d05eSSuman Anna
148d570d05eSSuman Anna        pru1: pru@38000 {
149d570d05eSSuman Anna          compatible = "ti,am3356-pru";
150d570d05eSSuman Anna          reg = <0x38000 0x2000>,
151d570d05eSSuman Anna                <0x24000 0x400>,
152d570d05eSSuman Anna                <0x24400 0x100>;
153d570d05eSSuman Anna          reg-names = "iram", "control", "debug";
154d570d05eSSuman Anna          firmware-name = "am335x-pru1-fw";
155d570d05eSSuman Anna        };
156d570d05eSSuman Anna      };
157d570d05eSSuman Anna    };
158d570d05eSSuman Anna
159d570d05eSSuman Anna  - |
160d570d05eSSuman Anna    /* AM65x SR2.0 ICSSG */
161d570d05eSSuman Anna    #include <dt-bindings/soc/ti,sci_pm_domain.h>
162d570d05eSSuman Anna
163d570d05eSSuman Anna    icssg0: icssg@b000000 {
164d570d05eSSuman Anna      compatible = "ti,am654-icssg";
165d570d05eSSuman Anna      reg = <0xb000000 0x80000>;
166d570d05eSSuman Anna      power-domains = <&k3_pds 62 TI_SCI_PD_EXCLUSIVE>;
167d570d05eSSuman Anna      #address-cells = <1>;
168d570d05eSSuman Anna      #size-cells = <1>;
169d570d05eSSuman Anna      ranges = <0x0 0xb000000 0x80000>;
170d570d05eSSuman Anna
171d570d05eSSuman Anna      icssg0_mem: memories@0 {
172d570d05eSSuman Anna        reg = <0x0 0x2000>,
173d570d05eSSuman Anna              <0x2000 0x2000>,
174d570d05eSSuman Anna              <0x10000 0x10000>;
175d570d05eSSuman Anna        reg-names = "dram0", "dram1", "shrdram2";
176d570d05eSSuman Anna      };
177d570d05eSSuman Anna
178d570d05eSSuman Anna      pru0_0: pru@34000 {
179d570d05eSSuman Anna        compatible = "ti,am654-pru";
180d570d05eSSuman Anna        reg = <0x34000 0x4000>,
181d570d05eSSuman Anna              <0x22000 0x100>,
182d570d05eSSuman Anna              <0x22400 0x100>;
183d570d05eSSuman Anna        reg-names = "iram", "control", "debug";
184d570d05eSSuman Anna        firmware-name = "am65x-pru0_0-fw";
185*d93f191bSMD Danish Anwar        interrupt-parent = <&icssg0_intc>;
186*d93f191bSMD Danish Anwar        interrupts = <16 2 2>;
187*d93f191bSMD Danish Anwar        interrupt-names = "vring";
188d570d05eSSuman Anna      };
189d570d05eSSuman Anna
190d570d05eSSuman Anna      rtu0_0: rtu@4000 {
191d570d05eSSuman Anna        compatible = "ti,am654-rtu";
192d570d05eSSuman Anna        reg = <0x4000 0x2000>,
193d570d05eSSuman Anna              <0x23000 0x100>,
194d570d05eSSuman Anna              <0x23400 0x100>;
195d570d05eSSuman Anna        reg-names = "iram", "control", "debug";
196d570d05eSSuman Anna        firmware-name = "am65x-rtu0_0-fw";
197*d93f191bSMD Danish Anwar        interrupt-parent = <&icssg0_intc>;
198*d93f191bSMD Danish Anwar        interrupts = <20 4 4>;
199*d93f191bSMD Danish Anwar        interrupt-names = "vring";
200d570d05eSSuman Anna      };
201d570d05eSSuman Anna
202d570d05eSSuman Anna      tx_pru0_0: txpru@a000 {
203d570d05eSSuman Anna        compatible = "ti,am654-tx-pru";
204d570d05eSSuman Anna        reg = <0xa000 0x1800>,
205d570d05eSSuman Anna              <0x25000 0x100>,
206d570d05eSSuman Anna              <0x25400 0x100>;
207d570d05eSSuman Anna        reg-names = "iram", "control", "debug";
208d570d05eSSuman Anna        firmware-name = "am65x-txpru0_0-fw";
209d570d05eSSuman Anna      };
210d570d05eSSuman Anna
211d570d05eSSuman Anna      pru0_1: pru@38000 {
212d570d05eSSuman Anna        compatible = "ti,am654-pru";
213d570d05eSSuman Anna        reg = <0x38000 0x4000>,
214d570d05eSSuman Anna              <0x24000 0x100>,
215d570d05eSSuman Anna              <0x24400 0x100>;
216d570d05eSSuman Anna        reg-names = "iram", "control", "debug";
217d570d05eSSuman Anna        firmware-name = "am65x-pru0_1-fw";
218*d93f191bSMD Danish Anwar        interrupt-parent = <&icssg0_intc>;
219*d93f191bSMD Danish Anwar        interrupts = <18 3 3>;
220*d93f191bSMD Danish Anwar        interrupt-names = "vring";
221d570d05eSSuman Anna      };
222d570d05eSSuman Anna
223d570d05eSSuman Anna      rtu0_1: rtu@6000 {
224d570d05eSSuman Anna        compatible = "ti,am654-rtu";
225d570d05eSSuman Anna        reg = <0x6000 0x2000>,
226d570d05eSSuman Anna              <0x23800 0x100>,
227d570d05eSSuman Anna              <0x23c00 0x100>;
228d570d05eSSuman Anna        reg-names = "iram", "control", "debug";
229d570d05eSSuman Anna        firmware-name = "am65x-rtu0_1-fw";
230*d93f191bSMD Danish Anwar        interrupt-parent = <&icssg0_intc>;
231*d93f191bSMD Danish Anwar        interrupts = <22 5 5>;
232*d93f191bSMD Danish Anwar        interrupt-names = "vring";
233d570d05eSSuman Anna      };
234d570d05eSSuman Anna
235d570d05eSSuman Anna      tx_pru0_1: txpru@c000 {
236d570d05eSSuman Anna        compatible = "ti,am654-tx-pru";
237d570d05eSSuman Anna        reg = <0xc000 0x1800>,
238d570d05eSSuman Anna              <0x25800 0x100>,
239d570d05eSSuman Anna              <0x25c00 0x100>;
240d570d05eSSuman Anna        reg-names = "iram", "control", "debug";
241d570d05eSSuman Anna        firmware-name = "am65x-txpru0_1-fw";
242d570d05eSSuman Anna      };
243d570d05eSSuman Anna    };
244