util/ifdtool: cleanup some magic numbers

There are five firmware regions that are (currently) defined. This
was assumed throughout the ifdtool code with many literal 4s and
5s. This patch changes them to refer to a new #define NUM_REGIONS.

Change-Id: I523d3763942f875025ebc4b9ba8b2ccf1db5b2f5
Signed-off-by: Christopher Douglass <cdouglass.orion@gmail.com>
Reviewed-on: http://review.coreboot.org/5313
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Chris Douglass 2014-02-28 08:54:41 -05:00 committed by Stefan Reinauer
parent 4eabe1e4e1
commit e2718656ec
1 changed files with 17 additions and 15 deletions

View File

@ -27,7 +27,9 @@
#include <sys/stat.h> #include <sys/stat.h>
#include "ifdtool.h" #include "ifdtool.h"
static const struct region_name region_names[5] = { #define NUM_REGIONS 5
static const struct region_name region_names[NUM_REGIONS] = {
{ "Flash Descriptor", "fd" }, { "Flash Descriptor", "fd" },
{ "BIOS", "bios" }, { "BIOS", "bios" },
{ "Intel ME", "me" }, { "Intel ME", "me" },
@ -126,7 +128,7 @@ static void set_region(frba_t *frba, int region_type, region_t region)
static const char *region_name(int region_type) static const char *region_name(int region_type)
{ {
if (region_type < 0 || region_type > 4) { if (region_type < 0 || region_type >= NUM_REGIONS) {
fprintf(stderr, "Invalid region type.\n"); fprintf(stderr, "Invalid region type.\n");
exit (EXIT_FAILURE); exit (EXIT_FAILURE);
} }
@ -136,7 +138,7 @@ static const char *region_name(int region_type)
static const char *region_name_short(int region_type) static const char *region_name_short(int region_type)
{ {
if (region_type < 0 || region_type > 4) { if (region_type < 0 || region_type >= NUM_REGIONS) {
fprintf(stderr, "Invalid region type.\n"); fprintf(stderr, "Invalid region type.\n");
exit (EXIT_FAILURE); exit (EXIT_FAILURE);
} }
@ -148,7 +150,7 @@ static int region_num(const char *name)
{ {
int i; int i;
for (i = 0; i < 5; i++) { for (i = 0; i < NUM_REGIONS; i++) {
if (strcasecmp(name, region_names[i].pretty) == 0) if (strcasecmp(name, region_names[i].pretty) == 0)
return i; return i;
if (strcasecmp(name, region_names[i].terse) == 0) if (strcasecmp(name, region_names[i].terse) == 0)
@ -160,7 +162,7 @@ static int region_num(const char *name)
static const char *region_filename(int region_type) static const char *region_filename(int region_type)
{ {
static const char *region_filenames[5] = { static const char *region_filenames[NUM_REGIONS] = {
"flashregion_0_flashdescriptor.bin", "flashregion_0_flashdescriptor.bin",
"flashregion_1_bios.bin", "flashregion_1_bios.bin",
"flashregion_2_intel_me.bin", "flashregion_2_intel_me.bin",
@ -168,7 +170,7 @@ static const char *region_filename(int region_type)
"flashregion_4_platform_data.bin" "flashregion_4_platform_data.bin"
}; };
if (region_type < 0 || region_type > 4) { if (region_type < 0 || region_type >= NUM_REGIONS) {
fprintf(stderr, "Invalid region type.\n"); fprintf(stderr, "Invalid region type.\n");
exit (EXIT_FAILURE); exit (EXIT_FAILURE);
} }
@ -219,7 +221,7 @@ static void dump_frba_layout(frba_t * frba, char *layout_fname)
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
for (i = 0; i <= 4; i++) { for (i = 0; i < NUM_REGIONS; i++) {
dump_region_layout(buf, bufsize, i, frba); dump_region_layout(buf, bufsize, i, frba);
if (write(layout_fd, buf, strlen(buf)) < 0) { if (write(layout_fd, buf, strlen(buf)) < 0) {
perror("Could not write to file"); perror("Could not write to file");
@ -530,7 +532,7 @@ static void write_regions(char *image, int size)
frba_t *frba = frba_t *frba =
(frba_t *) (image + (((fdb->flmap0 >> 16) & 0xff) << 4)); (frba_t *) (image + (((fdb->flmap0 >> 16) & 0xff) << 4));
for (i = 0; i<5; i++) { for (i = 0; i < NUM_REGIONS; i++) {
region_t region = get_region(frba, i); region_t region = get_region(frba, i);
dump_region(i, frba); dump_region(i, frba);
if (region.size > 0) { if (region.size > 0) {
@ -721,8 +723,8 @@ void new_layout(char *filename, char *image, int size, char *layout_fname)
char layout_region_name[256]; char layout_region_name[256];
int i, j; int i, j;
int region_number; int region_number;
region_t current_regions[5]; region_t current_regions[NUM_REGIONS];
region_t new_regions[5]; region_t new_regions[NUM_REGIONS];
int new_extent = 0; int new_extent = 0;
char *new_image; char *new_image;
@ -734,7 +736,7 @@ void new_layout(char *filename, char *image, int size, char *layout_fname)
frba_t *frba = frba_t *frba =
(frba_t *) (image + (((fdb->flmap0 >> 16) & 0xff) << 4)); (frba_t *) (image + (((fdb->flmap0 >> 16) & 0xff) << 4));
for (i = 0; i < 5; i++) { for (i = 0; i < NUM_REGIONS; i++) {
current_regions[i] = get_region(frba, i); current_regions[i] = get_region(frba, i);
new_regions[i] = get_region(frba, i); new_regions[i] = get_region(frba, i);
} }
@ -778,7 +780,7 @@ void new_layout(char *filename, char *image, int size, char *layout_fname)
fclose(romlayout); fclose(romlayout);
/* check new layout */ /* check new layout */
for (i = 0; i < 5; i++) { for (i = 0; i < NUM_REGIONS; i++) {
if (new_regions[i].size == 0) if (new_regions[i].size == 0)
continue; continue;
@ -789,7 +791,7 @@ void new_layout(char *filename, char *image, int size, char *layout_fname)
printf(" This may result in an unusable image.\n"); printf(" This may result in an unusable image.\n");
} }
for (j = i + 1; j < 5; j++) { for (j = i + 1; j < NUM_REGIONS; j++) {
if (regions_collide(new_regions[i], new_regions[j])) { if (regions_collide(new_regions[i], new_regions[j])) {
fprintf(stderr, "Regions would overlap.\n"); fprintf(stderr, "Regions would overlap.\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
@ -811,7 +813,7 @@ void new_layout(char *filename, char *image, int size, char *layout_fname)
/* copy regions to a new image */ /* copy regions to a new image */
new_image = malloc(new_extent); new_image = malloc(new_extent);
memset(new_image, 0xff, new_extent); memset(new_image, 0xff, new_extent);
for (i = 0; i < 5; i++) { for (i = 0; i < NUM_REGIONS; i++) {
int copy_size = new_regions[i].size; int copy_size = new_regions[i].size;
int offset_current = 0, offset_new = 0; int offset_current = 0, offset_new = 0;
region_t current = current_regions[i]; region_t current = current_regions[i];
@ -849,7 +851,7 @@ void new_layout(char *filename, char *image, int size, char *layout_fname)
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
frba = (frba_t *) (new_image + (((fdb->flmap0 >> 16) & 0xff) << 4)); frba = (frba_t *) (new_image + (((fdb->flmap0 >> 16) & 0xff) << 4));
for (i = 1; i < 5; i++) { for (i = 1; i < NUM_REGIONS; i++) {
set_region(frba, i, new_regions[i]); set_region(frba, i, new_regions[i]);
} }