1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: "http://devicetree.org/schemas/remoteproc/st,stm32-rproc.yaml#"
5$schema: "http://devicetree.org/meta-schemas/core.yaml#"
6
7title: STMicroelectronics STM32 remote processor controller bindings
8
9description:
10  This document defines the binding for the remoteproc component that loads and
11  boots firmwares on the ST32MP family chipset.
12
13maintainers:
14  - Fabien Dessenne <fabien.dessenne@st.com>
15  - Arnaud Pouliquen <arnaud.pouliquen@st.com>
16
17properties:
18  compatible:
19    const: st,stm32mp1-m4
20
21  reg:
22    description:
23      Address ranges of the RETRAM and MCU SRAM memories used by the remote
24      processor.
25    maxItems: 3
26
27  resets:
28    maxItems: 1
29
30  st,syscfg-holdboot:
31    description: remote processor reset hold boot
32      - Phandle of syscon block.
33      - The offset of the hold boot setting register.
34      - The field mask of the hold boot.
35    $ref: "/schemas/types.yaml#/definitions/phandle-array"
36    maxItems: 1
37
38  st,syscfg-tz:
39    description:
40      Reference to the system configuration which holds the RCC trust zone mode
41    $ref: "/schemas/types.yaml#/definitions/phandle-array"
42    maxItems: 1
43
44  interrupts:
45    description: Should contain the WWDG1 watchdog reset interrupt
46    maxItems: 1
47
48  wakeup-source: true
49
50  mboxes:
51    description:
52      This property is required only if the rpmsg/virtio functionality is used.
53    items:
54      - description: |
55          A channel (a) used to communicate through virtqueues with the
56          remote proc.
57          Bi-directional channel:
58            - from local to remote = send message
59            - from remote to local = send message ack
60      - description: |
61          A channel (b) working the opposite direction of channel (a)
62      - description: |
63          A channel (c) used by the local proc to notify the remote proc that it
64          is about to be shut down.
65          Unidirectional channel:
66            - from local to remote, where ACK from the remote means that it is
67              ready for shutdown
68      - description: |
69          A channel (d) used by the local proc to notify the remote proc that it
70          has to stop interprocessor communnication.
71          Unidirectional channel:
72            - from local to remote, where ACK from the remote means that communnication
73              as been stopped on the remote side.
74    minItems: 1
75
76  mbox-names:
77    items:
78      - const: vq0
79      - const: vq1
80      - const: shutdown
81      - const: detach
82    minItems: 1
83
84  memory-region:
85    description:
86      List of phandles to the reserved memory regions associated with the
87      remoteproc device. This is variable and describes the memories shared with
88      the remote processor (e.g. remoteproc firmware and carveouts, rpmsg
89      vrings, ...).
90      (see ../reserved-memory/reserved-memory.txt)
91
92  st,syscfg-pdds:
93    $ref: "/schemas/types.yaml#/definitions/phandle-array"
94    description: |
95      Reference to the system configuration which holds the remote
96    maxItems: 1
97
98  st,syscfg-m4-state:
99    $ref: "/schemas/types.yaml#/definitions/phandle-array"
100    description: |
101      Reference to the tamp register which exposes the Cortex-M4 state.
102    maxItems: 1
103
104  st,syscfg-rsc-tbl:
105    $ref: "/schemas/types.yaml#/definitions/phandle-array"
106    description: |
107      Reference to the tamp register which references the Cortex-M4
108      resource table address.
109    maxItems: 1
110
111  st,auto-boot:
112    $ref: /schemas/types.yaml#/definitions/flag
113    description:
114      If defined, when remoteproc is probed, it loads the default firmware and
115      starts the remote processor.
116
117required:
118  - compatible
119  - reg
120  - resets
121  - st,syscfg-holdboot
122  - st,syscfg-tz
123
124additionalProperties: false
125
126examples:
127  - |
128    #include <dt-bindings/reset/stm32mp1-resets.h>
129    m4_rproc: m4@10000000 {
130      compatible = "st,stm32mp1-m4";
131      reg = <0x10000000 0x40000>,
132            <0x30000000 0x40000>,
133            <0x38000000 0x10000>;
134      resets = <&rcc MCU_R>;
135      st,syscfg-holdboot = <&rcc 0x10C 0x1>;
136      st,syscfg-tz = <&rcc 0x000 0x1>;
137      st,syscfg-rsc-tbl = <&tamp 0x144 0xFFFFFFFF>;
138      st,syscfg-m4-state = <&tamp 0x148 0xFFFFFFFF>;
139    };
140
141...
142