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 <[email protected]> --- 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 <[email protected]> + +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

