1 /*
2  * Copyright (c) 2021 Espressif Systems (Shanghai) Co., Ltd.
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #pragma once
8 
9 #include <mcuboot_config/mcuboot_config.h>
10 
11 //! A user-defined identifier for different storage mediums
12 //! (i.e internal flash, external NOR flash, eMMC, etc)
13 #define FLASH_DEVICE_INTERNAL_FLASH 0
14 
15 //! An arbitrarily high slot ID we will use to indicate that
16 //! there is not slot
17 #define FLASH_SLOT_DOES_NOT_EXIST 255
18 
19 //! The slot we will use to track the bootloader allocation
20 #define FLASH_AREA_BOOTLOADER 0
21 
22 #define FLASH_AREA_IMAGE_0_PRIMARY 1
23 #define FLASH_AREA_IMAGE_0_SECONDARY 2
24 #define FLASH_AREA_IMAGE_SCRATCH 3
25 #define FLASH_AREA_IMAGE_1_PRIMARY 4
26 #define FLASH_AREA_IMAGE_1_SECONDARY 5
27 
28 #if (MCUBOOT_IMAGE_NUMBER == 1)
29 #define FLASH_AREA_IMAGE_PRIMARY(x)    (((x) == 0) ?          \
30                                          FLASH_AREA_IMAGE_0_PRIMARY : \
31                                          FLASH_SLOT_DOES_NOT_EXIST)
32 #define FLASH_AREA_IMAGE_SECONDARY(x)  (((x) == 0) ?          \
33                                          FLASH_AREA_IMAGE_0_SECONDARY : \
34                                          FLASH_SLOT_DOES_NOT_EXIST)
35 
36 #elif (MCUBOOT_IMAGE_NUMBER == 2)
37 #define FLASH_AREA_IMAGE_PRIMARY(x)    (((x) == 0) ?          \
38                                          FLASH_AREA_IMAGE_0_PRIMARY : \
39                                         ((x) == 1) ?          \
40                                          FLASH_AREA_IMAGE_1_PRIMARY : \
41                                          FLASH_SLOT_DOES_NOT_EXIST)
42 #define FLASH_AREA_IMAGE_SECONDARY(x)  (((x) == 0) ?          \
43                                          FLASH_AREA_IMAGE_0_SECONDARY : \
44                                         ((x) == 1) ?          \
45                                          FLASH_AREA_IMAGE_1_SECONDARY : \
46                                          FLASH_SLOT_DOES_NOT_EXIST)
47 
48 #else
49 #warning "Image slot and flash area mapping is not defined"
50 #endif
51