123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #include "mkimage.h"
- #include "fit_common.h"
- #include <image.h>
- #include <u-boot/crc.h>
- void usage(char *cmdname)
- {
- fprintf(stderr, "Usage: %s -f fit file -n node -p property\n"
- " -f ==> set fit file which is used'\n"
- " -n ==> set node name'\n"
- " -p ==> set property name'\n",
- cmdname);
- exit(EXIT_FAILURE);
- }
- int main(int argc, char **argv)
- {
- int ffd = -1;
- struct stat fsbuf;
- void *fit_blob;
- int len;
- int nodeoffset;
- const void *nodep;
- char *fdtfile = NULL;
- char *nodename = NULL;
- char *propertyname = NULL;
- char cmdname[256];
- int c;
- strncpy(cmdname, *argv, sizeof(cmdname) - 1);
- cmdname[sizeof(cmdname) - 1] = '\0';
- while ((c = getopt(argc, argv, "f:n:p:")) != -1)
- switch (c) {
- case 'f':
- fdtfile = optarg;
- break;
- case 'n':
- nodename = optarg;
- break;
- case 'p':
- propertyname = optarg;
- break;
- default:
- usage(cmdname);
- break;
- }
- if (!fdtfile) {
- fprintf(stderr, "%s: Missing fdt file\n", *argv);
- usage(*argv);
- }
- if (!nodename) {
- fprintf(stderr, "%s: Missing node name\n", *argv);
- usage(*argv);
- }
- if (!propertyname) {
- fprintf(stderr, "%s: Missing property name\n", *argv);
- usage(*argv);
- }
- ffd = mmap_fdt(cmdname, fdtfile, 0, &fit_blob, &fsbuf, false);
- if (ffd < 0) {
- printf("Could not open %s\n", fdtfile);
- exit(EXIT_FAILURE);
- }
- nodeoffset = fdt_path_offset(fit_blob, nodename);
- if (nodeoffset < 0) {
- printf("%s not found.", nodename);
- exit(EXIT_FAILURE);
- }
- nodep = fdt_getprop(fit_blob, nodeoffset, propertyname, &len);
- if (len == 0) {
- printf("len == 0 %s\n", propertyname);
- exit(EXIT_FAILURE);
- }
- printf("NAME: %s\n", fit_get_name(fit_blob, nodeoffset, NULL));
- printf("LEN: %d\n", len);
- printf("OFF: %d\n", (int)(nodep - fit_blob));
- (void) munmap((void *)fit_blob, fsbuf.st_size);
- close(ffd);
- exit(EXIT_SUCCESS);
- }
|