summaryrefslogtreecommitdiff
path: root/util/ifdtool
diff options
context:
space:
mode:
authorAlexander Couzens <lynxis@fe80.eu>2016-10-08 00:29:15 +0200
committerMartin Roth <martinroth@google.com>2016-10-09 19:09:23 +0200
commita81bef1bd656cb09059a3e2b5708f67d5e614701 (patch)
treeae820175f3ca8dcf133f13cd882e569d191b62e1 /util/ifdtool
parent913684cd2e0ec26f443fc128de7dfc18de49da7b (diff)
downloadcoreboot-a81bef1bd656cb09059a3e2b5708f67d5e614701.tar.xz
ifdtool: promote max_regions as global
max_regions is set to the maximal regions based on the ifd version Change-Id: I9fa5a4565f4dbd67b5c6df97756311560e2a18bc Signed-off-by: Alexander Couzens <lynxis@fe80.eu> Reviewed-on: https://review.coreboot.org/16934 Tested-by: build bot (Jenkins) Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@googlemail.com> Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Diffstat (limited to 'util/ifdtool')
-rw-r--r--util/ifdtool/ifdtool.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/util/ifdtool/ifdtool.c b/util/ifdtool/ifdtool.c
index 43054e0eb2..b8f409a7e8 100644
--- a/util/ifdtool/ifdtool.c
+++ b/util/ifdtool/ifdtool.c
@@ -28,6 +28,7 @@
#endif
static int ifd_version;
+static int max_regions = 0;
static int selected_chip = 0;
static const struct region_name region_names[MAX_REGIONS] = {
@@ -85,9 +86,11 @@ static void check_ifd_version(char *image, int size)
switch (read_freq) {
case SPI_FREQUENCY_20MHZ:
ifd_version = IFD_VERSION_1;
+ max_regions = MAX_REGIONS_OLD;
break;
case SPI_FREQUENCY_17MHZ:
ifd_version = IFD_VERSION_2;
+ max_regions = MAX_REGIONS;
break;
default:
fprintf(stderr, "Unknown descriptor version: %d\n",
@@ -653,7 +656,6 @@ static void dump_layout(char *image, int size, char *layout_fname)
static void write_regions(char *image, int size)
{
int i;
- int max_regions = MAX_REGIONS;
fdbar_t *fdb = find_fd(image, size);
if (!fdb)
@@ -662,10 +664,6 @@ static void write_regions(char *image, int size)
frba_t *frba =
(frba_t *) (image + (((fdb->flmap0 >> 16) & 0xff) << 4));
- /* Older descriptor images have fewer regions */
- if (ifd_version < IFD_VERSION_2)
- max_regions = MAX_REGIONS_OLD;
-
for (i = 0; i < max_regions; i++) {
region_t region = get_region(frba, i);
dump_region(i, frba);