blob: 7f723a4543e5a6288d2b3cf57d34b083acadb5bd [file] [log] [blame]
Andrzej Puzdrowskicc547a72022-02-17 15:30:27 +01001/*
2 * Copyright (c) 2022 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef __SYSFLASH_H__
8#define __SYSFLASH_H__
9
10#include <devicetree.h>
11#include <mcuboot_config/mcuboot_config.h>
12
13#if (MCUBOOT_IMAGE_NUMBER == 1)
14/*
15 * NOTE: the definition below returns the same values for true/false on
16 * purpose, to avoid having to mark x as non-used by all callers when
17 * running in single image mode.
18 */
19#define FLASH_AREA_IMAGE_PRIMARY(x) (((x) == 0) ? \
20 FLASH_AREA_ID(image_0) : \
21 FLASH_AREA_ID(image_0))
22#define FLASH_AREA_IMAGE_SECONDARY(x) (((x) == 0) ? \
23 FLASH_AREA_ID(image_1) : \
24 FLASH_AREA_ID(image_1))
25#elif (MCUBOOT_IMAGE_NUMBER == 2)
26/* MCUBoot currently supports only up to 2 updateable firmware images.
27 * If the number of the current image is greater than MCUBOOT_IMAGE_NUMBER - 1
28 * then a dummy value will be assigned to the flash area macros.
29 */
30#define FLASH_AREA_IMAGE_PRIMARY(x) (((x) == 0) ? \
31 FLASH_AREA_ID(image_0) : \
32 ((x) == 1) ? \
33 FLASH_AREA_ID(image_2) : \
34 255)
35#define FLASH_AREA_IMAGE_SECONDARY(x) (((x) == 0) ? \
36 FLASH_AREA_ID(image_1) : \
37 ((x) == 1) ? \
38 FLASH_AREA_ID(image_3) : \
39 255)
40#else
41#error "Image slot and flash area mapping is not defined"
42#endif
43
44#define FLASH_AREA_IMAGE_SCRATCH FLASH_AREA_ID(image_scratch)
45
46#endif /* __SYSFLASH_H__ */