mirror of
https://github.com/dgibson/dtc.git
synced 2026-01-22 01:30:34 -05:00
fdtput: Prepare to support multiple operations
We want to add new options to this tool. In preparation for this, add the concept of a current operation. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
bb21f0a766
commit
f58dff5040
1 changed files with 26 additions and 11 deletions
37
fdtput.c
37
fdtput.c
|
|
@ -28,7 +28,13 @@
|
|||
|
||||
#include "util.h"
|
||||
|
||||
/* These are the operations we support */
|
||||
enum oper_type {
|
||||
OPER_WRITE_PROP, /* Write a property in a node */
|
||||
};
|
||||
|
||||
struct display_info {
|
||||
enum oper_type oper; /* operation to perform */
|
||||
int type; /* data type (s/i/u/x or 0 for default) */
|
||||
int size; /* data size (1/2/4) */
|
||||
int verbose; /* verbose output */
|
||||
|
|
@ -143,13 +149,19 @@ static int do_fdtput(struct display_info *disp, const char *filename,
|
|||
if (!blob)
|
||||
return -1;
|
||||
|
||||
/* convert the arguments into a single binary value, then store */
|
||||
assert(arg_count >= 2);
|
||||
if (encode_value(disp, arg + 2, arg_count - 2, &value, &len) ||
|
||||
store_key_value(blob, *arg, arg[1], value, len))
|
||||
ret = -1;
|
||||
|
||||
if (!ret)
|
||||
switch (disp->oper) {
|
||||
case OPER_WRITE_PROP:
|
||||
/*
|
||||
* Convert the arguments into a single binary value, then
|
||||
* store them into the property.
|
||||
*/
|
||||
assert(arg_count >= 2);
|
||||
if (encode_value(disp, arg + 2, arg_count - 2, &value, &len) ||
|
||||
store_key_value(blob, *arg, arg[1], value, len))
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
if (ret >= 0)
|
||||
ret = utilfdt_write(filename, blob);
|
||||
|
||||
free(blob);
|
||||
|
|
@ -185,6 +197,7 @@ int main(int argc, char *argv[])
|
|||
|
||||
memset(&disp, '\0', sizeof(disp));
|
||||
disp.size = -1;
|
||||
disp.oper = OPER_WRITE_PROP;
|
||||
for (;;) {
|
||||
int c = getopt(argc, argv, "ht:v");
|
||||
if (c == -1)
|
||||
|
|
@ -224,10 +237,12 @@ int main(int argc, char *argv[])
|
|||
argv += optind;
|
||||
argc -= optind;
|
||||
|
||||
if (argc < 1)
|
||||
usage("Missing node");
|
||||
if (argc < 2)
|
||||
usage("Missing property");
|
||||
if (disp.oper == OPER_WRITE_PROP) {
|
||||
if (argc < 1)
|
||||
usage("Missing node");
|
||||
if (argc < 2)
|
||||
usage("Missing property");
|
||||
}
|
||||
|
||||
if (do_fdtput(&disp, filename, argv, argc))
|
||||
return 1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue