diff options
author | Nico Huber <nico.huber@secunet.com> | 2013-06-14 11:55:26 +0200 |
---|---|---|
committer | Nico Huber <nico.h@gmx.de> | 2017-06-14 11:43:32 +0200 |
commit | 305f417ea565a18c1e87dcf5d97307369b721c6c (patch) | |
tree | 75fd4a1087415f99a64d0a5f26eaddcb54969883 /layout.c | |
parent | ad18631b59d814b38bb6757df93fac17937a6bc9 (diff) | |
download | flashrom-305f417ea565a18c1e87dcf5d97307369b721c6c.tar.gz flashrom-305f417ea565a18c1e87dcf5d97307369b721c6c.tar.bz2 flashrom-305f417ea565a18c1e87dcf5d97307369b721c6c.zip |
Add option to read ROM layout from IFD
Add an option --ifd to read the ROM layout from an Intel Firmware
Descriptor (IFD). Works the same as the -l option, if given, -i
specifies the images to update.
v2: o Rebased on libflashrom, use libflashrom interface.
o Use functions from ich_descriptors.c.
v3: o Move ich_descriptors.o to LIB_OBJS, thus build it independent
of arch and programmers.
o Bail out if we aren't compiled for little endian.
o Update flashrom.8.tmpl.
v4: o Incorporated David's comments.
o Removed single-character `-d` option.
v5: Changed region names to match the output of `ifdtool --layout ...`
Change-Id: Ifafff2bf6d5c5e62283416b3269723f81fdc0fa3
Signed-off-by: Nico Huber <nico.huber@secunet.com>
Reviewed-on: https://review.coreboot.org/17953
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Diffstat (limited to 'layout.c')
-rw-r--r-- | layout.c | 18 |
1 files changed, 9 insertions, 9 deletions
@@ -35,7 +35,7 @@ static struct flashrom_layout layout = { entries, 0 }; static char *include_args[MAX_ROMLAYOUT]; static int num_include_args = 0; /* the number of valid include_args. */ -const struct flashrom_layout *get_global_layout(void) +struct flashrom_layout *get_global_layout(void) { return &layout; } @@ -132,17 +132,17 @@ int register_include_arg(char *name) } /* returns the index of the entry (or a negative value if it is not found) */ -static int find_romentry(char *name) +static int find_romentry(struct flashrom_layout *const l, char *name) { int i; - if (layout.num_entries == 0) + if (l->num_entries == 0) return -1; msg_gspew("Looking for region \"%s\"... ", name); - for (i = 0; i < layout.num_entries; i++) { - if (!strcmp(layout.entries[i].name, name)) { - layout.entries[i].included = 1; + for (i = 0; i < l->num_entries; i++) { + if (!strcmp(l->entries[i].name, name)) { + l->entries[i].included = 1; msg_gspew("found.\n"); return i; } @@ -154,7 +154,7 @@ static int find_romentry(char *name) /* process -i arguments * returns 0 to indicate success, >0 to indicate failure */ -int process_include_args(void) +int process_include_args(struct flashrom_layout *const l) { int i; unsigned int found = 0; @@ -163,7 +163,7 @@ int process_include_args(void) return 0; /* User has specified an area, but no layout file is loaded. */ - if (layout.num_entries == 0) { + if (l->num_entries == 0) { msg_gerr("Region requested (with -i \"%s\"), " "but no layout data is available.\n", include_args[0]); @@ -171,7 +171,7 @@ int process_include_args(void) } for (i = 0; i < num_include_args; i++) { - if (find_romentry(include_args[i]) < 0) { + if (find_romentry(l, include_args[i]) < 0) { msg_gerr("Invalid region specified: \"%s\".\n", include_args[i]); return 1; |