From: Andrew F. Davis Date: Tue, 29 Nov 2016 22:33:24 +0000 (-0600) Subject: arm: omap5: Add OPTEE node to fdt X-Git-Tag: v2017.01-rc1~76 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=a8ff9685206bc3dd187a604a9d8c75f47a0d3502;p=oweals%2Fu-boot.git arm: omap5: Add OPTEE node to fdt Add an OPTEE node to the FDT when TEE installation has completed successfully. This informs the kernel of the presence of OPTEE. Signed-off-by: Andrew F. Davis Reviewed-by: Tom Rini --- diff --git a/arch/arm/mach-omap2/omap5/fdt.c b/arch/arm/mach-omap2/omap5/fdt.c index da8d59bb59..afa003774b 100644 --- a/arch/arm/mach-omap2/omap5/fdt.c +++ b/arch/arm/mach-omap2/omap5/fdt.c @@ -212,6 +212,38 @@ static int ft_hs_fixup_dram(void *fdt, bd_t *bd) static int ft_hs_fixup_dram(void *fdt, bd_t *bd) { return 0; } #endif +static int ft_hs_add_tee(void *fdt, bd_t *bd) +{ + const char *path, *subpath; + int offs; + + extern int tee_loaded; + if (!tee_loaded) + return 0; + + path = "/"; + offs = fdt_path_offset(fdt, path); + + subpath = "firmware"; + offs = fdt_add_subnode(fdt, offs, subpath); + if (offs < 0) { + printf("Could not create %s node.\n", subpath); + return 1; + } + + subpath = "optee"; + offs = fdt_add_subnode(fdt, offs, subpath); + if (offs < 0) { + printf("Could not create %s node.\n", subpath); + return 1; + } + + fdt_setprop_string(fdt, offs, "compatible", "linaro,optee-tz"); + fdt_setprop_string(fdt, offs, "method", "smc"); + + return 0; +} + static void ft_hs_fixups(void *fdt, bd_t *bd) { /* Check we are running on an HS/EMU device type */ @@ -219,7 +251,8 @@ static void ft_hs_fixups(void *fdt, bd_t *bd) if ((ft_hs_fixup_crossbar(fdt, bd) == 0) && (ft_hs_disable_rng(fdt, bd) == 0) && (ft_hs_fixup_sram(fdt, bd) == 0) && - (ft_hs_fixup_dram(fdt, bd) == 0)) + (ft_hs_fixup_dram(fdt, bd) == 0) && + (ft_hs_add_tee(fdt, bd) == 0)) return; } else { printf("ERROR: Incorrect device type (GP) detected!");