aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/image-fit.c17
-rw-r--r--doc/uImage.FIT/multi-with-loadables.its89
-rw-r--r--doc/uImage.FIT/source_file_format.txt4
-rw-r--r--include/image.h1
4 files changed, 111 insertions, 0 deletions
diff --git a/common/image-fit.c b/common/image-fit.c
index 4eb4d42655e..fc9ea1f1b24 100644
--- a/common/image-fit.c
+++ b/common/image-fit.c
@@ -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
index 00000000000..a8545d245c9
--- /dev/null
+++ b/doc/uImage.FIT/multi-with-loadables.its
@@ -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";
+ };
+ };
+};
diff --git a/doc/uImage.FIT/source_file_format.txt b/doc/uImage.FIT/source_file_format.txt
index 427ea498b49..029f481893e 100644
--- a/doc/uImage.FIT/source_file_format.txt
+++ b/doc/uImage.FIT/source_file_format.txt
@@ -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.
diff --git a/include/image.h b/include/image.h
index 60b924a5b6f..97b96b3e240 100644
--- a/include/image.h
+++ b/include/image.h
@@ -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"