]> git.sur5r.net Git - u-boot/commitdiff
mkimage will now report information about loadable
authorKarl Apsite <karl.apsite@dornerworks.com>
Thu, 21 May 2015 13:52:47 +0000 (09:52 -0400)
committerTom Rini <trini@konsulko.com>
Thu, 28 May 2015 12:18:20 +0000 (08:18 -0400)
Added FIT_LOADABLE_PROP, so the user can identify an optional entry
named "loadables" in their .its configuration. "loadables" is a comma
separated list in the .its

Documentation can be found in doc/uImage.FIT/source_file_format.txt and
                              doc/uImage.Fit/multi-with-loadables.its

Signed-off-by: Karl Apsite <Karl.Apsite@dornerworks.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
common/image-fit.c
doc/uImage.FIT/multi-with-loadables.its [new file with mode: 0644]
doc/uImage.FIT/source_file_format.txt
include/image.h

index 4eb4d42655e9bebb0fae767d89961327a100e0c8..fc9ea1f1b243bb4234d48b7b3e678616af28f67f 100644 (file)
@@ -1436,6 +1436,7 @@ void fit_conf_print(const void *fit, int noffset, const char *p)
        char *desc;
        char *uname;
        int ret;
+       int loadables_index;
 
        /* Mandatory properties */
        ret = fit_get_desc(fit, noffset, &desc);
@@ -1460,6 +1461,22 @@ void fit_conf_print(const void *fit, int noffset, const char *p)
        uname = (char *)fdt_getprop(fit, noffset, FIT_FDT_PROP, NULL);
        if (uname)
                printf("%s  FDT:          %s\n", p, uname);
+
+       /* Print out all of the specified loadables */
+       for (loadables_index = 0;
+            !fdt_get_string_index(fit, noffset,
+                       FIT_LOADABLE_PROP,
+                       loadables_index,
+                       (const char **)&uname) > 0;
+            loadables_index++)
+       {
+               if (loadables_index == 0) {
+                       printf("%s  Loadables:    ", p);
+               } else {
+                       printf("%s                ", p);
+               }
+               printf("%s\n", uname);
+       }
 }
 
 static int fit_image_select(const void *fit, int rd_noffset, int verify)
diff --git a/doc/uImage.FIT/multi-with-loadables.its b/doc/uImage.FIT/multi-with-loadables.its
new file mode 100644 (file)
index 0000000..a8545d2
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * U-Boot uImage source file with multiple kernels, ramdisks and FDT blobs
+ * This example makes use of the 'loadables' field
+ */
+
+/dts-v1/;
+
+/ {
+       description = "Configuration to load a Xen Kernel";
+       #address-cells = <1>;
+
+       images {
+               xen_kernel@1 {
+                       description = "xen binary";
+                       data = /incbin/("./xen");
+                       type = "kernel";
+                       arch = "arm";
+                       os = "linux";
+                       compression = "none";
+                       load = <0xa0000000>;
+                       entry = <0xa0000000>;
+                       hash@1 {
+                               algo = "md5";
+                       };
+               };
+
+               fdt@1 {
+                       description = "xexpress-ca15 tree blob";
+                       data = /incbin/("./vexpress-v2p-ca15-tc1.dtb");
+                       type = "flat_dt";
+                       arch = "arm";
+                       compression = "none";
+                       load = <0xb0000000>;
+                       hash@1 {
+                               algo = "md5";
+                       };
+               };
+
+               fdt@2 {
+                       description = "xexpress-ca15 tree blob";
+                       data = /incbin/("./vexpress-v2p-ca15-tc1.dtb");
+                       type = "flat_dt";
+                       arch = "arm";
+                       compression = "none";
+                       load = <0xb0400000>;
+                       hash@1 {
+                               algo = "md5";
+                       };
+               };
+
+               linux_kernel@1 {
+                       description = "Linux Image";
+                       data = /incbin/("./Image");
+                       type = "kernel";
+                       arch = "arm";
+                       os = "linux";
+                       compression = "none";
+                       load = <0xa0000000>;
+                       entry = <0xa0000000>;
+                       hash@1 {
+                               algo = "md5";
+                       };
+               };
+       };
+
+       configurations {
+               default = "config@2";
+
+               config@1 {
+                       description = "Just plain Linux";
+                       kernel = "linux_kernel@1";
+                       fdt = "fdt@1";
+               };
+
+               config@2 {
+                       description = "Xen one loadable";
+                       kernel = "xen_kernel@1";
+                       fdt = "fdt@1";
+                       loadables = "linux_kernel@1";
+               };
+
+               config@3 {
+                       description = "Xen two loadables";
+                       kernel = "xen_kernel@1";
+                       fdt = "fdt@1";
+                       loadables = "linux_kernel@1", "fdt@2";
+               };
+       };
+};
index 427ea498b498793f3af51bdad51dbf3ab351349c..029f481893ea06373ec44b4b610ab684c45c766b 100644 (file)
@@ -235,6 +235,7 @@ o config@1
   |- kernel = "kernel sub-node unit name"
   |- ramdisk = "ramdisk sub-node unit name"
   |- fdt = "fdt sub-node unit-name"
+  |- loadables = "loadables sub-node unit-name"
 
 
   Mandatory properties:
@@ -249,6 +250,9 @@ o config@1
     "fdt type").
   - setup : Unit name of the corresponding setup binary (used for booting
     an x86 kernel). This contains the setup.bin file built by the kernel.
+  - loadables : Unit name containing a list of additional binaries to be
+    loaded at their given locations.  "loadables" is a comma-separated list
+    of strings. U-Boot will load each binary at its given start-address.
 
 The FDT blob is required to properly boot FDT based kernel, so the minimal
 configuration for 2.6 FDT kernel is (kernel, fdt) pair.
index 60b924a5b6feb43a78a16781699547a8d5485247..97b96b3e240eda796f98d8a6ce39d5c87a1b47c4 100644 (file)
@@ -742,6 +742,7 @@ int bootz_setup(ulong image, ulong *start, ulong *end);
 #define FIT_KERNEL_PROP                "kernel"
 #define FIT_RAMDISK_PROP       "ramdisk"
 #define FIT_FDT_PROP           "fdt"
+#define FIT_LOADABLE_PROP      "loadables"
 #define FIT_DEFAULT_PROP       "default"
 #define FIT_SETUP_PROP         "setup"