1 /*
2  * Copyright (c) 2021-2024, Arm Limited. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #include "image.h"
9 
10 #include "Driver_Flash.h"
11 #include "flash_layout.h"
12 #include "region_defs.h"
13 #include "fih.h"
14 
15 #ifndef TFM_BL1_MEMORY_MAPPED_FLASH
16 extern ARM_DRIVER_FLASH FLASH_DEV_NAME_BL1;
17 #endif /* !TFM_BL1_MEMORY_MAPPED_FLASH */
18 
bl1_image_get_flash_offset(uint32_t image_id)19 uint32_t __WEAK bl1_image_get_flash_offset(uint32_t image_id)
20 {
21     switch (image_id) {
22     case 0:
23         return FLASH_AREA_0_OFFSET;
24     case 1:
25         return FLASH_AREA_1_OFFSET;
26     default:
27         FIH_PANIC;
28     }
29 }
30 
31 #ifndef TFM_BL1_MEMORY_MAPPED_FLASH
bl1_image_copy_to_sram(uint32_t image_id,uint8_t * out)32 fih_int bl1_image_copy_to_sram(uint32_t image_id, uint8_t *out)
33 {
34     uint32_t flash_offset;
35     fih_int fih_rc;
36 
37     flash_offset = bl1_image_get_flash_offset(image_id);
38     fih_rc = fih_int_encode(FLASH_DEV_NAME_BL1.ReadData(flash_offset, out,
39                                                     sizeof(struct bl1_2_image_t)));
40 
41     FIH_RET(fih_rc);
42 }
43 #endif /* !TFM_BL1_MEMORY_MAPPED_FLASH */
44