Yatharth Kochar | 71c9a5e | 2015-10-10 19:06:53 +0100 | [diff] [blame] | 1 | /* |
Soby Mathew | 6e16a33 | 2018-01-10 12:51:34 +0000 | [diff] [blame] | 2 | * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. |
Yatharth Kochar | 71c9a5e | 2015-10-10 19:06:53 +0100 | [diff] [blame] | 3 | * |
dp-arm | fa3cf0b | 2017-05-03 09:38:09 +0100 | [diff] [blame] | 4 | * SPDX-License-Identifier: BSD-3-Clause |
Yatharth Kochar | 71c9a5e | 2015-10-10 19:06:53 +0100 | [diff] [blame] | 5 | */ |
| 6 | |
| 7 | #ifndef __BL1_FWU_H__ |
| 8 | #define __BL1_FWU_H__ |
| 9 | |
| 10 | #include <bl_common.h> |
| 11 | |
| 12 | /* |
| 13 | * Defines for BL1 SMC function ids. |
| 14 | */ |
| 15 | #define BL1_SMC_CALL_COUNT 0x0 |
| 16 | #define BL1_SMC_UID 0x1 |
| 17 | /* SMC #0x2 reserved */ |
| 18 | #define BL1_SMC_VERSION 0x3 |
| 19 | |
| 20 | /* |
| 21 | * Corresponds to the function ID of the SMC that |
| 22 | * the BL1 exception handler service to execute BL31. |
| 23 | */ |
| 24 | #define BL1_SMC_RUN_IMAGE 0x4 |
| 25 | |
| 26 | /* |
| 27 | * BL1 SMC version |
| 28 | */ |
| 29 | #define BL1_SMC_MAJOR_VER 0x0 |
| 30 | #define BL1_SMC_MINOR_VER 0x1 |
| 31 | |
| 32 | /* |
| 33 | * Defines for FWU SMC function ids. |
| 34 | */ |
| 35 | |
| 36 | #define FWU_SMC_IMAGE_COPY 0x10 |
| 37 | #define FWU_SMC_IMAGE_AUTH 0x11 |
| 38 | #define FWU_SMC_IMAGE_EXECUTE 0x12 |
| 39 | #define FWU_SMC_IMAGE_RESUME 0x13 |
| 40 | #define FWU_SMC_SEC_IMAGE_DONE 0x14 |
| 41 | #define FWU_SMC_UPDATE_DONE 0x15 |
Antonio Nino Diaz | 0e8e720 | 2017-05-12 16:51:59 +0100 | [diff] [blame] | 42 | #define FWU_SMC_IMAGE_RESET 0x16 |
Yatharth Kochar | 71c9a5e | 2015-10-10 19:06:53 +0100 | [diff] [blame] | 43 | |
| 44 | /* |
| 45 | * Number of FWU calls (above) implemented |
| 46 | */ |
Antonio Nino Diaz | 0e8e720 | 2017-05-12 16:51:59 +0100 | [diff] [blame] | 47 | #define FWU_NUM_SMC_CALLS 7 |
Yatharth Kochar | 71c9a5e | 2015-10-10 19:06:53 +0100 | [diff] [blame] | 48 | |
| 49 | #if TRUSTED_BOARD_BOOT |
| 50 | # define BL1_NUM_SMC_CALLS (FWU_NUM_SMC_CALLS + 4) |
| 51 | #else |
| 52 | # define BL1_NUM_SMC_CALLS 4 |
| 53 | #endif |
| 54 | |
| 55 | /* |
| 56 | * The macros below are used to identify FWU |
| 57 | * calls from the SMC function ID |
| 58 | */ |
| 59 | #define FWU_SMC_FID_START FWU_SMC_IMAGE_COPY |
Antonio Nino Diaz | 0e8e720 | 2017-05-12 16:51:59 +0100 | [diff] [blame] | 60 | #define FWU_SMC_FID_END FWU_SMC_IMAGE_RESET |
Yatharth Kochar | 71c9a5e | 2015-10-10 19:06:53 +0100 | [diff] [blame] | 61 | #define is_fwu_fid(_fid) \ |
| 62 | ((_fid >= FWU_SMC_FID_START) && (_fid <= FWU_SMC_FID_END)) |
| 63 | |
| 64 | #ifndef __ASSEMBLY__ |
| 65 | #include <cassert.h> |
| 66 | |
| 67 | /* |
| 68 | * Check if the total number of FWU SMC calls are as expected. |
| 69 | */ |
| 70 | CASSERT(FWU_NUM_SMC_CALLS == \ |
| 71 | (FWU_SMC_FID_END - FWU_SMC_FID_START + 1),\ |
| 72 | assert_FWU_NUM_SMC_CALLS_mismatch); |
| 73 | |
Soby Mathew | 6e16a33 | 2018-01-10 12:51:34 +0000 | [diff] [blame] | 74 | /* Utility functions */ |
| 75 | void bl1_calc_bl2_mem_layout(const meminfo_t *bl1_mem_layout, |
| 76 | meminfo_t *bl2_mem_layout); |
| 77 | |
Yatharth Kochar | 71c9a5e | 2015-10-10 19:06:53 +0100 | [diff] [blame] | 78 | #endif /* __ASSEMBLY__ */ |
| 79 | #endif /* __BL1_FWU_H__ */ |