Add st,rproc-tee to describe the remoteprocessor control through the TEE remoteproc backend.
The property is a phandle to the TEE remoteproc node with one argument cell carrying the remote processor identifier.
When st,rproc-tee is present, Linux must not manage MCU reset/holdboot directly. Update schema conditionals accordingly: - do not require resets unconditionally - forbid resets, reset-names and st,syscfg-holdboot when st,rproc-tee is present - keep legacy holdboot checks for non-TEE configurations
Also add a DT example showing the TEE-based configuration.
Signed-off-by: Arnaud Pouliquen arnaud.pouliquen@foss.st.com --- .../bindings/remoteproc/st,stm32-rproc.yaml | 55 ++++++++++++++++--- 1 file changed, 46 insertions(+), 9 deletions(-)
diff --git a/Documentation/devicetree/bindings/remoteproc/st,stm32-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/st,stm32-rproc.yaml index 843679c557e7..7fe54d529e04 100644 --- a/Documentation/devicetree/bindings/remoteproc/st,stm32-rproc.yaml +++ b/Documentation/devicetree/bindings/remoteproc/st,stm32-rproc.yaml @@ -143,24 +143,45 @@ properties: maxItems: 1 description: Default name of the remote processor firmware.
+ st,rproc-tee: + description: + Reference the remote processor node on TEE bus. The value is a phandle + reference to the remote processor node, followed by a cell specifying + the remote processor device identifier used by the TEE. + $ref: /schemas/types.yaml#/definitions/phandle-array + items: + - items: + - description: Phandle of the remote processor node on the TEE bus + - description: Remote processor device identifier used by the TEE + required: - compatible - reg - - resets
allOf: - if: - properties: - reset-names: - not: - contains: - const: hold_boot - then: required: - - st,syscfg-holdboot - else: + - st,rproc-tee + then: properties: + resets: false + reset-names: false st,syscfg-holdboot: false + else: + required: + - resets + if: + properties: + reset-names: + not: + contains: + const: hold_boot + then: + required: + - st,syscfg-holdboot + else: + properties: + st,syscfg-holdboot: false
additionalProperties: false
@@ -192,5 +213,21 @@ examples: st,syscfg-rsc-tbl = <&tamp 0x144 0xFFFFFFFF>; st,syscfg-m4-state = <&tamp 0x148 0xFFFFFFFF>; }; + - | + firmware { + tee_rproc: optee-rproc { + compatible = "80a4c275-0a47-4905-8285-1486a9771a08"; + }; + }; + + m4@10000000 { + compatible = "st,stm32mp1-m4"; + reg = <0x10000000 0x40000>, + <0x30000000 0x40000>, + <0x38000000 0x10000>; + st,rproc-tee = <&tee_rproc 0>; + st,syscfg-rsc-tbl = <&tamp 0x144 0xFFFFFFFF>; + st,syscfg-m4-state = <&tamp 0x148 0xFFFFFFFF>; + };
...