Commit 8244127db93d6cf17d2b35e9083400a78015c061

Authored by Heiko Schocher
Committed by Simon Glass
1 parent b847c14243

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>

Showing 1 changed file with 39 additions and 1 deletions Side-by-side Diff

... ... @@ -73,6 +73,40 @@
73 73 return 0;
74 74 }
75 75  
  76 +static const char * const fdt_member_table[] = {
  77 + "magic",
  78 + "totalsize",
  79 + "off_dt_struct",
  80 + "off_dt_strings",
  81 + "off_mem_rsvmap",
  82 + "version",
  83 + "last_comp_version",
  84 + "boot_cpuid_phys",
  85 + "size_dt_strings",
  86 + "size_dt_struct",
  87 +};
  88 +
  89 +static int fdt_get_header_value(int argc, char * const argv[])
  90 +{
  91 + fdt32_t *fdtp = (fdt32_t *)working_fdt;
  92 + ulong val;
  93 + int i;
  94 +
  95 + if (argv[2][0] != 'g')
  96 + return CMD_RET_FAILURE;
  97 +
  98 + for (i = 0; i < ARRAY_SIZE(fdt_member_table); i++) {
  99 + if (strcmp(fdt_member_table[i], argv[4]))
  100 + continue;
  101 +
  102 + val = fdt32_to_cpu(fdtp[i]);
  103 + env_set_hex(argv[3], val);
  104 + return CMD_RET_SUCCESS;
  105 + }
  106 +
  107 + return CMD_RET_FAILURE;
  108 +}
  109 +
76 110 /*
77 111 * Flattened Device Tree command, see the help for parameter definitions.
78 112 */
... ... @@ -491,6 +525,9 @@
491 525 * Display header info
492 526 */
493 527 } else if (argv[1][0] == 'h') {
  528 + if (argc == 5)
  529 + return fdt_get_header_value(argc, argv);
  530 +
494 531 u32 version = fdt_version(working_fdt);
495 532 printf("magic:\t\t\t0x%x\n", fdt_magic(working_fdt));
496 533 printf("totalsize:\t\t0x%x (%d)\n", fdt_totalsize(working_fdt),
... ... @@ -1090,7 +1127,8 @@
1090 1127 "fdt set <path> <prop> [<val>] - Set <property> [to <val>]\n"
1091 1128 "fdt mknode <path> <node> - Create a new node after <path>\n"
1092 1129 "fdt rm <path> [<prop>] - Delete the node or <property>\n"
1093   - "fdt header - Display header info\n"
  1130 + "fdt header [get <var> <member>] - Display header info\n"
  1131 + " get - get header member <member> and store it in <var>\n"
1094 1132 "fdt bootcpu <id> - Set boot cpuid\n"
1095 1133 "fdt memory <addr> <size> - Add/Update memory node\n"
1096 1134 "fdt rsvmem print - Show current mem reserves\n"