mirror of
https://xff.cz/git/u-boot/
synced 2025-09-28 14:01:16 +02:00
cmd, fdt: add subcommand "get" to fdt header
store fdt header member with name <member> in U-Boot Environment variable with name <var>. for example to get the total length of the fdt and store it in filesize, call: fdt header get filesize totalsize For membernames look into fdt header definition at scripts/dtc/libfdt/libfdt.h Signed-off-by: Heiko Schocher <hs@denx.de> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
committed by
Simon Glass
parent
b847c14243
commit
8244127db9
40
cmd/fdt.c
40
cmd/fdt.c
@@ -73,6 +73,40 @@ static int fdt_value_env_set(const void *nodep, int len, const char *var)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char * const fdt_member_table[] = {
|
||||||
|
"magic",
|
||||||
|
"totalsize",
|
||||||
|
"off_dt_struct",
|
||||||
|
"off_dt_strings",
|
||||||
|
"off_mem_rsvmap",
|
||||||
|
"version",
|
||||||
|
"last_comp_version",
|
||||||
|
"boot_cpuid_phys",
|
||||||
|
"size_dt_strings",
|
||||||
|
"size_dt_struct",
|
||||||
|
};
|
||||||
|
|
||||||
|
static int fdt_get_header_value(int argc, char * const argv[])
|
||||||
|
{
|
||||||
|
fdt32_t *fdtp = (fdt32_t *)working_fdt;
|
||||||
|
ulong val;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (argv[2][0] != 'g')
|
||||||
|
return CMD_RET_FAILURE;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(fdt_member_table); i++) {
|
||||||
|
if (strcmp(fdt_member_table[i], argv[4]))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
val = fdt32_to_cpu(fdtp[i]);
|
||||||
|
env_set_hex(argv[3], val);
|
||||||
|
return CMD_RET_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return CMD_RET_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flattened Device Tree command, see the help for parameter definitions.
|
* Flattened Device Tree command, see the help for parameter definitions.
|
||||||
*/
|
*/
|
||||||
@@ -491,6 +525,9 @@ static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|||||||
* Display header info
|
* Display header info
|
||||||
*/
|
*/
|
||||||
} else if (argv[1][0] == 'h') {
|
} else if (argv[1][0] == 'h') {
|
||||||
|
if (argc == 5)
|
||||||
|
return fdt_get_header_value(argc, argv);
|
||||||
|
|
||||||
u32 version = fdt_version(working_fdt);
|
u32 version = fdt_version(working_fdt);
|
||||||
printf("magic:\t\t\t0x%x\n", fdt_magic(working_fdt));
|
printf("magic:\t\t\t0x%x\n", fdt_magic(working_fdt));
|
||||||
printf("totalsize:\t\t0x%x (%d)\n", fdt_totalsize(working_fdt),
|
printf("totalsize:\t\t0x%x (%d)\n", fdt_totalsize(working_fdt),
|
||||||
@@ -1090,7 +1127,8 @@ static char fdt_help_text[] =
|
|||||||
"fdt set <path> <prop> [<val>] - Set <property> [to <val>]\n"
|
"fdt set <path> <prop> [<val>] - Set <property> [to <val>]\n"
|
||||||
"fdt mknode <path> <node> - Create a new node after <path>\n"
|
"fdt mknode <path> <node> - Create a new node after <path>\n"
|
||||||
"fdt rm <path> [<prop>] - Delete the node or <property>\n"
|
"fdt rm <path> [<prop>] - Delete the node or <property>\n"
|
||||||
"fdt header - Display header info\n"
|
"fdt header [get <var> <member>] - Display header info\n"
|
||||||
|
" get - get header member <member> and store it in <var>\n"
|
||||||
"fdt bootcpu <id> - Set boot cpuid\n"
|
"fdt bootcpu <id> - Set boot cpuid\n"
|
||||||
"fdt memory <addr> <size> - Add/Update memory node\n"
|
"fdt memory <addr> <size> - Add/Update memory node\n"
|
||||||
"fdt rsvmem print - Show current mem reserves\n"
|
"fdt rsvmem print - Show current mem reserves\n"
|
||||||
|
Reference in New Issue
Block a user