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