fdtget: Split out cell list display into a new function
The show_data() function is quite long. Split out the part that loops through the values. This makes it easier to add new features. Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>main
parent
62d812308d
commit
fe50bd1ecc
49
fdtget.c
49
fdtget.c
|
@ -53,6 +53,37 @@ static void report_error(const char *where, int err)
|
||||||
fprintf(stderr, "Error at '%s': %s\n", where, fdt_strerror(err));
|
fprintf(stderr, "Error at '%s': %s\n", where, fdt_strerror(err));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shows a list of cells in the requested format
|
||||||
|
*
|
||||||
|
* @param disp Display information / options
|
||||||
|
* @param data Data to display
|
||||||
|
* @param len Maximum length of buffer
|
||||||
|
* @param size Data size to use for display (e.g. 4 for 32-bit)
|
||||||
|
* @return 0 if ok, -1 on error
|
||||||
|
*/
|
||||||
|
static int show_cell_list(struct display_info *disp, const char *data, int len,
|
||||||
|
int size)
|
||||||
|
{
|
||||||
|
const uint8_t *p = (const uint8_t *)data;
|
||||||
|
char fmt[3];
|
||||||
|
int value;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
fmt[0] = '%';
|
||||||
|
fmt[1] = disp->type ? disp->type : 'd';
|
||||||
|
fmt[2] = '\0';
|
||||||
|
for (i = 0; i < len; i += size, p += size) {
|
||||||
|
if (i)
|
||||||
|
printf(" ");
|
||||||
|
value = size == 4 ? fdt32_to_cpu(*(const fdt32_t *)p) :
|
||||||
|
size == 2 ? (*p << 8) | p[1] : *p;
|
||||||
|
printf(fmt, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays data of a given length according to selected options
|
* Displays data of a given length according to selected options
|
||||||
*
|
*
|
||||||
|
@ -66,12 +97,9 @@ static void report_error(const char *where, int err)
|
||||||
*/
|
*/
|
||||||
static int show_data(struct display_info *disp, const char *data, int len)
|
static int show_data(struct display_info *disp, const char *data, int len)
|
||||||
{
|
{
|
||||||
int i, size;
|
int size;
|
||||||
const uint8_t *p = (const uint8_t *)data;
|
|
||||||
const char *s;
|
const char *s;
|
||||||
int value;
|
|
||||||
int is_string;
|
int is_string;
|
||||||
char fmt[3];
|
|
||||||
|
|
||||||
/* no data, don't print */
|
/* no data, don't print */
|
||||||
if (len == 0)
|
if (len == 0)
|
||||||
|
@ -99,17 +127,8 @@ static int show_data(struct display_info *disp, const char *data, int len)
|
||||||
"selected data size\n");
|
"selected data size\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
fmt[0] = '%';
|
|
||||||
fmt[1] = disp->type ? disp->type : 'd';
|
return show_cell_list(disp, data, len, size);
|
||||||
fmt[2] = '\0';
|
|
||||||
for (i = 0; i < len; i += size, p += size) {
|
|
||||||
if (i)
|
|
||||||
printf(" ");
|
|
||||||
value = size == 4 ? fdt32_to_cpu(*(const fdt32_t *)p) :
|
|
||||||
size == 2 ? (*p << 8) | p[1] : *p;
|
|
||||||
printf(fmt, value);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue