[PATCH 2/5] fdtput: Prepare to support multiple operations
Simon Glass
sjg at chromium.org
Tue Jul 10 22:56:45 EST 2012
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 at chromium.org>
---
fdtput.c | 37 ++++++++++++++++++++++++++-----------
1 files changed, 26 insertions(+), 11 deletions(-)
diff --git a/fdtput.c b/fdtput.c
index 244d1f1..eceb7f2 100644
--- a/fdtput.c
+++ b/fdtput.c
@@ -28,7 +28,13 @@
#include "util.h"
+/* These are the operations we support */
+enum operation_t {
+ OPER_WRITE_PROP, /* Write a property in a node */
+};
+
struct display_info {
+ enum operation_t 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;
--
1.7.7.3
More information about the devicetree-discuss
mailing list