xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
2*4882a593Smuzhiyun%YAML 1.2
3*4882a593Smuzhiyun---
4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/remoteproc/ti,k3-r5f-rproc.yaml#
5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml#
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuntitle: TI K3 R5F processor subsystems
8*4882a593Smuzhiyun
9*4882a593Smuzhiyunmaintainers:
10*4882a593Smuzhiyun  - Suman Anna <s-anna@ti.com>
11*4882a593Smuzhiyun
12*4882a593Smuzhiyundescription: |
13*4882a593Smuzhiyun  The TI K3 family of SoCs usually have one or more dual-core Arm Cortex R5F
14*4882a593Smuzhiyun  processor subsystems/clusters (R5FSS). The dual core cluster can be used
15*4882a593Smuzhiyun  either in a LockStep mode providing safety/fault tolerance features or in a
16*4882a593Smuzhiyun  Split mode providing two individual compute cores for doubling the compute
17*4882a593Smuzhiyun  capacity. These are used together with other processors present on the SoC
18*4882a593Smuzhiyun  to achieve various system level goals.
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun  Each Dual-Core R5F sub-system is represented as a single DTS node
21*4882a593Smuzhiyun  representing the cluster, with a pair of child DT nodes representing
22*4882a593Smuzhiyun  the individual R5F cores. Each node has a number of required or optional
23*4882a593Smuzhiyun  properties that enable the OS running on the host processor to perform
24*4882a593Smuzhiyun  the device management of the remote processor and to communicate with the
25*4882a593Smuzhiyun  remote processor.
26*4882a593Smuzhiyun
27*4882a593Smuzhiyunproperties:
28*4882a593Smuzhiyun  $nodename:
29*4882a593Smuzhiyun    pattern: "^r5fss(@.*)?"
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun  compatible:
32*4882a593Smuzhiyun    enum:
33*4882a593Smuzhiyun      - ti,am654-r5fss
34*4882a593Smuzhiyun      - ti,j721e-r5fss
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun  power-domains:
37*4882a593Smuzhiyun    description: |
38*4882a593Smuzhiyun      Should contain a phandle to a PM domain provider node and an args
39*4882a593Smuzhiyun      specifier containing the R5FSS device id value.
40*4882a593Smuzhiyun    maxItems: 1
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun  "#address-cells":
43*4882a593Smuzhiyun    const: 1
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun  "#size-cells":
46*4882a593Smuzhiyun    const: 1
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun  ranges:
49*4882a593Smuzhiyun    description: |
50*4882a593Smuzhiyun      Standard ranges definition providing address translations for
51*4882a593Smuzhiyun      local R5F TCM address spaces to bus addresses.
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun# Optional properties:
54*4882a593Smuzhiyun# --------------------
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun  ti,cluster-mode:
57*4882a593Smuzhiyun    $ref: /schemas/types.yaml#/definitions/uint32
58*4882a593Smuzhiyun    enum: [0, 1]
59*4882a593Smuzhiyun    description: |
60*4882a593Smuzhiyun      Configuration Mode for the Dual R5F cores within the R5F cluster.
61*4882a593Smuzhiyun      Should be either a value of 1 (LockStep mode) or 0 (Split mode),
62*4882a593Smuzhiyun      default is LockStep mode if omitted.
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun# R5F Processor Child Nodes:
65*4882a593Smuzhiyun# ==========================
66*4882a593Smuzhiyun
67*4882a593SmuzhiyunpatternProperties:
68*4882a593Smuzhiyun  "^r5f@[a-f0-9]+$":
69*4882a593Smuzhiyun    type: object
70*4882a593Smuzhiyun    description: |
71*4882a593Smuzhiyun      The R5F Sub-System device node should define two R5F child nodes, each
72*4882a593Smuzhiyun      node representing a TI instantiation of the Arm Cortex R5F core. There
73*4882a593Smuzhiyun      are some specific integration differences for the IP like the usage of
74*4882a593Smuzhiyun      a Region Address Translator (RAT) for translating the larger SoC bus
75*4882a593Smuzhiyun      addresses into a 32-bit address space for the processor.
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun      Each R5F core has an associated 64 KB of Tightly-Coupled Memory (TCM)
78*4882a593Smuzhiyun      internal memories split between two banks - TCMA and TCMB (further
79*4882a593Smuzhiyun      interleaved into two banks TCMB0 and TCMB1). These memories (also called
80*4882a593Smuzhiyun      ATCM and BTCM) provide read/write performance on par with the core's L1
81*4882a593Smuzhiyun      caches. Each of the TCMs can be enabled or disabled independently and
82*4882a593Smuzhiyun      either of them can be configured to appear at that R5F's address 0x0.
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun      The cores do not use an MMU, but has a Region Address Translater
85*4882a593Smuzhiyun      (RAT) module that is accessible only from the R5Fs for providing
86*4882a593Smuzhiyun      translations between 32-bit CPU addresses into larger system bus
87*4882a593Smuzhiyun      addresses. Cache and memory access settings are provided through a
88*4882a593Smuzhiyun      Memory Protection Unit (MPU), programmable only from the R5Fs.
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun    allOf:
91*4882a593Smuzhiyun      - $ref: /schemas/arm/keystone/ti,k3-sci-common.yaml#
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun    properties:
94*4882a593Smuzhiyun      compatible:
95*4882a593Smuzhiyun        enum:
96*4882a593Smuzhiyun          - ti,am654-r5f
97*4882a593Smuzhiyun          - ti,j721e-r5f
98*4882a593Smuzhiyun
99*4882a593Smuzhiyun      reg:
100*4882a593Smuzhiyun        items:
101*4882a593Smuzhiyun          - description: Address and Size of the ATCM internal memory region
102*4882a593Smuzhiyun          - description: Address and Size of the BTCM internal memory region
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun      reg-names:
105*4882a593Smuzhiyun        items:
106*4882a593Smuzhiyun          - const: atcm
107*4882a593Smuzhiyun          - const: btcm
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun      resets:
110*4882a593Smuzhiyun        description: |
111*4882a593Smuzhiyun          Should contain the phandle to the reset controller node managing the
112*4882a593Smuzhiyun          local resets for this device, and a reset specifier.
113*4882a593Smuzhiyun        maxItems: 1
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun      firmware-name:
116*4882a593Smuzhiyun        description: |
117*4882a593Smuzhiyun          Should contain the name of the default firmware image
118*4882a593Smuzhiyun          file located on the firmware search path
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun# The following properties are mandatory for R5F Core0 in both LockStep and Split
121*4882a593Smuzhiyun# modes, and are mandatory for R5F Core1 _only_ in Split mode. They are unused for
122*4882a593Smuzhiyun# R5F Core1 in LockStep mode:
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun      mboxes:
125*4882a593Smuzhiyun        description: |
126*4882a593Smuzhiyun          OMAP Mailbox specifier denoting the sub-mailbox, to be used for
127*4882a593Smuzhiyun          communication with the remote processor. This property should match
128*4882a593Smuzhiyun          with the sub-mailbox node used in the firmware image.
129*4882a593Smuzhiyun        maxItems: 1
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun      memory-region:
132*4882a593Smuzhiyun        description: |
133*4882a593Smuzhiyun          phandle to the reserved memory nodes to be associated with the
134*4882a593Smuzhiyun          remoteproc device. There should be at least two reserved memory nodes
135*4882a593Smuzhiyun          defined. The reserved memory nodes should be carveout nodes, and
136*4882a593Smuzhiyun          should be defined with a "no-map" property as per the bindings in
137*4882a593Smuzhiyun          Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
138*4882a593Smuzhiyun        minItems: 2
139*4882a593Smuzhiyun        maxItems: 8
140*4882a593Smuzhiyun        items:
141*4882a593Smuzhiyun          - description: region used for dynamic DMA allocations like vrings and
142*4882a593Smuzhiyun                         vring buffers
143*4882a593Smuzhiyun          - description: region reserved for firmware image sections
144*4882a593Smuzhiyun        additionalItems: true
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun# Optional properties:
148*4882a593Smuzhiyun# --------------------
149*4882a593Smuzhiyun# The following properties are optional properties for each of the R5F cores:
150*4882a593Smuzhiyun
151*4882a593Smuzhiyun      ti,atcm-enable:
152*4882a593Smuzhiyun        $ref: /schemas/types.yaml#/definitions/uint32
153*4882a593Smuzhiyun        enum: [0, 1]
154*4882a593Smuzhiyun        description: |
155*4882a593Smuzhiyun          R5F core configuration mode dictating if ATCM should be enabled. The
156*4882a593Smuzhiyun          R5F address of ATCM is dictated by ti,loczrama property. Should be
157*4882a593Smuzhiyun          either a value of 1 (enabled) or 0 (disabled), default is disabled
158*4882a593Smuzhiyun          if omitted. Recommended to enable it for maximizing TCMs.
159*4882a593Smuzhiyun
160*4882a593Smuzhiyun      ti,btcm-enable:
161*4882a593Smuzhiyun        $ref: /schemas/types.yaml#/definitions/uint32
162*4882a593Smuzhiyun        enum: [0, 1]
163*4882a593Smuzhiyun        description: |
164*4882a593Smuzhiyun          R5F core configuration mode dictating if BTCM should be enabled. The
165*4882a593Smuzhiyun          R5F address of BTCM is dictated by ti,loczrama property. Should be
166*4882a593Smuzhiyun          either a value of 1 (enabled) or 0 (disabled), default is enabled if
167*4882a593Smuzhiyun          omitted.
168*4882a593Smuzhiyun
169*4882a593Smuzhiyun      ti,loczrama:
170*4882a593Smuzhiyun        $ref: /schemas/types.yaml#/definitions/uint32
171*4882a593Smuzhiyun        enum: [0, 1]
172*4882a593Smuzhiyun        description: |
173*4882a593Smuzhiyun          R5F core configuration mode dictating which TCM should appear at
174*4882a593Smuzhiyun          address 0 (from core's view). Should be either a value of 1 (ATCM
175*4882a593Smuzhiyun          at 0x0) or 0 (BTCM at 0x0), default value is 1 if omitted.
176*4882a593Smuzhiyun
177*4882a593Smuzhiyun      sram:
178*4882a593Smuzhiyun        $ref: /schemas/types.yaml#/definitions/phandle-array
179*4882a593Smuzhiyun        minItems: 1
180*4882a593Smuzhiyun        maxItems: 4
181*4882a593Smuzhiyun        description: |
182*4882a593Smuzhiyun          phandles to one or more reserved on-chip SRAM regions. The regions
183*4882a593Smuzhiyun          should be defined as child nodes of the respective SRAM node, and
184*4882a593Smuzhiyun          should be defined as per the generic bindings in,
185*4882a593Smuzhiyun          Documentation/devicetree/bindings/sram/sram.yaml
186*4882a593Smuzhiyun
187*4882a593Smuzhiyun    required:
188*4882a593Smuzhiyun      - compatible
189*4882a593Smuzhiyun      - reg
190*4882a593Smuzhiyun      - reg-names
191*4882a593Smuzhiyun      - ti,sci
192*4882a593Smuzhiyun      - ti,sci-dev-id
193*4882a593Smuzhiyun      - ti,sci-proc-ids
194*4882a593Smuzhiyun      - resets
195*4882a593Smuzhiyun      - firmware-name
196*4882a593Smuzhiyun
197*4882a593Smuzhiyun    unevaluatedProperties: false
198*4882a593Smuzhiyun
199*4882a593Smuzhiyunrequired:
200*4882a593Smuzhiyun  - compatible
201*4882a593Smuzhiyun  - power-domains
202*4882a593Smuzhiyun  - "#address-cells"
203*4882a593Smuzhiyun  - "#size-cells"
204*4882a593Smuzhiyun  - ranges
205*4882a593Smuzhiyun
206*4882a593SmuzhiyunadditionalProperties: false
207*4882a593Smuzhiyun
208*4882a593Smuzhiyunexamples:
209*4882a593Smuzhiyun  - |
210*4882a593Smuzhiyun    / {
211*4882a593Smuzhiyun        model = "Texas Instruments K3 AM654 SoC";
212*4882a593Smuzhiyun        compatible = "ti,am654-evm", "ti,am654";
213*4882a593Smuzhiyun        #address-cells = <2>;
214*4882a593Smuzhiyun        #size-cells = <2>;
215*4882a593Smuzhiyun
216*4882a593Smuzhiyun        bus@100000 {
217*4882a593Smuzhiyun            compatible = "simple-bus";
218*4882a593Smuzhiyun            #address-cells = <2>;
219*4882a593Smuzhiyun            #size-cells = <2>;
220*4882a593Smuzhiyun            ranges = <0x00 0x00100000 0x00 0x00100000 0x00 0x00020000>, /* ctrl mmr */
221*4882a593Smuzhiyun                     <0x00 0x41000000 0x00 0x41000000 0x00 0x00020000>,
222*4882a593Smuzhiyun                     <0x00 0x41400000 0x00 0x41400000 0x00 0x00020000>,
223*4882a593Smuzhiyun                     <0x00 0x41c00000 0x00 0x41c00000 0x00 0x00080000>;
224*4882a593Smuzhiyun
225*4882a593Smuzhiyun            bus@28380000 {
226*4882a593Smuzhiyun                compatible = "simple-bus";
227*4882a593Smuzhiyun                #address-cells = <2>;
228*4882a593Smuzhiyun                #size-cells = <2>;
229*4882a593Smuzhiyun                ranges = <0x00 0x28380000 0x00 0x28380000 0x00 0x03880000>, /* MCU NAVSS */
230*4882a593Smuzhiyun                         <0x00 0x41000000 0x00 0x41000000 0x00 0x00020000>, /* MCU R5F Core0 */
231*4882a593Smuzhiyun                         <0x00 0x41400000 0x00 0x41400000 0x00 0x00020000>, /* MCU R5F Core1 */
232*4882a593Smuzhiyun                         <0x00 0x41c00000 0x00 0x41c00000 0x00 0x00080000>; /* MCU SRAM */
233*4882a593Smuzhiyun
234*4882a593Smuzhiyun                /* AM65x MCU R5FSS node */
235*4882a593Smuzhiyun                mcu_r5fss0: r5fss@41000000 {
236*4882a593Smuzhiyun                    compatible = "ti,am654-r5fss";
237*4882a593Smuzhiyun                    power-domains = <&k3_pds 129>;
238*4882a593Smuzhiyun                    ti,cluster-mode = <1>;
239*4882a593Smuzhiyun                    #address-cells = <1>;
240*4882a593Smuzhiyun                    #size-cells = <1>;
241*4882a593Smuzhiyun                    ranges = <0x41000000 0x00 0x41000000 0x20000>,
242*4882a593Smuzhiyun                             <0x41400000 0x00 0x41400000 0x20000>;
243*4882a593Smuzhiyun
244*4882a593Smuzhiyun                    mcu_r5f0: r5f@41000000 {
245*4882a593Smuzhiyun                        compatible = "ti,am654-r5f";
246*4882a593Smuzhiyun                        reg = <0x41000000 0x00008000>,
247*4882a593Smuzhiyun                              <0x41010000 0x00008000>;
248*4882a593Smuzhiyun                        reg-names = "atcm", "btcm";
249*4882a593Smuzhiyun                        ti,sci = <&dmsc>;
250*4882a593Smuzhiyun                        ti,sci-dev-id = <159>;
251*4882a593Smuzhiyun                        ti,sci-proc-ids = <0x01 0xFF>;
252*4882a593Smuzhiyun                        resets = <&k3_reset 159 1>;
253*4882a593Smuzhiyun                        firmware-name = "am65x-mcu-r5f0_0-fw";
254*4882a593Smuzhiyun                        ti,atcm-enable = <1>;
255*4882a593Smuzhiyun                        ti,btcm-enable = <1>;
256*4882a593Smuzhiyun                        ti,loczrama = <1>;
257*4882a593Smuzhiyun                        mboxes = <&mailbox0 &mbox_mcu_r5fss0_core0>;
258*4882a593Smuzhiyun                        memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
259*4882a593Smuzhiyun                                        <&mcu_r5fss0_core0_memory_region>;
260*4882a593Smuzhiyun                        sram = <&mcu_r5fss0_core0_sram>;
261*4882a593Smuzhiyun                    };
262*4882a593Smuzhiyun
263*4882a593Smuzhiyun                    mcu_r5f1: r5f@41400000 {
264*4882a593Smuzhiyun                        compatible = "ti,am654-r5f";
265*4882a593Smuzhiyun                        reg = <0x41400000 0x00008000>,
266*4882a593Smuzhiyun                              <0x41410000 0x00008000>;
267*4882a593Smuzhiyun                        reg-names = "atcm", "btcm";
268*4882a593Smuzhiyun                        ti,sci = <&dmsc>;
269*4882a593Smuzhiyun                        ti,sci-dev-id = <245>;
270*4882a593Smuzhiyun                        ti,sci-proc-ids = <0x02 0xFF>;
271*4882a593Smuzhiyun                        resets = <&k3_reset 245 1>;
272*4882a593Smuzhiyun                        firmware-name = "am65x-mcu-r5f0_1-fw";
273*4882a593Smuzhiyun                        ti,atcm-enable = <1>;
274*4882a593Smuzhiyun                        ti,btcm-enable = <1>;
275*4882a593Smuzhiyun                        ti,loczrama = <1>;
276*4882a593Smuzhiyun                        mboxes = <&mailbox1 &mbox_mcu_r5fss0_core1>;
277*4882a593Smuzhiyun                    };
278*4882a593Smuzhiyun                };
279*4882a593Smuzhiyun            };
280*4882a593Smuzhiyun        };
281*4882a593Smuzhiyun    };
282