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 <dominik.ermel@nordicsemi.no>
This commit is contained in:
parent
bbfb546e57
commit
77ebf82b3e
3 changed files with 10 additions and 6 deletions
|
@ -39,7 +39,7 @@ int flash_area_open(uint8_t id, const struct flash_area **fap)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!area->fa_dev || !device_is_ready(area->fa_dev)) {
|
if (!device_is_ready(area->fa_dev)) {
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,18 +16,22 @@
|
||||||
#define FLASH_AREA_FOO(part) \
|
#define FLASH_AREA_FOO(part) \
|
||||||
{.fa_id = DT_FIXED_PARTITION_ID(part), \
|
{.fa_id = DT_FIXED_PARTITION_ID(part), \
|
||||||
.fa_off = DT_REG_ADDR(part), \
|
.fa_off = DT_REG_ADDR(part), \
|
||||||
.fa_dev = DEVICE_DT_GET_OR_NULL(DT_MTD_FROM_FIXED_PARTITION(part)), \
|
.fa_dev = DEVICE_DT_GET(DT_MTD_FROM_FIXED_PARTITION(part)), \
|
||||||
.fa_size = DT_REG_SIZE(part), \
|
.fa_size = DT_REG_SIZE(part), \
|
||||||
.fa_label = DT_PROP_OR(part, label, NULL), },
|
.fa_label = DT_PROP_OR(part, label, NULL), },
|
||||||
#else
|
#else
|
||||||
#define FLASH_AREA_FOO(part) \
|
#define FLASH_AREA_FOO(part) \
|
||||||
{.fa_id = DT_FIXED_PARTITION_ID(part), \
|
{.fa_id = DT_FIXED_PARTITION_ID(part), \
|
||||||
.fa_off = DT_REG_ADDR(part), \
|
.fa_off = DT_REG_ADDR(part), \
|
||||||
.fa_dev = DEVICE_DT_GET_OR_NULL(DT_MTD_FROM_FIXED_PARTITION(part)), \
|
.fa_dev = DEVICE_DT_GET(DT_MTD_FROM_FIXED_PARTITION(part)), \
|
||||||
.fa_size = DT_REG_SIZE(part), },
|
.fa_size = DT_REG_SIZE(part), },
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define FOREACH_PARTITION(n) DT_FOREACH_CHILD(DT_DRV_INST(n), FLASH_AREA_FOO)
|
#define FLASH_AREA_FOOO(part) \
|
||||||
|
COND_CODE_1(DT_NODE_HAS_STATUS_OKAY(DT_MTD_FROM_FIXED_PARTITION(part)), \
|
||||||
|
(FLASH_AREA_FOO(part)), ())
|
||||||
|
|
||||||
|
#define FOREACH_PARTITION(n) DT_FOREACH_CHILD(DT_DRV_INST(n), FLASH_AREA_FOOO)
|
||||||
|
|
||||||
/* We iterate over all compatible 'fixed-partitions' nodes and
|
/* We iterate over all compatible 'fixed-partitions' nodes and
|
||||||
* use DT_FOREACH_CHILD to iterate over all the partitions for that
|
* use DT_FOREACH_CHILD to iterate over all the partitions for that
|
||||||
|
|
|
@ -27,9 +27,9 @@ ZTEST(flash_map, test_flash_area_disabled_device)
|
||||||
|
|
||||||
/* Test that attempting to open a disabled flash area fails */
|
/* Test that attempting to open a disabled flash area fails */
|
||||||
rc = flash_area_open(FIXED_PARTITION_ID(disabled_a), &fa);
|
rc = flash_area_open(FIXED_PARTITION_ID(disabled_a), &fa);
|
||||||
zassert_equal(rc, -ENODEV, "Open did not fail");
|
zassert_equal(rc, -ENOENT, "Open did not fail");
|
||||||
rc = flash_area_open(FIXED_PARTITION_ID(disabled_b), &fa);
|
rc = flash_area_open(FIXED_PARTITION_ID(disabled_b), &fa);
|
||||||
zassert_equal(rc, -ENODEV, "Open did not fail");
|
zassert_equal(rc, -ENOENT, "Open did not fail");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue