* [U-Boot] [PATCH 0/6] AM43xx OP-TEE support
@ 2017-06-16 19:26 Andrew F. Davis
2017-06-16 19:26 ` [U-Boot] [PATCH 1/6] arm: mach-omap2: Move omap5/sec-fxns.c into sec-common.c Andrew F. Davis
` (5 more replies)
0 siblings, 6 replies; 18+ messages in thread
From: Andrew F. Davis @ 2017-06-16 19:26 UTC (permalink / raw)
To: u-boot
Hello all,
This series brings our firewall and OP-TEE support from DRA7xx/AM57xx
family devices to the AM43xx class devices. We do this by factoring
out code common code from omap5/ into common mach-omap2/ sources. Then
add the hooks for the AM43xx boards.
Thanks,
Andrew
Andrew F. Davis (6):
arm: mach-omap2: Move omap5/sec-fxns.c into sec-common.c
arm: mach-omap2: Factor out common FDT fixup suport
arm: mach-omap2: fdt-common: Add OP-TEE node when firmware node is
defined
arm: mach-omap2: am33xx: Add FDT fixup suport for AM33xx/AM43xx boards
board: ti: am43xx: Add TEE loading and firewall setup
board: ti: am43xx: Add FDT fixup for HS devices
arch/arm/include/asm/omap_common.h | 5 +
arch/arm/include/asm/omap_sec_common.h | 6 +
arch/arm/mach-omap2/Kconfig | 26 ++++
arch/arm/mach-omap2/Makefile | 2 +
arch/arm/mach-omap2/am33xx/Makefile | 1 +
arch/arm/mach-omap2/am33xx/fdt.c | 43 ++++++
arch/arm/mach-omap2/fdt-common.c | 168 +++++++++++++++++++++
arch/arm/mach-omap2/omap5/Kconfig | 26 ----
arch/arm/mach-omap2/omap5/Makefile | 1 -
arch/arm/mach-omap2/omap5/fdt.c | 119 ---------------
.../mach-omap2/{omap5/sec-fxns.c => sec-common.c} | 157 ++++++++++++++++++-
board/ti/am43xx/board.c | 16 ++
configs/am43xx_hs_evm_defconfig | 4 +
13 files changed, 420 insertions(+), 154 deletions(-)
create mode 100644 arch/arm/mach-omap2/am33xx/fdt.c
create mode 100644 arch/arm/mach-omap2/fdt-common.c
rename arch/arm/mach-omap2/{omap5/sec-fxns.c => sec-common.c} (64%)
--
2.13.0
^ permalink raw reply [flat|nested] 18+ messages in thread* [U-Boot] [PATCH 1/6] arm: mach-omap2: Move omap5/sec-fxns.c into sec-common.c 2017-06-16 19:26 [U-Boot] [PATCH 0/6] AM43xx OP-TEE support Andrew F. Davis @ 2017-06-16 19:26 ` Andrew F. Davis 2017-06-17 7:31 ` Lokesh Vutla 2017-06-19 12:17 ` Tom Rini 2017-06-16 19:26 ` [U-Boot] [PATCH 2/6] arm: mach-omap2: Factor out common FDT fixup suport Andrew F. Davis ` (4 subsequent siblings) 5 siblings, 2 replies; 18+ messages in thread From: Andrew F. Davis @ 2017-06-16 19:26 UTC (permalink / raw) To: u-boot TEE loading and firewall setup are common to all omap2 devices, move these function out of omap5 and into mach-omap2. This allows us to use these functions from other omap class devices. Signed-off-by: Andrew F. Davis <afd@ti.com> --- arch/arm/mach-omap2/Kconfig | 26 ++++ arch/arm/mach-omap2/omap5/Kconfig | 26 ---- arch/arm/mach-omap2/omap5/Makefile | 1 - .../mach-omap2/{omap5/sec-fxns.c => sec-common.c} | 155 ++++++++++++++++++++- 4 files changed, 174 insertions(+), 34 deletions(-) rename arch/arm/mach-omap2/{omap5/sec-fxns.c => sec-common.c} (64%) diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 683cdb9296..013586edd9 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig @@ -119,6 +119,32 @@ config TI_SECURE_DEVICE authenticated) and the code. See the doc/README.ti-secure file for further details. +config TI_SECURE_EMIF_REGION_START + hex "Reserved EMIF region start address" + depends on TI_SECURE_DEVICE + default 0x0 + help + Reserved EMIF region start address. Set to "0" to auto-select + to be at the end of the external memory region. + +config TI_SECURE_EMIF_TOTAL_REGION_SIZE + hex "Reserved EMIF region size" + depends on TI_SECURE_DEVICE + default 0x0 + help + Total reserved EMIF region size. Default is 0, which means no reserved EMIF + region on secure devices. + +config TI_SECURE_EMIF_PROTECTED_REGION_SIZE + hex "Size of protected region within reserved EMIF region" + depends on TI_SECURE_DEVICE + default 0x0 + help + This config option is used to specify the size of the portion of the total + reserved EMIF region set aside for secure OS needs that will be protected + using hardware memory firewalls. This value must be smaller than the + TI_SECURE_EMIF_TOTAL_REGION_SIZE value. + source "arch/arm/mach-omap2/omap3/Kconfig" source "arch/arm/mach-omap2/omap4/Kconfig" diff --git a/arch/arm/mach-omap2/omap5/Kconfig b/arch/arm/mach-omap2/omap5/Kconfig index 1a66abdeb2..7e8e532d4c 100644 --- a/arch/arm/mach-omap2/omap5/Kconfig +++ b/arch/arm/mach-omap2/omap5/Kconfig @@ -37,32 +37,6 @@ endchoice config SYS_SOC default "omap5" -config TI_SECURE_EMIF_REGION_START - hex "Reserved EMIF region start address" - depends on TI_SECURE_DEVICE - default 0x0 - help - Reserved EMIF region start address. Set to "0" to auto-select - to be at the end of the external memory region. - -config TI_SECURE_EMIF_TOTAL_REGION_SIZE - hex "Reserved EMIF region size" - depends on TI_SECURE_DEVICE - default 0x0 - help - Total reserved EMIF region size. Default is 0, which means no reserved EMIF - region on secure devices. - -config TI_SECURE_EMIF_PROTECTED_REGION_SIZE - hex "Size of protected region within reserved EMIF region" - depends on TI_SECURE_DEVICE - default 0x0 - help - This config option is used to specify the size of the portion of the total - reserved EMIF region set aside for secure OS needs that will be protected - using hardware memory firewalls. This value must be smaller than the - TI_SECURE_EMIF_TOTAL_REGION_SIZE value. - config OMAP_PLATFORM_RESET_TIME_MAX_USEC int "Something" range 0 31219 diff --git a/arch/arm/mach-omap2/omap5/Makefile b/arch/arm/mach-omap2/omap5/Makefile index af17a3deab..a6a5d17ff6 100644 --- a/arch/arm/mach-omap2/omap5/Makefile +++ b/arch/arm/mach-omap2/omap5/Makefile @@ -14,5 +14,4 @@ obj-y += hw_data.o obj-y += abb.o obj-y += fdt.o obj-$(CONFIG_IODELAY_RECALIBRATION) += dra7xx_iodelay.o -obj-$(CONFIG_TI_SECURE_DEVICE) += sec-fxns.o obj-$(CONFIG_DRA7XX) += sec_entry_cpu1.o diff --git a/arch/arm/mach-omap2/omap5/sec-fxns.c b/arch/arm/mach-omap2/sec-common.c similarity index 64% rename from arch/arm/mach-omap2/omap5/sec-fxns.c rename to arch/arm/mach-omap2/sec-common.c index 7fab57592e..f230c9ea4e 100644 --- a/arch/arm/mach-omap2/omap5/sec-fxns.c +++ b/arch/arm/mach-omap2/sec-common.c @@ -1,12 +1,14 @@ /* * - * Security related functions for OMAP5 class devices + * Common security related functions for OMAP devices * - * (C) Copyright 2016 + * (C) Copyright 2016-2017 * Texas Instruments, <www.ti.com> * * Daniel Allred <d-allred@ti.com> + * Andreas Dannenberg <dannenberg@ti.com> * Harinarayan Bhatta <harinarayan@ti.com> + * Andrew F. Davis <afd@ti.com> * * SPDX-License-Identifier: GPL-2.0+ */ @@ -15,14 +17,22 @@ #include <stdarg.h> #include <asm/arch/sys_proto.h> +#include <asm/cache.h> #include <asm/omap_common.h> #include <asm/omap_sec_common.h> #include <asm/spl.h> -#include <spl.h> -#include <asm/cache.h> +#include <asm/ti-common/sys_proto.h> #include <mapmem.h> +#include <spl.h> #include <tee/optee.h> +/* Index for signature verify ROM API */ +#ifdef CONFIG_AM33XX +#define API_HAL_KM_VERIFYCERTIFICATESIGNATURE_INDEX (0x0000000C) +#else +#define API_HAL_KM_VERIFYCERTIFICATESIGNATURE_INDEX (0x0000000E) +#endif + /* Index for signature PPA-based TI HAL APIs */ #define PPA_HAL_SERVICES_START_INDEX (0x200) #define PPA_SERV_HAL_TEE_LOAD_MASTER (PPA_HAL_SERVICES_START_INDEX + 23) @@ -43,6 +53,129 @@ struct ppa_tee_load_info { u32 tee_arg0; /* argument to TEE jump function, in r0 */ }; +static uint32_t secure_rom_call_args[5] __aligned(ARCH_DMA_MINALIGN); + +u32 secure_rom_call(u32 service, u32 proc_id, u32 flag, ...) +{ + int i; + u32 num_args; + va_list ap; + + va_start(ap, flag); + + num_args = va_arg(ap, u32); + + if (num_args > 4) { + va_end(ap); + return 1; + } + + /* Copy args to aligned args structure */ + for (i = 0; i < num_args; i++) + secure_rom_call_args[i + 1] = va_arg(ap, u32); + + secure_rom_call_args[0] = num_args; + + va_end(ap); + + /* if data cache is enabled, flush the aligned args structure */ + flush_dcache_range( + (unsigned int)&secure_rom_call_args[0], + (unsigned int)&secure_rom_call_args[0] + + roundup(sizeof(secure_rom_call_args), ARCH_DMA_MINALIGN)); + + return omap_smc_sec(service, proc_id, flag, secure_rom_call_args); +} + +static u32 find_sig_start(char *image, size_t size) +{ + char *image_end = image + size; + char *sig_start_magic = "CERT_"; + int magic_str_len = strlen(sig_start_magic); + char *ch; + + while (--image_end > image) { + if (*image_end == '_') { + ch = image_end - magic_str_len + 1; + if (!strncmp(ch, sig_start_magic, magic_str_len)) + return (u32)ch; + } + } + return 0; +} + +int secure_boot_verify_image(void **image, size_t *size) +{ + int result = 1; + u32 cert_addr, sig_addr; + size_t cert_size; + + /* Perform cache writeback on input buffer */ + flush_dcache_range( + (u32)*image, + (u32)*image + roundup(*size, ARCH_DMA_MINALIGN)); + + cert_addr = (uint32_t)*image; + sig_addr = find_sig_start((char *)*image, *size); + + if (sig_addr == 0) { + printf("No signature found in image!\n"); + result = 1; + goto auth_exit; + } + + *size = sig_addr - cert_addr; /* Subtract out the signature size */ + cert_size = *size; + + /* Check if image load address is 32-bit aligned */ + if (!IS_ALIGNED(cert_addr, 4)) { + printf("Image is not 4-byte aligned!\n"); + result = 1; + goto auth_exit; + } + + /* Image size also should be multiple of 4 */ + if (!IS_ALIGNED(cert_size, 4)) { + printf("Image size is not 4-byte aligned!\n"); + result = 1; + goto auth_exit; + } + + /* Call ROM HAL API to verify certificate signature */ + debug("%s: load_addr = %x, size = %x, sig_addr = %x\n", __func__, + cert_addr, cert_size, sig_addr); + + result = secure_rom_call( + API_HAL_KM_VERIFYCERTIFICATESIGNATURE_INDEX, 0, 0, + 4, cert_addr, cert_size, sig_addr, 0xFFFFFFFF); + + /* Perform cache writeback on output buffer */ + flush_dcache_range( + (u32)*image, + (u32)*image + roundup(*size, ARCH_DMA_MINALIGN)); + +auth_exit: + if (result != 0) { + printf("Authentication failed!\n"); + printf("Return Value = %08X\n", result); + hang(); + } + + /* + * Output notification of successful authentication as well the name of + * the signing certificate used to re-assure the user that the secure + * code is being processed as expected. However suppress any such log + * output in case of building for SPL and booting via YMODEM. This is + * done to avoid disturbing the YMODEM serial protocol transactions. + */ + if (!(IS_ENABLED(CONFIG_SPL_BUILD) && + IS_ENABLED(CONFIG_SPL_YMODEM_SUPPORT) && + spl_boot_device() == BOOT_DEVICE_UART)) + printf("Authentication passed: %s\n", (char *)sig_addr); + + return result; +} + static u32 get_sec_mem_start(void) { u32 sec_mem_start = CONFIG_TI_SECURE_EMIF_REGION_START; @@ -55,8 +188,14 @@ static u32 get_sec_mem_start(void) */ if (sec_mem_start == 0) sec_mem_start = - (CONFIG_SYS_SDRAM_BASE + - (omap_sdram_size() - sec_mem_size)); + (CONFIG_SYS_SDRAM_BASE + ( +#if defined(CONFIG_OMAP54XX) + omap_sdram_size() +#else + get_ram_size((void *)CONFIG_SYS_SDRAM_BASE, + CONFIG_MAX_RAM_BANK_SIZE) +#endif + - sec_mem_size)); return sec_mem_start; } @@ -151,7 +290,6 @@ int secure_tee_install(u32 addr) u32 tee_file_size; u32 sec_mem_start = get_sec_mem_start(); const u32 size = CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE; - u32 *smc_cpu1_params; u32 ret; /* If there is no protected region, there is no place to put the TEE */ @@ -211,7 +349,9 @@ int secure_tee_install(u32 addr) } printf("TEE_LOAD_MASTER Done\n"); +#if defined(CONFIG_OMAP54XX) if (!is_dra72x()) { + u32 *smc_cpu1_params; /* Reuse the tee_info buffer for SMC params */ smc_cpu1_params = (u32 *)&tee_info; smc_cpu1_params[0] = 0; @@ -227,6 +367,7 @@ int secure_tee_install(u32 addr) } printf("TEE_LOAD_SLAVE Done\n"); } +#endif tee_loaded = 1; -- 2.13.0 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 1/6] arm: mach-omap2: Move omap5/sec-fxns.c into sec-common.c 2017-06-16 19:26 ` [U-Boot] [PATCH 1/6] arm: mach-omap2: Move omap5/sec-fxns.c into sec-common.c Andrew F. Davis @ 2017-06-17 7:31 ` Lokesh Vutla 2017-06-19 12:17 ` Tom Rini 1 sibling, 0 replies; 18+ messages in thread From: Lokesh Vutla @ 2017-06-17 7:31 UTC (permalink / raw) To: u-boot On Saturday 17 June 2017 12:56 AM, Andrew F. Davis wrote: > TEE loading and firewall setup are common to all omap2 devices, move > these function out of omap5 and into mach-omap2. This allows us > to use these functions from other omap class devices. > > Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com> Thanks and regards, Lokesh ^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 1/6] arm: mach-omap2: Move omap5/sec-fxns.c into sec-common.c 2017-06-16 19:26 ` [U-Boot] [PATCH 1/6] arm: mach-omap2: Move omap5/sec-fxns.c into sec-common.c Andrew F. Davis 2017-06-17 7:31 ` Lokesh Vutla @ 2017-06-19 12:17 ` Tom Rini 1 sibling, 0 replies; 18+ messages in thread From: Tom Rini @ 2017-06-19 12:17 UTC (permalink / raw) To: u-boot On Fri, Jun 16, 2017 at 02:26:56PM -0500, Andrew F. Davis wrote: > TEE loading and firewall setup are common to all omap2 devices, move > these function out of omap5 and into mach-omap2. This allows us > to use these functions from other omap class devices. > > Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Tom Rini <trini@konsulko.com> -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170619/e21a594e/attachment.sig> ^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 2/6] arm: mach-omap2: Factor out common FDT fixup suport 2017-06-16 19:26 [U-Boot] [PATCH 0/6] AM43xx OP-TEE support Andrew F. Davis 2017-06-16 19:26 ` [U-Boot] [PATCH 1/6] arm: mach-omap2: Move omap5/sec-fxns.c into sec-common.c Andrew F. Davis @ 2017-06-16 19:26 ` Andrew F. Davis 2017-06-17 7:31 ` Lokesh Vutla 2017-06-19 12:17 ` Tom Rini 2017-06-16 19:26 ` [U-Boot] [PATCH 3/6] arm: mach-omap2: fdt-common: Add OP-TEE node when firmware node is defined Andrew F. Davis ` (3 subsequent siblings) 5 siblings, 2 replies; 18+ messages in thread From: Andrew F. Davis @ 2017-06-16 19:26 UTC (permalink / raw) To: u-boot Some of the fixups currently done for OMAP5 class boards are common to other OMAP family devices, move these to fdt-common.c. Signed-off-by: Andrew F. Davis <afd@ti.com> --- arch/arm/include/asm/omap_common.h | 5 ++ arch/arm/include/asm/omap_sec_common.h | 6 ++ arch/arm/mach-omap2/Makefile | 2 + arch/arm/mach-omap2/fdt-common.c | 160 +++++++++++++++++++++++++++++++++ arch/arm/mach-omap2/omap5/fdt.c | 119 ------------------------ arch/arm/mach-omap2/sec-common.c | 2 +- 6 files changed, 174 insertions(+), 120 deletions(-) create mode 100644 arch/arm/mach-omap2/fdt-common.c diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h index d2ca277772..ef5c481349 100644 --- a/arch/arm/include/asm/omap_common.h +++ b/arch/arm/include/asm/omap_common.h @@ -680,6 +680,11 @@ void omap_die_id(unsigned int *die_id); /* Initialize general purpose I2C(0) on the SoC */ void gpi2c_init(void); +/* Common FDT Fixups */ +int ft_hs_disable_rng(void *fdt, bd_t *bd); +int ft_hs_fixup_dram(void *fdt, bd_t *bd); +int ft_hs_add_tee(void *fdt, bd_t *bd); + /* ABB */ #define OMAP_ABB_NOMINAL_OPP 0 #define OMAP_ABB_FAST_OPP 1 diff --git a/arch/arm/include/asm/omap_sec_common.h b/arch/arm/include/asm/omap_sec_common.h index 79f1fbd2c1..76d0862270 100644 --- a/arch/arm/include/asm/omap_sec_common.h +++ b/arch/arm/include/asm/omap_sec_common.h @@ -28,6 +28,12 @@ u32 secure_rom_call(u32 service, u32 proc_id, u32 flag, ...); int secure_boot_verify_image(void **p_image, size_t *p_size); /* + * Return the start of secure reserved RAM, if a default start address has + * not been configured then return a region at the end of the external DRAM. + */ +u32 get_sec_mem_start(void); + +/* * Invoke a secure HAL API that allows configuration of the external memory * firewall regions. */ diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index d43085ca98..d86643db34 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile @@ -45,4 +45,6 @@ obj-y += lowlevel_init.o obj-y += mem-common.o +obj-y += fdt-common.o + obj-$(CONFIG_TI_SECURE_DEVICE) += sec-common.o diff --git a/arch/arm/mach-omap2/fdt-common.c b/arch/arm/mach-omap2/fdt-common.c new file mode 100644 index 0000000000..297d4d4df5 --- /dev/null +++ b/arch/arm/mach-omap2/fdt-common.c @@ -0,0 +1,160 @@ +/* + * Copyright 2016-2017 Texas Instruments, Inc. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <libfdt.h> +#include <fdt_support.h> + +#include <asm/omap_common.h> +#include <asm/omap_sec_common.h> + +#ifdef CONFIG_TI_SECURE_DEVICE + +/* Give zero values if not already defined */ +#ifndef TI_OMAP5_SECURE_BOOT_RESV_SRAM_SZ +#define TI_OMAP5_SECURE_BOOT_RESV_SRAM_SZ (0) +#endif +#ifndef CONFIG_SECURE_RUNTIME_RESV_SRAM_SZ +#define CONFIG_SECURE_RUNTIME_RESV_SRAM_SZ (0) +#endif + +int ft_hs_disable_rng(void *fdt, bd_t *bd) +{ + const char *path; + int offs; + int ret; + + /* Make HW RNG reserved for secure world use */ + path = "/ocp/rng"; + offs = fdt_path_offset(fdt, path); + if (offs < 0) { + debug("Node %s not found.\n", path); + return 0; + } + ret = fdt_setprop_string(fdt, offs, + "status", "disabled"); + if (ret < 0) { + printf("Could not add status property to node %s: %s\n", + path, fdt_strerror(ret)); + return ret; + } + return 0; +} + +#if (CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE != 0) +/* + * fdt_pack_reg - pack address and size array into the "reg"-suitable stream + */ +static int fdt_pack_reg(const void *fdt, void *buf, u64 address, u64 size) +{ + int address_cells = fdt_address_cells(fdt, 0); + int size_cells = fdt_size_cells(fdt, 0); + char *p = buf; + + if (address_cells == 2) + *(fdt64_t *)p = cpu_to_fdt64(address); + else + *(fdt32_t *)p = cpu_to_fdt32(address); + p += 4 * address_cells; + + if (size_cells == 2) + *(fdt64_t *)p = cpu_to_fdt64(size); + else + *(fdt32_t *)p = cpu_to_fdt32(size); + p += 4 * size_cells; + + return p - (char *)buf; +} + +int ft_hs_fixup_dram(void *fdt, bd_t *bd) +{ + const char *path, *subpath; + int offs, len; + u32 sec_mem_start = get_sec_mem_start(); + u32 sec_mem_size = CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE; + fdt32_t address_cells = cpu_to_fdt32(fdt_address_cells(fdt, 0)); + fdt32_t size_cells = cpu_to_fdt32(fdt_size_cells(fdt, 0)); + u8 temp[16]; /* Up to 64-bit address + 64-bit size */ + + /* Delete any original secure_reserved node */ + path = "/reserved-memory/secure_reserved"; + offs = fdt_path_offset(fdt, path); + if (offs >= 0) + fdt_del_node(fdt, offs); + + /* Add new secure_reserved node */ + path = "/reserved-memory"; + offs = fdt_path_offset(fdt, path); + if (offs < 0) { + debug("Node %s not found\n", path); + path = "/"; + subpath = "reserved-memory"; + offs = fdt_path_offset(fdt, path); + offs = fdt_add_subnode(fdt, offs, subpath); + if (offs < 0) { + printf("Could not create %s%s node.\n", path, subpath); + return 1; + } + path = "/reserved-memory"; + offs = fdt_path_offset(fdt, path); + + fdt_setprop(fdt, offs, "#address-cells", &address_cells, sizeof(address_cells)); + fdt_setprop(fdt, offs, "#size-cells", &size_cells, sizeof(size_cells)); + fdt_setprop(fdt, offs, "ranges", NULL, 0); + } + + subpath = "secure_reserved"; + offs = fdt_add_subnode(fdt, offs, subpath); + if (offs < 0) { + printf("Could not create %s%s node.\n", path, subpath); + return 1; + } + + fdt_setprop_string(fdt, offs, "compatible", "ti,secure-memory"); + fdt_setprop_string(fdt, offs, "status", "okay"); + fdt_setprop(fdt, offs, "no-map", NULL, 0); + len = fdt_pack_reg(fdt, temp, sec_mem_start, sec_mem_size); + fdt_setprop(fdt, offs, "reg", temp, len); + + return 0; +} +#else +int ft_hs_fixup_dram(void *fdt, bd_t *bd) { return 0; } +#endif + +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; +} + +#endif diff --git a/arch/arm/mach-omap2/omap5/fdt.c b/arch/arm/mach-omap2/omap5/fdt.c index 7a3a8db517..1e556da9be 100644 --- a/arch/arm/mach-omap2/omap5/fdt.c +++ b/arch/arm/mach-omap2/omap5/fdt.c @@ -90,29 +90,6 @@ static int ft_hs_fixup_crossbar(void *fdt, bd_t *bd) return 0; } -static int ft_hs_disable_rng(void *fdt, bd_t *bd) -{ - const char *path; - int offs; - int ret; - - /* Make HW RNG reserved for secure world use */ - path = "/ocp/rng"; - offs = fdt_path_offset(fdt, path); - if (offs < 0) { - debug("Node %s not found.\n", path); - return 0; - } - ret = fdt_setprop_string(fdt, offs, - "status", "disabled"); - if (ret < 0) { - printf("Could not add status property to node %s: %s\n", - path, fdt_strerror(ret)); - return ret; - } - return 0; -} - #if ((TI_OMAP5_SECURE_BOOT_RESV_SRAM_SZ != 0) || \ (CONFIG_SECURE_RUNTIME_RESV_SRAM_SZ != 0)) static int ft_hs_fixup_sram(void *fdt, bd_t *bd) @@ -153,102 +130,6 @@ static int ft_hs_fixup_sram(void *fdt, bd_t *bd) static int ft_hs_fixup_sram(void *fdt, bd_t *bd) { return 0; } #endif -#if (CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE != 0) -static int ft_hs_fixup_dram(void *fdt, bd_t *bd) -{ - const char *path, *subpath; - int offs; - u32 sec_mem_start = CONFIG_TI_SECURE_EMIF_REGION_START; - u32 sec_mem_size = CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE; - fdt64_t temp[2]; - fdt32_t two; - - /* If start address is zero, place@end of DRAM */ - if (0 == sec_mem_start) - sec_mem_start = - (CONFIG_SYS_SDRAM_BASE + - (omap_sdram_size() - sec_mem_size)); - - /* Delete any original secure_reserved node */ - path = "/reserved-memory/secure_reserved"; - offs = fdt_path_offset(fdt, path); - if (offs >= 0) - fdt_del_node(fdt, offs); - - /* Add new secure_reserved node */ - path = "/reserved-memory"; - offs = fdt_path_offset(fdt, path); - if (offs < 0) { - debug("Node %s not found\n", path); - path = "/"; - subpath = "reserved-memory"; - offs = fdt_path_offset(fdt, path); - offs = fdt_add_subnode(fdt, offs, subpath); - if (offs < 0) { - printf("Could not create %s%s node.\n", path, subpath); - return 1; - } - path = "/reserved-memory"; - offs = fdt_path_offset(fdt, path); - two = cpu_to_fdt32(2); - fdt_setprop(fdt, offs, "#address-cells", &two, sizeof(two)); - fdt_setprop(fdt, offs, "#size-cells", &two, sizeof(two)); - fdt_setprop(fdt, offs, "ranges", NULL, 0); - } - - subpath = "secure_reserved"; - offs = fdt_add_subnode(fdt, offs, subpath); - if (offs < 0) { - printf("Could not create %s%s node.\n", path, subpath); - return 1; - } - - temp[0] = cpu_to_fdt64(((u64)sec_mem_start)); - temp[1] = cpu_to_fdt64(((u64)sec_mem_size)); - fdt_setprop_string(fdt, offs, "compatible", - "ti,dra7-secure-memory"); - fdt_setprop_string(fdt, offs, "status", "okay"); - fdt_setprop(fdt, offs, "no-map", NULL, 0); - fdt_setprop(fdt, offs, "reg", temp, sizeof(temp)); - - return 0; -} -#else -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 */ diff --git a/arch/arm/mach-omap2/sec-common.c b/arch/arm/mach-omap2/sec-common.c index f230c9ea4e..030b36f332 100644 --- a/arch/arm/mach-omap2/sec-common.c +++ b/arch/arm/mach-omap2/sec-common.c @@ -176,7 +176,7 @@ auth_exit: return result; } -static u32 get_sec_mem_start(void) +u32 get_sec_mem_start(void) { u32 sec_mem_start = CONFIG_TI_SECURE_EMIF_REGION_START; u32 sec_mem_size = CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE; -- 2.13.0 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 2/6] arm: mach-omap2: Factor out common FDT fixup suport 2017-06-16 19:26 ` [U-Boot] [PATCH 2/6] arm: mach-omap2: Factor out common FDT fixup suport Andrew F. Davis @ 2017-06-17 7:31 ` Lokesh Vutla 2017-06-19 12:17 ` Tom Rini 1 sibling, 0 replies; 18+ messages in thread From: Lokesh Vutla @ 2017-06-17 7:31 UTC (permalink / raw) To: u-boot On Saturday 17 June 2017 12:56 AM, Andrew F. Davis wrote: > Some of the fixups currently done for OMAP5 class boards are common to > other OMAP family devices, move these to fdt-common.c. > > Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com> Thanks and regards, Lokesh ^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 2/6] arm: mach-omap2: Factor out common FDT fixup suport 2017-06-16 19:26 ` [U-Boot] [PATCH 2/6] arm: mach-omap2: Factor out common FDT fixup suport Andrew F. Davis 2017-06-17 7:31 ` Lokesh Vutla @ 2017-06-19 12:17 ` Tom Rini 1 sibling, 0 replies; 18+ messages in thread From: Tom Rini @ 2017-06-19 12:17 UTC (permalink / raw) To: u-boot On Fri, Jun 16, 2017 at 02:26:57PM -0500, Andrew F. Davis wrote: > Some of the fixups currently done for OMAP5 class boards are common to > other OMAP family devices, move these to fdt-common.c. > > Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Tom Rini <trini@konsulko.com> -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170619/96e88a54/attachment.sig> ^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 3/6] arm: mach-omap2: fdt-common: Add OP-TEE node when firmware node is defined 2017-06-16 19:26 [U-Boot] [PATCH 0/6] AM43xx OP-TEE support Andrew F. Davis 2017-06-16 19:26 ` [U-Boot] [PATCH 1/6] arm: mach-omap2: Move omap5/sec-fxns.c into sec-common.c Andrew F. Davis 2017-06-16 19:26 ` [U-Boot] [PATCH 2/6] arm: mach-omap2: Factor out common FDT fixup suport Andrew F. Davis @ 2017-06-16 19:26 ` Andrew F. Davis 2017-06-17 7:32 ` Lokesh Vutla 2017-06-16 19:26 ` [U-Boot] [PATCH 4/6] arm: mach-omap2: am33xx: Add FDT fixup suport for AM33xx/AM43xx boards Andrew F. Davis ` (2 subsequent siblings) 5 siblings, 1 reply; 18+ messages in thread From: Andrew F. Davis @ 2017-06-16 19:26 UTC (permalink / raw) To: u-boot If a firmware node is already present in the FDT we will fail to create one and so fail to add our OP-TEE node, make this fixup first check for a firmware node and then only try to add one if it is not found. Signed-off-by: Andrew F. Davis <afd@ti.com> --- arch/arm/mach-omap2/fdt-common.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/arch/arm/mach-omap2/fdt-common.c b/arch/arm/mach-omap2/fdt-common.c index 297d4d4df5..9297e9db48 100644 --- a/arch/arm/mach-omap2/fdt-common.c +++ b/arch/arm/mach-omap2/fdt-common.c @@ -134,14 +134,22 @@ int ft_hs_add_tee(void *fdt, bd_t *bd) if (!tee_loaded) return 0; - path = "/"; + path = "/firmware"; 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; + path = "/"; + offs = fdt_path_offset(fdt, path); + if (offs < 0) { + printf("Could not find root node.\n"); + return 1; + } + + subpath = "firmware"; + offs = fdt_add_subnode(fdt, offs, subpath); + if (offs < 0) { + printf("Could not create %s node.\n", subpath); + return 1; + } } subpath = "optee"; -- 2.13.0 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 3/6] arm: mach-omap2: fdt-common: Add OP-TEE node when firmware node is defined 2017-06-16 19:26 ` [U-Boot] [PATCH 3/6] arm: mach-omap2: fdt-common: Add OP-TEE node when firmware node is defined Andrew F. Davis @ 2017-06-17 7:32 ` Lokesh Vutla 0 siblings, 0 replies; 18+ messages in thread From: Lokesh Vutla @ 2017-06-17 7:32 UTC (permalink / raw) To: u-boot On Saturday 17 June 2017 12:56 AM, Andrew F. Davis wrote: > If a firmware node is already present in the FDT we will fail to create > one and so fail to add our OP-TEE node, make this fixup first check for > a firmware node and then only try to add one if it is not found. > > Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com> Thanks and regards, Lokesh ^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 4/6] arm: mach-omap2: am33xx: Add FDT fixup suport for AM33xx/AM43xx boards 2017-06-16 19:26 [U-Boot] [PATCH 0/6] AM43xx OP-TEE support Andrew F. Davis ` (2 preceding siblings ...) 2017-06-16 19:26 ` [U-Boot] [PATCH 3/6] arm: mach-omap2: fdt-common: Add OP-TEE node when firmware node is defined Andrew F. Davis @ 2017-06-16 19:26 ` Andrew F. Davis 2017-06-17 7:32 ` Lokesh Vutla 2017-06-19 12:17 ` Tom Rini 2017-06-16 19:27 ` [U-Boot] [PATCH 5/6] board: ti: am43xx: Add TEE loading and firewall setup Andrew F. Davis 2017-06-16 19:27 ` [U-Boot] [PATCH 6/6] board: ti: am43xx: Add FDT fixup for HS devices Andrew F. Davis 5 siblings, 2 replies; 18+ messages in thread From: Andrew F. Davis @ 2017-06-16 19:26 UTC (permalink / raw) To: u-boot Similar to what is done with OMAP5 class boards we need to perform fixups common to this SoC class, add support for this here and add HS fixups. Signed-off-by: Andrew F. Davis <afd@ti.com> --- arch/arm/mach-omap2/am33xx/Makefile | 1 + arch/arm/mach-omap2/am33xx/fdt.c | 43 +++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 arch/arm/mach-omap2/am33xx/fdt.c diff --git a/arch/arm/mach-omap2/am33xx/Makefile b/arch/arm/mach-omap2/am33xx/Makefile index b2f8158e73..9d4f83cb75 100644 --- a/arch/arm/mach-omap2/am33xx/Makefile +++ b/arch/arm/mach-omap2/am33xx/Makefile @@ -23,6 +23,7 @@ obj-y += board.o obj-y += mux.o obj-y += prcm-regs.o obj-y += hw_data.o +obj-y += fdt.o obj-$(CONFIG_CLOCK_SYNTHESIZER) += clk_synthesizer.o diff --git a/arch/arm/mach-omap2/am33xx/fdt.c b/arch/arm/mach-omap2/am33xx/fdt.c new file mode 100644 index 0000000000..02e8243800 --- /dev/null +++ b/arch/arm/mach-omap2/am33xx/fdt.c @@ -0,0 +1,43 @@ +/* + * Copyright 2017 Texas Instruments, Inc. + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <libfdt.h> +#include <fdt_support.h> +#include <malloc.h> + +#include <asm/omap_common.h> +#include <asm/arch-am33xx/sys_proto.h> + +#ifdef CONFIG_TI_SECURE_DEVICE + +static void ft_hs_fixups(void *fdt, bd_t *bd) +{ + /* Check we are running on an HS/EMU device type */ + if (GP_DEVICE != get_device_type()) { + if ((ft_hs_disable_rng(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!"); + } + /* Fixup failed or wrong device type */ + hang(); +} +#else +static void ft_hs_fixups(void *fdt, bd_t *bd) { } +#endif /* #ifdef CONFIG_TI_SECURE_DEVICE */ + +/* + * Place for general cpu/SoC FDT fixups. Board specific + * fixups should remain in the board files which is where + * this function should be called from. + */ +void ft_cpu_setup(void *fdt, bd_t *bd) +{ + ft_hs_fixups(fdt, bd); +} -- 2.13.0 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 4/6] arm: mach-omap2: am33xx: Add FDT fixup suport for AM33xx/AM43xx boards 2017-06-16 19:26 ` [U-Boot] [PATCH 4/6] arm: mach-omap2: am33xx: Add FDT fixup suport for AM33xx/AM43xx boards Andrew F. Davis @ 2017-06-17 7:32 ` Lokesh Vutla 2017-06-19 12:17 ` Tom Rini 1 sibling, 0 replies; 18+ messages in thread From: Lokesh Vutla @ 2017-06-17 7:32 UTC (permalink / raw) To: u-boot On Saturday 17 June 2017 12:56 AM, Andrew F. Davis wrote: > Similar to what is done with OMAP5 class boards we need to > perform fixups common to this SoC class, add support for this here > and add HS fixups. > > Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com> Thanks and regards, Lokesh ^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 4/6] arm: mach-omap2: am33xx: Add FDT fixup suport for AM33xx/AM43xx boards 2017-06-16 19:26 ` [U-Boot] [PATCH 4/6] arm: mach-omap2: am33xx: Add FDT fixup suport for AM33xx/AM43xx boards Andrew F. Davis 2017-06-17 7:32 ` Lokesh Vutla @ 2017-06-19 12:17 ` Tom Rini 1 sibling, 0 replies; 18+ messages in thread From: Tom Rini @ 2017-06-19 12:17 UTC (permalink / raw) To: u-boot On Fri, Jun 16, 2017 at 02:26:59PM -0500, Andrew F. Davis wrote: > Similar to what is done with OMAP5 class boards we need to > perform fixups common to this SoC class, add support for this here > and add HS fixups. > > Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Tom Rini <trini@konsulko.com> -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170619/14ad4b8d/attachment.sig> ^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 5/6] board: ti: am43xx: Add TEE loading and firewall setup 2017-06-16 19:26 [U-Boot] [PATCH 0/6] AM43xx OP-TEE support Andrew F. Davis ` (3 preceding siblings ...) 2017-06-16 19:26 ` [U-Boot] [PATCH 4/6] arm: mach-omap2: am33xx: Add FDT fixup suport for AM33xx/AM43xx boards Andrew F. Davis @ 2017-06-16 19:27 ` Andrew F. Davis 2017-06-17 7:35 ` Lokesh Vutla 2017-06-16 19:27 ` [U-Boot] [PATCH 6/6] board: ti: am43xx: Add FDT fixup for HS devices Andrew F. Davis 5 siblings, 1 reply; 18+ messages in thread From: Andrew F. Davis @ 2017-06-16 19:27 UTC (permalink / raw) To: u-boot Add support for loading a TEE and setting up firewalled regions to AM43xx HS boards. Signed-off-by: Andrew F. Davis <afd@ti.com> --- board/ti/am43xx/board.c | 7 +++++++ configs/am43xx_hs_evm_defconfig | 3 +++ 2 files changed, 10 insertions(+) diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c index 54f40e64a4..96032215a6 100644 --- a/board/ti/am43xx/board.c +++ b/board/ti/am43xx/board.c @@ -859,4 +859,11 @@ void board_fit_image_post_process(void **p_image, size_t *p_size) { secure_boot_verify_image(p_image, p_size); } + +void board_tee_image_process(ulong tee_image, size_t tee_size) +{ + secure_tee_install((u32)tee_image); +} + +U_BOOT_FIT_LOADABLE_HANDLER(IH_TYPE_TEE, board_tee_image_process); #endif diff --git a/configs/am43xx_hs_evm_defconfig b/configs/am43xx_hs_evm_defconfig index 6f3cb516fd..37d8e484db 100644 --- a/configs/am43xx_hs_evm_defconfig +++ b/configs/am43xx_hs_evm_defconfig @@ -4,6 +4,9 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000 CONFIG_AM43XX=y CONFIG_TI_COMMON_CMD_OPTIONS=y CONFIG_TI_SECURE_DEVICE=y +CONFIG_TI_SECURE_EMIF_REGION_START=0xbdb00000 +CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE=0x02000000 +CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE=0x01c00000 CONFIG_TARGET_AM43XX_EVM=y CONFIG_ISW_ENTRY_ADDR=0x403018e0 CONFIG_SPL_STACK_R_ADDR=0x82000000 -- 2.13.0 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 5/6] board: ti: am43xx: Add TEE loading and firewall setup 2017-06-16 19:27 ` [U-Boot] [PATCH 5/6] board: ti: am43xx: Add TEE loading and firewall setup Andrew F. Davis @ 2017-06-17 7:35 ` Lokesh Vutla 2017-07-10 19:45 ` Andrew F. Davis 0 siblings, 1 reply; 18+ messages in thread From: Lokesh Vutla @ 2017-06-17 7:35 UTC (permalink / raw) To: u-boot On Saturday 17 June 2017 12:57 AM, Andrew F. Davis wrote: > Add support for loading a TEE and setting up firewalled regions to > AM43xx HS boards. > > Signed-off-by: Andrew F. Davis <afd@ti.com> > --- > board/ti/am43xx/board.c | 7 +++++++ > configs/am43xx_hs_evm_defconfig | 3 +++ > 2 files changed, 10 insertions(+) > > diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c > index 54f40e64a4..96032215a6 100644 > --- a/board/ti/am43xx/board.c > +++ b/board/ti/am43xx/board.c > @@ -859,4 +859,11 @@ void board_fit_image_post_process(void **p_image, size_t *p_size) > { > secure_boot_verify_image(p_image, p_size); > } > + > +void board_tee_image_process(ulong tee_image, size_t tee_size) > +{ > + secure_tee_install((u32)tee_image); > +} > + > +U_BOOT_FIT_LOADABLE_HANDLER(IH_TYPE_TEE, board_tee_image_process); > #endif > diff --git a/configs/am43xx_hs_evm_defconfig b/configs/am43xx_hs_evm_defconfig > index 6f3cb516fd..37d8e484db 100644 > --- a/configs/am43xx_hs_evm_defconfig > +++ b/configs/am43xx_hs_evm_defconfig > @@ -4,6 +4,9 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000 > CONFIG_AM43XX=y > CONFIG_TI_COMMON_CMD_OPTIONS=y > CONFIG_TI_SECURE_DEVICE=y > +CONFIG_TI_SECURE_EMIF_REGION_START=0xbdb00000 You might want to include CONFIG_PRAM inorder to not overlap relocation with this region? Thanks and regards, Lokesh > +CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE=0x02000000 > +CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE=0x01c00000 > CONFIG_TARGET_AM43XX_EVM=y > CONFIG_ISW_ENTRY_ADDR=0x403018e0 > CONFIG_SPL_STACK_R_ADDR=0x82000000 > ^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 5/6] board: ti: am43xx: Add TEE loading and firewall setup 2017-06-17 7:35 ` Lokesh Vutla @ 2017-07-10 19:45 ` Andrew F. Davis 0 siblings, 0 replies; 18+ messages in thread From: Andrew F. Davis @ 2017-07-10 19:45 UTC (permalink / raw) To: u-boot On 06/17/2017 02:35 AM, Lokesh Vutla wrote: > > > On Saturday 17 June 2017 12:57 AM, Andrew F. Davis wrote: >> Add support for loading a TEE and setting up firewalled regions to >> AM43xx HS boards. >> >> Signed-off-by: Andrew F. Davis <afd@ti.com> >> --- >> board/ti/am43xx/board.c | 7 +++++++ >> configs/am43xx_hs_evm_defconfig | 3 +++ >> 2 files changed, 10 insertions(+) >> >> diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c >> index 54f40e64a4..96032215a6 100644 >> --- a/board/ti/am43xx/board.c >> +++ b/board/ti/am43xx/board.c >> @@ -859,4 +859,11 @@ void board_fit_image_post_process(void **p_image, size_t *p_size) >> { >> secure_boot_verify_image(p_image, p_size); >> } >> + >> +void board_tee_image_process(ulong tee_image, size_t tee_size) >> +{ >> + secure_tee_install((u32)tee_image); >> +} >> + >> +U_BOOT_FIT_LOADABLE_HANDLER(IH_TYPE_TEE, board_tee_image_process); >> #endif >> diff --git a/configs/am43xx_hs_evm_defconfig b/configs/am43xx_hs_evm_defconfig >> index 6f3cb516fd..37d8e484db 100644 >> --- a/configs/am43xx_hs_evm_defconfig >> +++ b/configs/am43xx_hs_evm_defconfig >> @@ -4,6 +4,9 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000 >> CONFIG_AM43XX=y >> CONFIG_TI_COMMON_CMD_OPTIONS=y >> CONFIG_TI_SECURE_DEVICE=y >> +CONFIG_TI_SECURE_EMIF_REGION_START=0xbdb00000 > > You might want to include CONFIG_PRAM inorder to not overlap relocation > with this region? > I think I'll add this in a separate patch, I'm still not sure that is the best solution to avoid relocation overlap just yet. Thanks, Andrew > Thanks and regards, > Lokesh > >> +CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE=0x02000000 >> +CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE=0x01c00000 >> CONFIG_TARGET_AM43XX_EVM=y >> CONFIG_ISW_ENTRY_ADDR=0x403018e0 >> CONFIG_SPL_STACK_R_ADDR=0x82000000 >> ^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 6/6] board: ti: am43xx: Add FDT fixup for HS devices 2017-06-16 19:26 [U-Boot] [PATCH 0/6] AM43xx OP-TEE support Andrew F. Davis ` (4 preceding siblings ...) 2017-06-16 19:27 ` [U-Boot] [PATCH 5/6] board: ti: am43xx: Add TEE loading and firewall setup Andrew F. Davis @ 2017-06-16 19:27 ` Andrew F. Davis 2017-06-17 7:33 ` Lokesh Vutla 2017-06-19 12:17 ` Tom Rini 5 siblings, 2 replies; 18+ messages in thread From: Andrew F. Davis @ 2017-06-16 19:27 UTC (permalink / raw) To: u-boot Disable RNG and add TEE to FDT used on HS devices. Signed-off-by: Andrew F. Davis <afd@ti.com> --- board/ti/am43xx/board.c | 9 +++++++++ configs/am43xx_hs_evm_defconfig | 1 + 2 files changed, 10 insertions(+) diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c index 96032215a6..933596d59c 100644 --- a/board/ti/am43xx/board.c +++ b/board/ti/am43xx/board.c @@ -838,6 +838,15 @@ int board_eth_init(bd_t *bis) } #endif +#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) +int ft_board_setup(void *blob, bd_t *bd) +{ + ft_cpu_setup(blob, bd); + + return 0; +} +#endif + #ifdef CONFIG_SPL_LOAD_FIT int board_fit_config_name_match(const char *name) { diff --git a/configs/am43xx_hs_evm_defconfig b/configs/am43xx_hs_evm_defconfig index 37d8e484db..699d4cc0de 100644 --- a/configs/am43xx_hs_evm_defconfig +++ b/configs/am43xx_hs_evm_defconfig @@ -12,6 +12,7 @@ CONFIG_ISW_ENTRY_ADDR=0x403018e0 CONFIG_SPL_STACK_R_ADDR=0x82000000 CONFIG_DEFAULT_DEVICE_TREE="am437x-gp-evm" CONFIG_FIT_IMAGE_POST_PROCESS=y +CONFIG_OF_BOARD_SETUP=y CONFIG_SPL_LOAD_FIT=y CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=1,NAND" -- 2.13.0 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 6/6] board: ti: am43xx: Add FDT fixup for HS devices 2017-06-16 19:27 ` [U-Boot] [PATCH 6/6] board: ti: am43xx: Add FDT fixup for HS devices Andrew F. Davis @ 2017-06-17 7:33 ` Lokesh Vutla 2017-06-19 12:17 ` Tom Rini 1 sibling, 0 replies; 18+ messages in thread From: Lokesh Vutla @ 2017-06-17 7:33 UTC (permalink / raw) To: u-boot On Saturday 17 June 2017 12:57 AM, Andrew F. Davis wrote: > Disable RNG and add TEE to FDT used on HS devices. > > Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com> Thanks and regards, Lokesh ^ permalink raw reply [flat|nested] 18+ messages in thread
* [U-Boot] [PATCH 6/6] board: ti: am43xx: Add FDT fixup for HS devices 2017-06-16 19:27 ` [U-Boot] [PATCH 6/6] board: ti: am43xx: Add FDT fixup for HS devices Andrew F. Davis 2017-06-17 7:33 ` Lokesh Vutla @ 2017-06-19 12:17 ` Tom Rini 1 sibling, 0 replies; 18+ messages in thread From: Tom Rini @ 2017-06-19 12:17 UTC (permalink / raw) To: u-boot On Fri, Jun 16, 2017 at 02:27:01PM -0500, Andrew F. Davis wrote: > Disable RNG and add TEE to FDT used on HS devices. > > Signed-off-by: Andrew F. Davis <afd@ti.com> Reviewed-by: Tom Rini <trini@konsulko.com> -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170619/d9f588a0/attachment.sig> ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2017-07-10 19:45 UTC | newest] Thread overview: 18+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-06-16 19:26 [U-Boot] [PATCH 0/6] AM43xx OP-TEE support Andrew F. Davis 2017-06-16 19:26 ` [U-Boot] [PATCH 1/6] arm: mach-omap2: Move omap5/sec-fxns.c into sec-common.c Andrew F. Davis 2017-06-17 7:31 ` Lokesh Vutla 2017-06-19 12:17 ` Tom Rini 2017-06-16 19:26 ` [U-Boot] [PATCH 2/6] arm: mach-omap2: Factor out common FDT fixup suport Andrew F. Davis 2017-06-17 7:31 ` Lokesh Vutla 2017-06-19 12:17 ` Tom Rini 2017-06-16 19:26 ` [U-Boot] [PATCH 3/6] arm: mach-omap2: fdt-common: Add OP-TEE node when firmware node is defined Andrew F. Davis 2017-06-17 7:32 ` Lokesh Vutla 2017-06-16 19:26 ` [U-Boot] [PATCH 4/6] arm: mach-omap2: am33xx: Add FDT fixup suport for AM33xx/AM43xx boards Andrew F. Davis 2017-06-17 7:32 ` Lokesh Vutla 2017-06-19 12:17 ` Tom Rini 2017-06-16 19:27 ` [U-Boot] [PATCH 5/6] board: ti: am43xx: Add TEE loading and firewall setup Andrew F. Davis 2017-06-17 7:35 ` Lokesh Vutla 2017-07-10 19:45 ` Andrew F. Davis 2017-06-16 19:27 ` [U-Boot] [PATCH 6/6] board: ti: am43xx: Add FDT fixup for HS devices Andrew F. Davis 2017-06-17 7:33 ` Lokesh Vutla 2017-06-19 12:17 ` Tom Rini
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox