Skip to content

Commit 26ecd68

Browse files
committed
storage: flash_map: Don't generate flash area when no device
Change in default flash map generation, where partitions hanging of disabled devices will not have flash area generated. Signed-off-by: Dominik Ermel <[email protected]>
1 parent c50777a commit 26ecd68

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

subsys/storage/flash_map/flash_map.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ int flash_area_open(uint8_t id, const struct flash_area **fap)
3939
return -ENOENT;
4040
}
4141

42-
if (!area->fa_dev || !device_is_ready(area->fa_dev)) {
42+
if (!device_is_ready(area->fa_dev)) {
4343
return -ENODEV;
4444
}
4545

subsys/storage/flash_map/flash_map_default.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,22 @@
1616
#define FLASH_AREA_FOO(part) \
1717
{.fa_id = DT_FIXED_PARTITION_ID(part), \
1818
.fa_off = DT_REG_ADDR(part), \
19-
.fa_dev = DEVICE_DT_GET_OR_NULL(DT_MTD_FROM_FIXED_PARTITION(part)), \
19+
.fa_dev = DEVICE_DT_GET(DT_MTD_FROM_FIXED_PARTITION(part)), \
2020
.fa_size = DT_REG_SIZE(part), \
2121
.fa_label = DT_PROP_OR(part, label, NULL), },
2222
#else
2323
#define FLASH_AREA_FOO(part) \
2424
{.fa_id = DT_FIXED_PARTITION_ID(part), \
2525
.fa_off = DT_REG_ADDR(part), \
26-
.fa_dev = DEVICE_DT_GET_OR_NULL(DT_MTD_FROM_FIXED_PARTITION(part)), \
26+
.fa_dev = DEVICE_DT_GET(DT_MTD_FROM_FIXED_PARTITION(part)), \
2727
.fa_size = DT_REG_SIZE(part), },
2828
#endif
2929

30-
#define FOREACH_PARTITION(n) DT_FOREACH_CHILD(DT_DRV_INST(n), FLASH_AREA_FOO)
30+
#define FLASH_AREA_FOOO(part) \
31+
COND_CODE_1(DT_NODE_HAS_STATUS_OKAY(DT_MTD_FROM_FIXED_PARTITION(part)), \
32+
(FLASH_AREA_FOO(part)), ())
33+
34+
#define FOREACH_PARTITION(n) DT_FOREACH_CHILD(DT_DRV_INST(n), FLASH_AREA_FOOO)
3135

3236
/* We iterate over all compatible 'fixed-partitions' nodes and
3337
* use DT_FOREACH_CHILD to iterate over all the partitions for that

tests/subsys/storage/flash_map/src/main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ ZTEST(flash_map, test_flash_area_disabled_device)
2626

2727
/* Test that attempting to open a disabled flash area fails */
2828
rc = flash_area_open(FIXED_PARTITION_ID(disabled_a), &fa);
29-
zassert_equal(rc, -ENODEV, "Open did not fail");
29+
zassert_equal(rc, -ENOENT, "Open did not fail");
3030
rc = flash_area_open(FIXED_PARTITION_ID(disabled_b), &fa);
31-
zassert_equal(rc, -ENODEV, "Open did not fail");
31+
zassert_equal(rc, -ENOENT, "Open did not fail");
3232
}
3333

3434
/**

0 commit comments

Comments
 (0)