blob: 4c8fcde406efa3a42aa9418bfcf6557380137485 [file] [log] [blame]
Mark Horvath8576e382021-03-12 10:24:55 +01001/*
2 * Copyright (c) 2021, Arm Limited. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8#include <stdbool.h>
9#include "flash_map/flash_map.h"
10#include "target.h"
11#include "Driver_Flash.h"
12
13/* When undefined FLASH_DEV_NAME_0 or FLASH_DEVICE_ID_0 , default */
14#if !defined(FLASH_DEV_NAME_0) || !defined(FLASH_DEVICE_ID_0)
15#define FLASH_DEV_NAME_0 FLASH_DEV_NAME
16#define FLASH_DEVICE_ID_0 FLASH_DEVICE_ID
17#endif
18
19/* When undefined FLASH_DEV_NAME_1 or FLASH_DEVICE_ID_1 , default */
20#if !defined(FLASH_DEV_NAME_1) || !defined(FLASH_DEVICE_ID_1)
21#define FLASH_DEV_NAME_1 FLASH_DEV_NAME
22#define FLASH_DEVICE_ID_1 FLASH_DEVICE_ID
23#endif
24
25/* When undefined FLASH_DEV_NAME_2 or FLASH_DEVICE_ID_2 , default */
26#if !defined(FLASH_DEV_NAME_2) || !defined(FLASH_DEVICE_ID_2)
27#define FLASH_DEV_NAME_2 FLASH_DEV_NAME
28#define FLASH_DEVICE_ID_2 FLASH_DEVICE_ID
29#endif
30
31/* When undefined FLASH_DEV_NAME_3 or FLASH_DEVICE_ID_3 , default */
32#if !defined(FLASH_DEV_NAME_3) || !defined(FLASH_DEVICE_ID_3)
33#define FLASH_DEV_NAME_3 FLASH_DEV_NAME
34#define FLASH_DEVICE_ID_3 FLASH_DEVICE_ID
35#endif
36
37/* When undefined FLASH_DEV_NAME_SCRATCH or FLASH_DEVICE_ID_SCRATCH , default */
38#if !defined(FLASH_DEV_NAME_SCRATCH) || !defined(FLASH_DEVICE_ID_SCRATCH)
39#define FLASH_DEV_NAME_SCRATCH FLASH_DEV_NAME
40#define FLASH_DEVICE_ID_SCRATCH FLASH_DEVICE_ID
41#endif
42
43#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof((arr)[0]))
44
45/* Flash device names must be specified by target */
46extern ARM_DRIVER_FLASH FLASH_DEV_NAME_0;
47extern ARM_DRIVER_FLASH FLASH_DEV_NAME_1;
48extern ARM_DRIVER_FLASH FLASH_DEV_NAME_2;
49extern ARM_DRIVER_FLASH FLASH_DEV_NAME_3;
50extern ARM_DRIVER_FLASH FLASH_DEV_NAME_SCRATCH;
51
52const struct flash_area flash_map[] = {
53 {
54 .fa_id = FLASH_AREA_0_ID,
55 .fa_device_id = FLASH_DEVICE_ID_0,
56 .fa_driver = &FLASH_DEV_NAME_0,
57 .fa_off = FLASH_AREA_0_OFFSET,
58 .fa_size = FLASH_AREA_0_SIZE,
59 },
60 {
61 .fa_id = FLASH_AREA_2_ID,
62 .fa_device_id = FLASH_DEVICE_ID_2,
63 .fa_driver = &FLASH_DEV_NAME_2,
64 .fa_off = FLASH_AREA_2_OFFSET,
65 .fa_size = FLASH_AREA_2_SIZE,
66 },
67#if (MCUBOOT_IMAGE_NUMBER == 2)
68 {
69 .fa_id = FLASH_AREA_1_ID,
70 .fa_device_id = FLASH_DEVICE_ID_1,
71 .fa_driver = &FLASH_DEV_NAME_1,
72 .fa_off = FLASH_AREA_1_OFFSET,
73 .fa_size = FLASH_AREA_1_SIZE,
74 },
75 {
76 .fa_id = FLASH_AREA_3_ID,
77 .fa_device_id = FLASH_DEVICE_ID_3,
78 .fa_driver = &FLASH_DEV_NAME_3,
79 .fa_off = FLASH_AREA_3_OFFSET,
80 .fa_size = FLASH_AREA_3_SIZE,
81 },
82#endif
83 {
84 .fa_id = FLASH_AREA_SCRATCH_ID,
85 .fa_device_id = FLASH_DEVICE_ID_SCRATCH,
86 .fa_driver = &FLASH_DEV_NAME_SCRATCH,
87 .fa_off = FLASH_AREA_SCRATCH_OFFSET,
88 .fa_size = FLASH_AREA_SCRATCH_SIZE,
89 },
90};
91
92const int flash_map_entry_num = ARRAY_SIZE(flash_map);