|
@@ -85,8 +85,8 @@ static void usage(const char *msg)
|
|
" -x ==> set XIP (execute in place)\n",
|
|
" -x ==> set XIP (execute in place)\n",
|
|
params.cmdname);
|
|
params.cmdname);
|
|
fprintf(stderr,
|
|
fprintf(stderr,
|
|
- " %s [-D dtc_options] [-f fit-image.its|-f auto|-F] [-b <dtb_list>] fit-image\n"
|
|
|
|
- " <dtb_list> is used with -f auto, and is a space-separated list of .dtb files\n",
|
|
|
|
|
|
+ " %s [-D dtc_options] [-f fit-image.its|-f auto|-F] [-b <dtb> [-b <dtb>]] fit-image\n"
|
|
|
|
+ " <dtb> file is used with -f auto, it may occour multiple times.\n",
|
|
params.cmdname);
|
|
params.cmdname);
|
|
fprintf(stderr,
|
|
fprintf(stderr,
|
|
" -D => set all options for device tree compiler\n"
|
|
" -D => set all options for device tree compiler\n"
|
|
@@ -138,7 +138,7 @@ static void process_args(int argc, char **argv)
|
|
|
|
|
|
expecting = IH_TYPE_COUNT; /* Unknown */
|
|
expecting = IH_TYPE_COUNT; /* Unknown */
|
|
while ((opt = getopt(argc, argv,
|
|
while ((opt = getopt(argc, argv,
|
|
- "-a:A:bcC:d:D:e:Ef:Fk:K:ln:O:rR:sT:vVx")) != -1) {
|
|
|
|
|
|
+ "a:A:b:cC:d:D:e:Ef:Fk:K:ln:O:rR:sT:vVx")) != -1) {
|
|
switch (opt) {
|
|
switch (opt) {
|
|
case 'a':
|
|
case 'a':
|
|
params.addr = strtoull(optarg, &ptr, 16);
|
|
params.addr = strtoull(optarg, &ptr, 16);
|
|
@@ -155,6 +155,12 @@ static void process_args(int argc, char **argv)
|
|
break;
|
|
break;
|
|
case 'b':
|
|
case 'b':
|
|
expecting = IH_TYPE_FLATDT;
|
|
expecting = IH_TYPE_FLATDT;
|
|
|
|
+ if (add_content(expecting, optarg)) {
|
|
|
|
+ fprintf(stderr,
|
|
|
|
+ "%s: Out of memory adding content '%s'",
|
|
|
|
+ params.cmdname, optarg);
|
|
|
|
+ exit(EXIT_FAILURE);
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
case 'c':
|
|
case 'c':
|
|
params.comment = optarg;
|
|
params.comment = optarg;
|
|
@@ -243,29 +249,14 @@ static void process_args(int argc, char **argv)
|
|
case 'x':
|
|
case 'x':
|
|
params.xflag++;
|
|
params.xflag++;
|
|
break;
|
|
break;
|
|
- case 1:
|
|
|
|
- if (expecting == type || optind == argc) {
|
|
|
|
- params.imagefile = optarg;
|
|
|
|
- expecting = IH_TYPE_INVALID;
|
|
|
|
- } else if (expecting == IH_TYPE_INVALID) {
|
|
|
|
- fprintf(stderr,
|
|
|
|
- "%s: Unknown content type: use -b before device tree files",
|
|
|
|
- params.cmdname);
|
|
|
|
- exit(EXIT_FAILURE);
|
|
|
|
- } else {
|
|
|
|
- if (add_content(expecting, optarg)) {
|
|
|
|
- fprintf(stderr,
|
|
|
|
- "%s: Out of memory adding content '%s'",
|
|
|
|
- params.cmdname, optarg);
|
|
|
|
- exit(EXIT_FAILURE);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- break;
|
|
|
|
default:
|
|
default:
|
|
usage("Invalid option");
|
|
usage("Invalid option");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (optind < argc && expecting == type)
|
|
|
|
+ params.imagefile = argv[optind];
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* For auto-generated FIT images we need to know the image type to put
|
|
* For auto-generated FIT images we need to know the image type to put
|
|
* in the FIT, which is separate from the file's image type (which
|
|
* in the FIT, which is separate from the file's image type (which
|