-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
SPL: FIT: allow loading multiple images
So far we were not using the FIT image format to its full potential: The SPL FIT loader was just loading the first image from the /images node plus one of the listed DTBs. Now with the refactored loader code it's easy to load an arbitrary number of images in addition to the two mentioned above. As described in the FIT image source file format description, iterate over all images listed at the "loadables" property in the configuration node and load every image at its desired location. This allows to load any kind of images: - firmware images to execute before U-Boot proper (for instance ARM Trusted Firmware (ATF)) - firmware images for management processors (SCP, arisc, ...) - firmware images for devices like WiFi controllers - bit files for FPGAs - additional configuration data - kernels and/or ramdisks The actual usage of this feature would be platform and/or board specific. Also update the FIT documentation to mention the new SPL feature and provide an example .its file to demonstrate its features. Signed-off-by: Andre Przywara <[email protected]> Reviewed-by: Lokesh Vutla <[email protected]> Reviewed-by: Simon Glass <[email protected]> Tested-by: Heiko Stuebner <[email protected]> Reviewed-by: Kever Yang <[email protected]> Tested-by: Kever Yang <[email protected]> Tested-by: Jagan Teki <[email protected]> Reviewed-by: Jagan Teki <[email protected]>
- Loading branch information
Showing
3 changed files
with
150 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
/dts-v1/; | ||
|
||
/* | ||
* (Bogus) example FIT image description file demonstrating the usage | ||
* of multiple images loaded by the SPL. | ||
* Several binaries will be loaded at their respective load addresses. | ||
* Finally the one image specifying an entry point will be entered by the SPL. | ||
*/ | ||
|
||
/ { | ||
description = "multiple firmware blobs and U-Boot, loaded by SPL"; | ||
#address-cells = <0x1>; | ||
|
||
images { | ||
|
||
uboot { | ||
description = "U-Boot (64-bit)"; | ||
type = "standalone"; | ||
arch = "arm64"; | ||
compression = "none"; | ||
load = <0x4a000000>; | ||
}; | ||
|
||
atf { | ||
description = "ARM Trusted Firmware"; | ||
type = "firmware"; | ||
arch = "arm64"; | ||
compression = "none"; | ||
load = <0x18000>; | ||
entry = <0x18000>; | ||
}; | ||
|
||
mgmt-firmware { | ||
description = "arisc management processor firmware"; | ||
type = "firmware"; | ||
arch = "or1k"; | ||
compression = "none"; | ||
load = <0x40000>; | ||
}; | ||
|
||
fdt@1 { | ||
description = "Pine64+ DT"; | ||
type = "flat_dt"; | ||
compression = "none"; | ||
load = <0x4fa00000>; | ||
arch = "arm64"; | ||
}; | ||
|
||
fdt@2 { | ||
description = "Pine64 DT"; | ||
type = "flat_dt"; | ||
compression = "none"; | ||
load = <0x4fa00000>; | ||
arch = "arm64"; | ||
}; | ||
|
||
kernel { | ||
description = "4.7-rc5 kernel"; | ||
type = "kernel"; | ||
compression = "none"; | ||
load = <0x40080000>; | ||
arch = "arm64"; | ||
}; | ||
|
||
initrd { | ||
description = "Debian installer initrd"; | ||
type = "ramdisk"; | ||
compression = "none"; | ||
load = <0x4fe00000>; | ||
arch = "arm64"; | ||
}; | ||
}; | ||
|
||
configurations { | ||
default = "config@1"; | ||
|
||
config@1 { | ||
description = "sun50i-a64-pine64-plus"; | ||
loadables = "uboot", "atf", "kernel", "initrd"; | ||
fdt = "fdt@1"; | ||
}; | ||
|
||
config@2 { | ||
description = "sun50i-a64-pine64"; | ||
loadables = "uboot", "atf", "mgmt-firmware"; | ||
fdt = "fdt@2"; | ||
}; | ||
}; | ||
}; |