summaryrefslogtreecommitdiffstats
path: root/ich_descriptors.c
diff options
context:
space:
mode:
authorNico Huber <nico.h@gmx.de>2019-06-15 15:55:11 +0200
committerNico Huber <nico.h@gmx.de>2021-06-26 15:54:22 +0000
commitf394fcec0da2fd4a9d1bd7a7911065344e67ce34 (patch)
treecdce7e8fe9c980df3602711cc7de9881f2deaf3e /ich_descriptors.c
parent7ebd578100e6526ef46c98cb9978d692160d8179 (diff)
downloadflashrom-f394fcec0da2fd4a9d1bd7a7911065344e67ce34.tar.gz
flashrom-f394fcec0da2fd4a9d1bd7a7911065344e67ce34.tar.bz2
flashrom-f394fcec0da2fd4a9d1bd7a7911065344e67ce34.zip
layout: Introduce flashrom_layout_add_region()
Adds a region to an existing layout, as long as there is space. Change-Id: I50d473d0d5d1fb38bd6f9ae3d7127e9ea66a94e1 Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/flashrom/+/33517 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Anastasia Klimchuk <aklm@chromium.org> Reviewed-by: Peter Marheine <pmarheine@chromium.org> Reviewed-by: Edward O'Callaghan <quasisec@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'ich_descriptors.c')
-rw-r--r--ich_descriptors.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/ich_descriptors.c b/ich_descriptors.c
index 143e39204..ad1a88b64 100644
--- a/ich_descriptors.c
+++ b/ich_descriptors.c
@@ -1278,25 +1278,20 @@ int layout_from_ich_descriptors(struct ich_layout *const layout, const void *con
}
memset(layout, 0x00, sizeof(*layout));
+ layout->base.entries = layout->entries;
+ layout->base.capacity = ARRAY_SIZE(layout->entries);
+ layout->base.num_entries = 0;
- ssize_t i, j;
+ ssize_t i;
const ssize_t nr = MIN(ich_number_of_regions(cs, &desc.content), (ssize_t)ARRAY_SIZE(regions));
- for (i = 0, j = 0; i < nr; ++i) {
+ for (i = 0; i < nr; ++i) {
const chipoff_t base = ICH_FREG_BASE(desc.region.FLREGs[i]);
const chipoff_t limit = ICH_FREG_LIMIT(desc.region.FLREGs[i]);
if (limit <= base)
continue;
- layout->entries[j].start = base;
- layout->entries[j].end = limit;
- layout->entries[j].included = false;
- layout->entries[j].name = strdup(regions[i]);
- if (!layout->entries[j].name)
+ if (flashrom_layout_add_region(&layout->base, base, limit, regions[i]))
return 2;
- ++j;
}
- layout->base.entries = layout->entries;
- layout->base.capacity = ARRAY_SIZE(layout->entries);
- layout->base.num_entries = j;
return 0;
}