[PATCH v21 2/6] dt-bindings: remoteproc: Add STM32 TEE-controlled rproc binding
From: Arnaud Pouliquen
Date: Tue Mar 17 2026 - 14:04:59 EST
Add a Device Tree binding for the STM32 remote processor controlled
via a Trusted Application running in OP-TEE.
This binding describes the interface and properties required for STM32MP
remoteproc instances managed by the TEE rproc service, including a
linkage to the TEE backend through the property "rproc-tee-phandle".
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@xxxxxxxxxxx>
---
V21 updates:
- the m4 node is no more declared as a child of the optee-rproc node
- "rproc-tee-phandle" property is introduced to reference the optee-rproc
---
.../remoteproc/st,stm32-rproc-tee.yaml | 108 ++++++++++++++++++
1 file changed, 108 insertions(+)
create mode 100644 Documentation/devicetree/bindings/remoteproc/st,stm32-rproc-tee.yaml
diff --git a/Documentation/devicetree/bindings/remoteproc/st,stm32-rproc-tee.yaml b/Documentation/devicetree/bindings/remoteproc/st,stm32-rproc-tee.yaml
new file mode 100644
index 000000000000..ca4dd1c8e7b0
--- /dev/null
+++ b/Documentation/devicetree/bindings/remoteproc/st,stm32-rproc-tee.yaml
@@ -0,0 +1,108 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/remoteproc/st,stm32-rproc-tee.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: STMicroelectronics STM32 remote processor controlled via TEE
+
+maintainers:
+ - Arnaud Pouliquen <arnaud.pouliquen@xxxxxxxxxxx>
+
+description: |
+ STM32MP remote processor controlled by a Trusted Application
+ running in OP-TEE. This node is a child of the TEE remoteproc service
+ (UUID 80a4c275-0a47-4905-8285-1486a9771a08) and exposes a remoteproc
+ instance managed by the Linux remoteproc core via the TEE rproc service.
+
+ Firmware loading, authentication and remote processor start/stop are managed
+ by the TEE application. The STM32-specific driver handles platform resources
+ such as the mailboxes and reserved-memory.
+
+properties:
+ compatible:
+ const: st,stm32mp1-m4-tee
+
+ reg:
+ description: |
+ Remote processor identifier used by the TEE service. The <0> value
+ in the example denotes a single instance with ID 0.
+ maxItems: 1
+
+ mboxes:
+ description: |
+ Mailbox channels used for rpmsg/virtio functionality and processor
+ shutdown.
+ maxItems: 3
+
+ mbox-names:
+ items:
+ - const: vq0
+ - const: vq1
+ - const: shutdown
+
+ memory-region:
+ description: |
+ List of phandles to reserved-memory nodes describing the memory layout
+ for the interprocessors communication.
+
+ interrupts:
+ description: |
+ Optional watchdog / status interrupt line used to detect crashes
+ and optionally wake up the system.
+ maxItems: 1
+
+ st,auto-boot:
+ type: boolean
+ description: |
+ If present, the remote processor will be automatically started by
+ the remoteproc core at boot.
+
+ wakeup-source:
+ type: boolean
+ description: |
+ Indicates that the watchdog interrupt can be used as a wakeup source.
+
+ rproc-tee-phandle:
+ description: |
+ Phandle to the remote processor backend node and its identifier. This property
+ is used to link the TEE remoteproc service to the remote processor instance
+ it controls. The value is a phandle reference to the remote processor node,
+ followed by a cell specifying the remote processor identifier used by the TEE.
+ $ref: /schemas/types.yaml#/definitions/phandle-array
+
+required:
+ - compatible
+ - reg
+ - rproc-tee-phandle
+
+additionalProperties: false
+
+examples:
+ - |
+ firmware {
+ tee_rproc: optee-rproc {
+ compatible = "80a4c275-0a47-4905-8285-1486a9771a08";
+ };
+ };
+
+ m4: m4@0 {
+ compatible = "st,stm32mp1-m4-tee";
+ reg = <0 0>;
+
+ mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
+ mbox-names = "vq0", "vq1", "shutdown";
+
+ memory-region = <&vdev0vring0>, <&m_ipc_shm>, <&mcuram2>,
+ <&vdev0vring1>, <&vdev0buffer>, <&retram>;
+
+ interrupt-parent = <&exti>;
+ interrupts = <68 1>;
+
+ rproc-tee-phandle = <&tee_rproc 0>;
+ st,auto-boot;
+ wakeup-source;
+
+ status = "okay";
+ };
+...
--
2.43.0