arm: omap5: Add TEE loading support
authorHarinarayan Bhatta <harinarayan@ti.com>
Tue, 29 Nov 2016 22:33:23 +0000 (16:33 -0600)
committerTom Rini <trini@konsulko.com>
Sat, 3 Dec 2016 18:21:21 +0000 (13:21 -0500)
commit57de1ea5be2d731100a33c1433b26772d179f6f0
tree4dcba2f8af6609cfb3b38262cc346e52c16b2c82
parent4c158b9a7d05973e6924835726a2358b383d622f
arm: omap5: Add TEE loading support

secure_tee_install is used to install and initialize a secure TEE OS such as
Linaro OP-TEE into the secure world. This function takes in the address
where the signed TEE image is loaded as an argument. The signed TEE image
consists of a header (struct tee_header), TEE code+data followed by the
signature generated using image signing tool from TI security development
package (SECDEV). Refer to README.ti-secure for more information.

This function uses 2 new secure APIs.

1. PPA_SERV_HAL_TEE_LOAD_MASTER - Must be called on CPU Core 0. Protected
   memory for TEE must be reserved before calling this function. This API
   needs arguments filled into struct ppa_tee_load_info. The TEE image is
   authenticated and if there are no errors, the control passes to the TEE
   entry point.

2. PPA_SERV_HAL_TEE_LOAD_SLAVE - Called on other CPU cores only after
   a TEE_LOAD_MASTER call. Takes no arguments. Checks if TEE was
   successfully loaded (on core 0) and transfers control to the same TEE
   entry point.

The code at TEE entry point is expected perform OS initialization steps
and return back to non-secure world (U-Boot).

Signed-off-by: Harinarayan Bhatta <harinarayan@ti.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
arch/arm/include/asm/omap_sec_common.h
arch/arm/mach-omap2/omap5/sec-fxns.c
include/tee/optee.h [new file with mode: 0644]