summaryrefslogtreecommitdiffstats
path: root/layout.c
diff options
context:
space:
mode:
authorNico Huber <nico.huber@secunet.com>2013-06-14 11:55:26 +0200
committerNico Huber <nico.h@gmx.de>2017-06-14 11:43:32 +0200
commit305f417ea565a18c1e87dcf5d97307369b721c6c (patch)
tree75fd4a1087415f99a64d0a5f26eaddcb54969883 /layout.c
parentad18631b59d814b38bb6757df93fac17937a6bc9 (diff)
downloadflashrom-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.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/layout.c b/layout.c
index 2d5329516..9bf0b038f 100644
--- a/layout.c
+++ b/layout.c
@@ -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;