With FIP support in TF-A (when CONFIG_STM32MP15x_STM32IMAGE
is not activated), the DT nodes needed by OP-TEE are added by OP-TEE
firmware in U-Boot device tree, present in FIP.

These nodes are only required in trusted boot, when TF-A load the file
u-boot.stm32, including the U-Boot device tree with STM32IMAGE header,
in this case OP-TEE can't update the U-Boot device tree.

Moreover in trusted boot mode with FIP, as the OP-TEE nodes are present
in U-Boot device tree only when needed the function
stm32_fdt_disable_optee can be removed.

Signed-off-by: Patrick Delaunay <patrick.delau...@foss.st.com>
Reviewed-by: Patrice Chotard <patrice.chot...@foss.st.com>
---

(no changes since v1)

 arch/arm/dts/stm32mp157a-dk1-u-boot.dtsi |  3 +++
 arch/arm/dts/stm32mp157c-ed1-u-boot.dtsi |  3 +++
 arch/arm/mach-stm32mp/fdt.c              | 11 ++++++++++-
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/arch/arm/dts/stm32mp157a-dk1-u-boot.dtsi 
b/arch/arm/dts/stm32mp157a-dk1-u-boot.dtsi
index 6c62322f1c..36d166a0e1 100644
--- a/arch/arm/dts/stm32mp157a-dk1-u-boot.dtsi
+++ b/arch/arm/dts/stm32mp157a-dk1-u-boot.dtsi
@@ -21,6 +21,8 @@
                st,stm32prog-gpios = <&gpioa 14 GPIO_ACTIVE_LOW>;
        };
 
+#ifdef CONFIG_STM32MP15x_STM32IMAGE
+       /* only needed for boot with TF-A, witout FIP support */
        firmware {
                optee {
                        compatible = "linaro,optee-tz";
@@ -37,6 +39,7 @@
                        u-boot,dm-spl;
                };
        };
+#endif
 
        led {
                red {
diff --git a/arch/arm/dts/stm32mp157c-ed1-u-boot.dtsi 
b/arch/arm/dts/stm32mp157c-ed1-u-boot.dtsi
index 46a43371bd..e5a1cb7084 100644
--- a/arch/arm/dts/stm32mp157c-ed1-u-boot.dtsi
+++ b/arch/arm/dts/stm32mp157c-ed1-u-boot.dtsi
@@ -20,6 +20,8 @@
                st,stm32prog-gpios = <&gpioa 14 GPIO_ACTIVE_LOW>;
        };
 
+#ifdef CONFIG_STM32MP15x_STM32IMAGE
+       /* only needed for boot with TF-A, witout FIP support */
        firmware {
                optee {
                        compatible = "linaro,optee-tz";
@@ -33,6 +35,7 @@
                        no-map;
                };
        };
+#endif
 
        led {
                red {
diff --git a/arch/arm/mach-stm32mp/fdt.c b/arch/arm/mach-stm32mp/fdt.c
index ce2fe0206f..a19e954cf7 100644
--- a/arch/arm/mach-stm32mp/fdt.c
+++ b/arch/arm/mach-stm32mp/fdt.c
@@ -332,7 +332,16 @@ int ft_system_setup(void *blob, struct bd_info *bd)
                                       "st,package", pkg, false);
        }
 
-       if (!CONFIG_IS_ENABLED(OPTEE) ||
+       /*
+        * TEMP: remove OP-TEE nodes in kernel device tree
+        *       copied from U-Boot device tree by optee_copy_fdt_nodes
+        *       when OP-TEE is not detected (probe failed)
+        * these OP-TEE nodes are present in <board>-u-boot.dtsi
+        * under CONFIG_STM32MP15x_STM32IMAGE only for compatibility
+        * when FIP is not used by TF-A
+        */
+       if (CONFIG_IS_ENABLED(STM32MP15x_STM32IMAGE) &&
+           CONFIG_IS_ENABLED(OPTEE) &&
            !tee_find_device(NULL, NULL, NULL, NULL))
                stm32_fdt_disable_optee(blob);
 
-- 
2.25.1

Reply via email to