[PATCH 6/9] Add new dtput utility to write values to fdt

Simon Glass sjg at chromium.org
Sun Sep 4 13:23:15 EST 2011


Hi Grant,

On Wed, Jul 6, 2011 at 11:46 AM, Grant Likely <grant.likely at secretlab.ca> wrote:
> On Tue, Jul 05, 2011 at 12:02:54PM -0700, Simon Glass wrote:
>> This simple utility allows writing of values into a device tree from the
>> command line.
>>
>> Signed-off-by: Simon Glass <sjg at chromium.org>
>> ---
[snip]
>> +static void usage(const char *msg)
>> +{
>> +     if (msg)
>> +             fprintf(stderr, "Error: %s\n\n", msg);
>> +     fprintf(stderr, "dtput - write a property value to a device tree\n\n");
>> +     fprintf(stderr, "Usage: dtput <options> <dt file> <key> "
>> +             "[<value>...]\n");
>> +     fprintf(stderr, "Options:\n");
>> +     fprintf(stderr, "\t-f, --format <fmt>\tScanf format string to use "
>> +             "for value\n");
>> +     fprintf(stderr, "\t-t, --type <typechar>\tForce type to be string "
>> +             "(s), byte(b) or int(i)\n");
>> +     fprintf(stderr, "\t-h, --help\t\tPrint this help\n\n");
>> +     fprintf(stderr, "\t<key> is <node>/<property>, for example "
>> +             "/lcd/width for the width\n");
>> +     fprintf(stderr, "\tproperty in the LCD node\n");
>
> Can you make this text a single string and only call fprintf once?  It
> will be easier to reqd that way.

OK will do, thanks.

>
> It would be useful to have a mode for removing or renaming properties/nodes.

Yes, perhaps a -d flag to delete something (either a property or
node). I will look at this if my v2 patches pass muster.

Regards,
Simon

>
>> +     exit(2);
>> +}
>> +
>> +int main(int argc, char *argv[])
>> +{
>> +     int c;
>> +     int ret;
>> +     char *format = NULL;
>> +     int type = 0;
>> +     char *filename = NULL;
>> +     static struct option long_options[] = {
>> +             {"format", 1, 0, 'f'},
>> +             {"help", 1, 0, 'h'},
>> +             {"type", 1, 0, 't'},
>> +             {"verbose", 1, 0, 'v'},
>> +             {0, 0, 0, 0}
>> +     };
>> +
>> +     for (;;) {
>> +             c = getopt_long(argc, argv, "f:ht:v", long_options, NULL);
>> +             if (c == -1)
>> +                     break;
>> +
>> +             switch (c) {
>> +             case 'h':
>> +             case '?':
>> +                     usage(NULL);
>> +
>> +             case 'f':
>> +                     format = optarg;
>> +                     break;
>> +
>> +             case 't':
>> +                     type = *optarg;
>> +                     break;
>> +
>> +             case 'v':
>> +                     verbose = 1;
>> +                     break;
>> +             }
>> +     }
>> +
>> +     if (optind < argc)
>> +             filename = argv[optind++];
>> +     if (!filename)
>> +             usage("Missing filename");
>> +     if (optind == argc)
>> +             usage("Missing key(s)");
>> +
>> +     ret = do_dtput(filename, format, type, argv + optind, argc - optind);
>> +     return ret;
>> +}
>> --
>> 1.7.3.1
>>
>


More information about the devicetree-discuss mailing list