xref: /openbmc/linux/Documentation/devicetree/bindings/remoteproc/ti,omap-remoteproc.yaml (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1*440b075bSKrzysztof Kozlowski# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2c8f70f80SSuman Anna%YAML 1.2
3c8f70f80SSuman Anna---
4c8f70f80SSuman Anna$id: http://devicetree.org/schemas/remoteproc/ti,omap-remoteproc.yaml#
5c8f70f80SSuman Anna$schema: http://devicetree.org/meta-schemas/core.yaml#
6c8f70f80SSuman Anna
7c8f70f80SSuman Annatitle: OMAP4+ Remoteproc Devices
8c8f70f80SSuman Anna
9c8f70f80SSuman Annamaintainers:
10c8f70f80SSuman Anna  - Suman Anna <s-anna@ti.com>
11c8f70f80SSuman Anna
12c8f70f80SSuman Annadescription:
13c8f70f80SSuman Anna  The OMAP family of SoCs usually have one or more slave processor sub-systems
14c8f70f80SSuman Anna  that are used to offload some of the processor-intensive tasks, or to manage
15c8f70f80SSuman Anna  other hardware accelerators, for achieving various system level goals.
16c8f70f80SSuman Anna
17c8f70f80SSuman Anna  The processor cores in the sub-system are usually behind an IOMMU, and may
18c8f70f80SSuman Anna  contain additional sub-modules like Internal RAM and/or ROMs, L1 and/or L2
19c8f70f80SSuman Anna  caches, an Interrupt Controller, a Cache Controller etc.
20c8f70f80SSuman Anna
21c8f70f80SSuman Anna  The OMAP SoCs usually have a DSP processor sub-system and/or an IPU processor
22c8f70f80SSuman Anna  sub-system. The DSP processor sub-system can contain any of the TI's C64x,
23c8f70f80SSuman Anna  C66x or C67x family of DSP cores as the main execution unit. The IPU processor
24c8f70f80SSuman Anna  sub-system usually contains either a Dual-Core Cortex-M3 or Dual-Core
25c8f70f80SSuman Anna  Cortex-M4 processors.
26c8f70f80SSuman Anna
27c8f70f80SSuman Anna  Each remote processor sub-system is represented as a single DT node. Each node
28c8f70f80SSuman Anna  has a number of required or optional properties that enable the OS running on
29c8f70f80SSuman Anna  the host processor (MPU) to perform the device management of the remote
30c8f70f80SSuman Anna  processor and to communicate with the remote processor. The various properties
31c8f70f80SSuman Anna  can be classified as constant or variable. The constant properties are
32c8f70f80SSuman Anna  dictated by the SoC and does not change from one board to another having the
33c8f70f80SSuman Anna  same SoC. Examples of constant properties include 'iommus', 'reg'. The
34c8f70f80SSuman Anna  variable properties are dictated by the system integration aspects such as
35c8f70f80SSuman Anna  memory on the board, or configuration used within the corresponding firmware
36c8f70f80SSuman Anna  image. Examples of variable properties include 'mboxes', 'memory-region',
37c8f70f80SSuman Anna  'timers', 'watchdog-timers' etc.
38c8f70f80SSuman Anna
39c8f70f80SSuman Annaproperties:
40c8f70f80SSuman Anna  compatible:
41c8f70f80SSuman Anna    enum:
42c8f70f80SSuman Anna      - ti,omap4-dsp
43c8f70f80SSuman Anna      - ti,omap5-dsp
44c8f70f80SSuman Anna      - ti,dra7-dsp
45c8f70f80SSuman Anna      - ti,omap4-ipu
46c8f70f80SSuman Anna      - ti,omap5-ipu
47c8f70f80SSuman Anna      - ti,dra7-ipu
48c8f70f80SSuman Anna
49c8f70f80SSuman Anna  iommus:
50c8f70f80SSuman Anna    minItems: 1
51c8f70f80SSuman Anna    maxItems: 2
52c8f70f80SSuman Anna    description: |
53c8f70f80SSuman Anna      phandles to OMAP IOMMU nodes, that need to be programmed
54c8f70f80SSuman Anna      for this remote processor to access any external RAM memory or
55c8f70f80SSuman Anna      other peripheral device address spaces. This property usually
56c8f70f80SSuman Anna      has only a single phandle. Multiple phandles are used only in
57c8f70f80SSuman Anna      cases where the sub-system has different ports for different
58c8f70f80SSuman Anna      sub-modules within the processor sub-system (eg: DRA7 DSPs),
59c8f70f80SSuman Anna      and need the same programming in both the MMUs.
60c8f70f80SSuman Anna
61c8f70f80SSuman Anna  mboxes:
62c8f70f80SSuman Anna    minItems: 1
63c8f70f80SSuman Anna    maxItems: 2
64c8f70f80SSuman Anna    description: |
65c8f70f80SSuman Anna      OMAP Mailbox specifier denoting the sub-mailbox, to be used for
66c8f70f80SSuman Anna      communication with the remote processor. The specifier format is
67c8f70f80SSuman Anna      as per the bindings,
68ed21e4cdSSuman Anna      Documentation/devicetree/bindings/mailbox/ti,omap-mailbox.yaml
69c8f70f80SSuman Anna      This property should match with the sub-mailbox node used in
70c8f70f80SSuman Anna      the firmware image.
71c8f70f80SSuman Anna
72c8f70f80SSuman Anna  clocks:
730499220dSRob Herring    maxItems: 1
74c8f70f80SSuman Anna    description: |
75c8f70f80SSuman Anna      Main functional clock for the remote processor
76c8f70f80SSuman Anna
77c8f70f80SSuman Anna  resets:
780499220dSRob Herring    minItems: 1
790499220dSRob Herring    maxItems: 2
80c8f70f80SSuman Anna    description: |
81c8f70f80SSuman Anna      Reset handles for the remote processor
82c8f70f80SSuman Anna
83c8f70f80SSuman Anna  firmware-name:
84c8f70f80SSuman Anna    description: |
85c8f70f80SSuman Anna      Default name of the firmware to load to the remote processor.
86c8f70f80SSuman Anna
87c8f70f80SSuman Anna# Optional properties:
88c8f70f80SSuman Anna# --------------------
89c8f70f80SSuman Anna# Some of these properties are mandatory on some SoCs, and some are optional
90c8f70f80SSuman Anna# depending on the configuration of the firmware image to be executed on the
91c8f70f80SSuman Anna# remote processor. The conditions are mentioned for each property.
92c8f70f80SSuman Anna#
93c8f70f80SSuman Anna# The following are the optional properties:
94c8f70f80SSuman Anna
95c8f70f80SSuman Anna  memory-region:
96c2156348SRob Herring    maxItems: 1
97c8f70f80SSuman Anna    description: |
98c8f70f80SSuman Anna      phandle to the reserved memory node to be associated
99c8f70f80SSuman Anna      with the remoteproc device. The reserved memory node
100c8f70f80SSuman Anna      can be a CMA memory node, and should be defined as
101c8f70f80SSuman Anna      per the bindings,
102c8f70f80SSuman Anna      Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
103c8f70f80SSuman Anna
104c8f70f80SSuman Anna  reg:
105c8f70f80SSuman Anna    description: |
106c8f70f80SSuman Anna      Address space for any remoteproc memories present on
107c8f70f80SSuman Anna      the SoC. Should contain an entry for each value in
108c8f70f80SSuman Anna      'reg-names'. These are mandatory for all DSP and IPU
109c8f70f80SSuman Anna      processors that have them (OMAP4/OMAP5 DSPs do not have
110c8f70f80SSuman Anna      any RAMs)
111c8f70f80SSuman Anna
112c8f70f80SSuman Anna  reg-names:
113c8f70f80SSuman Anna    description: |
114c8f70f80SSuman Anna      Required names for each of the address spaces defined in
115c8f70f80SSuman Anna      the 'reg' property. Expects the names from the following
116c8f70f80SSuman Anna      list, in the specified order, each representing the corresponding
117c8f70f80SSuman Anna      internal RAM memory region.
118c8f70f80SSuman Anna    minItems: 1
119c8f70f80SSuman Anna    items:
120c8f70f80SSuman Anna      - const: l2ram
121c8f70f80SSuman Anna      - const: l1pram
122c8f70f80SSuman Anna      - const: l1dram
123c8f70f80SSuman Anna
124c8f70f80SSuman Anna  ti,bootreg:
125c8f70f80SSuman Anna    $ref: /schemas/types.yaml#/definitions/phandle-array
12639bd2b6aSRob Herring    items:
12739bd2b6aSRob Herring      - items:
12839bd2b6aSRob Herring          - description: phandle to the System Control Configuration region
12939bd2b6aSRob Herring          - description: register offset of the boot address register
13039bd2b6aSRob Herring          - description: the bit shift within the register
13139bd2b6aSRob Herring    description:
13239bd2b6aSRob Herring      This property is required for all the DSP instances on OMAP4, OMAP5
13339bd2b6aSRob Herring      and DRA7xx SoCs.
134c8f70f80SSuman Anna
135c8f70f80SSuman Anna  ti,autosuspend-delay-ms:
136c8f70f80SSuman Anna    description: |
137c8f70f80SSuman Anna      Custom autosuspend delay for the remoteproc in milliseconds.
138c8f70f80SSuman Anna      Recommended values is preferable to be in the order of couple
139c8f70f80SSuman Anna      of seconds. A negative value can also be used to disable the
140c8f70f80SSuman Anna      autosuspend behavior.
141c8f70f80SSuman Anna
142c8f70f80SSuman Anna  ti,timers:
143c8f70f80SSuman Anna    $ref: /schemas/types.yaml#/definitions/phandle-array
14439bd2b6aSRob Herring    items:
14539bd2b6aSRob Herring      maxItems: 1
146c8f70f80SSuman Anna    description: |
147c8f70f80SSuman Anna      One or more phandles to OMAP DMTimer nodes, that serve
148c8f70f80SSuman Anna      as System/Tick timers for the OS running on the remote
149c8f70f80SSuman Anna      processors. This will usually be a single timer if the
150c8f70f80SSuman Anna      processor sub-system is running in SMP mode, or one per
151c8f70f80SSuman Anna      core in the processor sub-system. This can also be used
152c8f70f80SSuman Anna      to reserve specific timers to be dedicated to the
153c8f70f80SSuman Anna      remote processors.
154c8f70f80SSuman Anna
155c8f70f80SSuman Anna      This property is mandatory on remote processors requiring
156c8f70f80SSuman Anna      external tick wakeup, and to support Power Management
157c8f70f80SSuman Anna      features. The timers to be used should match with the
158c8f70f80SSuman Anna      timers used in the firmware image.
159c8f70f80SSuman Anna
160c8f70f80SSuman Anna  ti,watchdog-timers:
161c8f70f80SSuman Anna    $ref: /schemas/types.yaml#/definitions/phandle-array
16239bd2b6aSRob Herring    items:
16339bd2b6aSRob Herring      maxItems: 1
164c8f70f80SSuman Anna    description: |
165c8f70f80SSuman Anna      One or more phandles to OMAP DMTimer nodes, used to
166c8f70f80SSuman Anna      serve as Watchdog timers for the processor cores. This
167c8f70f80SSuman Anna      will usually be one per executing processor core, even
168c8f70f80SSuman Anna      if the processor sub-system is running a SMP OS.
169c8f70f80SSuman Anna
170c8f70f80SSuman Anna      The timers to be used should match with the watchdog
171c8f70f80SSuman Anna      timers used in the firmware image.
172c8f70f80SSuman Anna
173c8f70f80SSuman Annaif:
174c8f70f80SSuman Anna  properties:
175c8f70f80SSuman Anna    compatible:
176c8f70f80SSuman Anna      enum:
177c8f70f80SSuman Anna        - ti,dra7-dsp
178c8f70f80SSuman Annathen:
179c8f70f80SSuman Anna  properties:
180c8f70f80SSuman Anna    reg:
181c8f70f80SSuman Anna      minItems: 3
182c8f70f80SSuman Anna      maxItems: 3
183c8f70f80SSuman Anna  required:
184c8f70f80SSuman Anna    - reg
185c8f70f80SSuman Anna    - reg-names
186c8f70f80SSuman Anna    - ti,bootreg
187c8f70f80SSuman Anna
188c8f70f80SSuman Annaelse:
189c8f70f80SSuman Anna  if:
190c8f70f80SSuman Anna    properties:
191c8f70f80SSuman Anna      compatible:
192c8f70f80SSuman Anna        enum:
193c8f70f80SSuman Anna          - ti,omap4-ipu
194c8f70f80SSuman Anna          - ti,omap5-ipu
195c8f70f80SSuman Anna          - ti,dra7-ipu
196c8f70f80SSuman Anna  then:
197c8f70f80SSuman Anna    properties:
198c8f70f80SSuman Anna      reg:
199c8f70f80SSuman Anna        minItems: 1
200c8f70f80SSuman Anna        maxItems: 1
201c8f70f80SSuman Anna      ti,bootreg: false
202c8f70f80SSuman Anna    required:
203c8f70f80SSuman Anna      - reg
204c8f70f80SSuman Anna      - reg-names
205c8f70f80SSuman Anna
206c8f70f80SSuman Anna  else:
207c8f70f80SSuman Anna    properties:
208c8f70f80SSuman Anna      reg: false
209c8f70f80SSuman Anna    required:
210c8f70f80SSuman Anna      - ti,bootreg
211c8f70f80SSuman Anna
212c8f70f80SSuman Annarequired:
213c8f70f80SSuman Anna  - compatible
214c8f70f80SSuman Anna  - iommus
215c8f70f80SSuman Anna  - mboxes
216c8f70f80SSuman Anna  - clocks
217c8f70f80SSuman Anna  - resets
218c8f70f80SSuman Anna  - firmware-name
219c8f70f80SSuman Anna
220c8f70f80SSuman AnnaadditionalProperties: false
221c8f70f80SSuman Anna
222c8f70f80SSuman Annaexamples:
223c8f70f80SSuman Anna  - |
224c8f70f80SSuman Anna
225c8f70f80SSuman Anna    //Example 1: OMAP4 DSP
226c8f70f80SSuman Anna
227c8f70f80SSuman Anna    /* DSP Reserved Memory node */
228c8f70f80SSuman Anna    #include <dt-bindings/clock/omap4.h>
229c8f70f80SSuman Anna    reserved-memory {
230c8f70f80SSuman Anna        #address-cells = <1>;
231c8f70f80SSuman Anna        #size-cells = <1>;
232c8f70f80SSuman Anna
233c8f70f80SSuman Anna        dsp_memory_region: dsp-memory@98000000 {
234c8f70f80SSuman Anna            compatible = "shared-dma-pool";
235c8f70f80SSuman Anna            reg = <0x98000000 0x800000>;
236c8f70f80SSuman Anna            reusable;
237c8f70f80SSuman Anna        };
238c8f70f80SSuman Anna    };
239c8f70f80SSuman Anna
240c8f70f80SSuman Anna    /* DSP node */
241c8f70f80SSuman Anna    ocp {
242c8f70f80SSuman Anna        dsp: dsp {
243c8f70f80SSuman Anna            compatible = "ti,omap4-dsp";
244c8f70f80SSuman Anna            ti,bootreg = <&scm_conf 0x304 0>;
245c8f70f80SSuman Anna            iommus = <&mmu_dsp>;
246c8f70f80SSuman Anna            mboxes = <&mailbox &mbox_dsp>;
247c8f70f80SSuman Anna            memory-region = <&dsp_memory_region>;
248c8f70f80SSuman Anna            ti,timers = <&timer5>;
249c8f70f80SSuman Anna            ti,watchdog-timers = <&timer6>;
250c8f70f80SSuman Anna            clocks = <&tesla_clkctrl OMAP4_DSP_CLKCTRL 0>;
251c8f70f80SSuman Anna            resets = <&prm_tesla 0>, <&prm_tesla 1>;
252c8f70f80SSuman Anna            firmware-name = "omap4-dsp-fw.xe64T";
253c8f70f80SSuman Anna        };
254c8f70f80SSuman Anna    };
255c8f70f80SSuman Anna
256c8f70f80SSuman Anna  - |+
257c8f70f80SSuman Anna
258c8f70f80SSuman Anna    //Example 2: OMAP5 IPU
259c8f70f80SSuman Anna
260c8f70f80SSuman Anna    /* IPU Reserved Memory node */
261c8f70f80SSuman Anna    #include <dt-bindings/clock/omap5.h>
262c8f70f80SSuman Anna    reserved-memory {
263c8f70f80SSuman Anna        #address-cells = <2>;
264c8f70f80SSuman Anna        #size-cells = <2>;
265c8f70f80SSuman Anna
266c8f70f80SSuman Anna        ipu_memory_region: ipu-memory@95800000 {
267c8f70f80SSuman Anna            compatible = "shared-dma-pool";
268c8f70f80SSuman Anna            reg = <0 0x95800000 0 0x3800000>;
269c8f70f80SSuman Anna            reusable;
270c8f70f80SSuman Anna        };
271c8f70f80SSuman Anna    };
272c8f70f80SSuman Anna
273c8f70f80SSuman Anna    /* IPU node */
274c8f70f80SSuman Anna    ocp {
275c8f70f80SSuman Anna        #address-cells = <1>;
276c8f70f80SSuman Anna        #size-cells = <1>;
277c8f70f80SSuman Anna
278c8f70f80SSuman Anna        ipu: ipu@55020000 {
279c8f70f80SSuman Anna            compatible = "ti,omap5-ipu";
280c8f70f80SSuman Anna            reg = <0x55020000 0x10000>;
281c8f70f80SSuman Anna            reg-names = "l2ram";
282c8f70f80SSuman Anna            iommus = <&mmu_ipu>;
283c8f70f80SSuman Anna            mboxes = <&mailbox &mbox_ipu>;
284c8f70f80SSuman Anna            memory-region = <&ipu_memory_region>;
285c8f70f80SSuman Anna            ti,timers = <&timer3>, <&timer4>;
286c8f70f80SSuman Anna            ti,watchdog-timers = <&timer9>, <&timer11>;
287c8f70f80SSuman Anna            clocks = <&ipu_clkctrl OMAP5_MMU_IPU_CLKCTRL 0>;
288c8f70f80SSuman Anna            resets = <&prm_core 2>;
289c8f70f80SSuman Anna            firmware-name = "omap5-ipu-fw.xem4";
290c8f70f80SSuman Anna        };
291c8f70f80SSuman Anna    };
292c8f70f80SSuman Anna
293c8f70f80SSuman Anna  - |+
294c8f70f80SSuman Anna
295c8f70f80SSuman Anna    //Example 3: DRA7xx/AM57xx DSP
296c8f70f80SSuman Anna
297c8f70f80SSuman Anna    /* DSP1 Reserved Memory node */
298c8f70f80SSuman Anna    #include <dt-bindings/clock/dra7.h>
299c8f70f80SSuman Anna    reserved-memory {
300c8f70f80SSuman Anna        #address-cells = <2>;
301c8f70f80SSuman Anna        #size-cells = <2>;
302c8f70f80SSuman Anna
303c8f70f80SSuman Anna        dsp1_memory_region: dsp1-memory@99000000 {
304c8f70f80SSuman Anna            compatible = "shared-dma-pool";
305c8f70f80SSuman Anna            reg = <0x0 0x99000000 0x0 0x4000000>;
306c8f70f80SSuman Anna            reusable;
307c8f70f80SSuman Anna        };
308c8f70f80SSuman Anna    };
309c8f70f80SSuman Anna
310c8f70f80SSuman Anna    /* DSP1 node */
311c8f70f80SSuman Anna    ocp {
312c8f70f80SSuman Anna        #address-cells = <1>;
313c8f70f80SSuman Anna        #size-cells = <1>;
314c8f70f80SSuman Anna
315c8f70f80SSuman Anna        dsp1: dsp@40800000 {
316c8f70f80SSuman Anna            compatible = "ti,dra7-dsp";
317c8f70f80SSuman Anna            reg = <0x40800000 0x48000>,
318c8f70f80SSuman Anna                  <0x40e00000 0x8000>,
319c8f70f80SSuman Anna                  <0x40f00000 0x8000>;
320c8f70f80SSuman Anna            reg-names = "l2ram", "l1pram", "l1dram";
321c8f70f80SSuman Anna            ti,bootreg = <&scm_conf 0x55c 0>;
322c8f70f80SSuman Anna            iommus = <&mmu0_dsp1>, <&mmu1_dsp1>;
323c8f70f80SSuman Anna            mboxes = <&mailbox5 &mbox_dsp1_ipc3x>;
324c8f70f80SSuman Anna            memory-region = <&dsp1_memory_region>;
325c8f70f80SSuman Anna            ti,timers = <&timer5>;
326c8f70f80SSuman Anna            ti,watchdog-timers = <&timer10>;
327c8f70f80SSuman Anna            resets = <&prm_dsp1 0>;
328c8f70f80SSuman Anna            clocks = <&dsp1_clkctrl DRA7_DSP1_MMU0_DSP1_CLKCTRL 0>;
329c8f70f80SSuman Anna            firmware-name = "dra7-dsp1-fw.xe66";
330c8f70f80SSuman Anna        };
331c8f70f80SSuman Anna    };
332