diff options
author | Patrick Delaunay <patrick.delaunay@foss.st.com> | 2021-07-26 11:21:35 +0200 |
---|---|---|
committer | Patrice Chotard <patrice.chotard@foss.st.com> | 2021-08-16 09:34:27 +0200 |
commit | f91783edf22468beb4f0d3b139a4ff343a8057ab (patch) | |
tree | e9dd2efe0040113c8bdcf3bb71fcacd6e6f19861 | |
parent | 6de57b41ddeddf6a01a61ea14614a90aba0bcd92 (diff) | |
download | u-boot-f91783edf22468beb4f0d3b139a4ff343a8057ab.zip u-boot-f91783edf22468beb4f0d3b139a4ff343a8057ab.tar.gz u-boot-f91783edf22468beb4f0d3b139a4ff343a8057ab.tar.bz2 |
arm: stm32mp: handle the OP-TEE nodes in DT with FIP support
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.delaunay@foss.st.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
-rw-r--r-- | arch/arm/dts/stm32mp157a-dk1-u-boot.dtsi | 3 | ||||
-rw-r--r-- | arch/arm/dts/stm32mp157c-ed1-u-boot.dtsi | 3 | ||||
-rw-r--r-- | arch/arm/mach-stm32mp/fdt.c | 11 |
3 files changed, 16 insertions, 1 deletions
diff --git a/arch/arm/dts/stm32mp157a-dk1-u-boot.dtsi b/arch/arm/dts/stm32mp157a-dk1-u-boot.dtsi index a8e15ad..ace51f9 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 | GPIO_PULL_UP)>; }; +#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 fc6066a..b23dae3 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 | GPIO_PULL_UP)>; }; +#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 ce2fe02..a19e954 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); |