1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * (C) Copyright 2016
4  * Texas Instruments, <www.ti.com>
5  *
6  * Andreas Dannenberg <dannenberg@ti.com>
7  */
8 #ifndef	_OMAP_SEC_COMMON_H_
9 #define	_OMAP_SEC_COMMON_H_
10 
11 #include <common.h>
12 
13 /*
14  * Invoke secure ROM API on high-security (HS) device variants. It formats
15  * the variable argument list into the format expected by the ROM code before
16  * triggering the actual low-level smc entry.
17  */
18 u32 secure_rom_call(u32 service, u32 proc_id, u32 flag, ...);
19 
20 /*
21  * Invoke a secure ROM API on high-secure (HS) device variants that can be used
22  * to verify a secure blob by authenticating and optionally decrypting it. The
23  * exact operation performed depends on how the certificate that was embedded
24  * into the blob during the signing/encryption step when the secure blob was
25  * first created.
26  */
27 int secure_boot_verify_image(void **p_image, size_t *p_size);
28 
29 /*
30  * Return the start of secure reserved RAM, if a default start address has
31  * not been configured then return a region at the end of the external DRAM.
32  */
33 u32 get_sec_mem_start(void);
34 
35 /*
36  * Invoke a secure HAL API that allows configuration of the external memory
37  * firewall regions.
38  */
39 int secure_emif_firewall_setup(uint8_t region_num, uint32_t start_addr,
40 			       uint32_t size, uint32_t access_perm,
41 			       uint32_t initiator_perm);
42 
43 /*
44  * Invoke a secure HAL API on high-secure (HS) device variants that reserves a
45  * region of external memory for secure world use, and protects it using memory
46  * firewalls that prevent public world access. This API is intended to setaside
47  * memory that will be used for a secure world OS/TEE.
48  */
49 int secure_emif_reserve(void);
50 
51 /*
52  * Invoke a secure HAL API to lock the external memory firewall configurations.
53  * After this API is called, none of the HAL APIs for configuring the that
54  * firewall will be usable (calls to those APIs will return failure and have
55  * no effect).
56  */
57 int secure_emif_firewall_lock(void);
58 
59 /*
60  * Invoke a secure HAL API to authenticate and install a Trusted Execution
61  * Environment (TEE) image.
62  */
63 int secure_tee_install(u32 tee_image);
64 
65 #endif /* _OMAP_SEC_COMMON_H_ */
66