1 /* 2 * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 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 42 #define FWU_SMC_IMAGE_RESET 0x16 43 44 /* 45 * Number of FWU calls (above) implemented 46 */ 47 #define FWU_NUM_SMC_CALLS 7 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 60 #define FWU_SMC_FID_END FWU_SMC_IMAGE_RESET 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 74 #endif /* __ASSEMBLY__ */ 75 #endif /* __BL1_FWU_H__ */ 76