summaryrefslogtreecommitdiff
path: root/payloads
diff options
context:
space:
mode:
authorPatrick Rudolph <patrick.rudolph@9elements.com>2018-04-26 09:35:13 +0200
committerPatrick Georgi <pgeorgi@google.com>2018-06-15 09:13:24 +0000
commit7ee05eddf184764de8aa1e015936a42d069893f2 (patch)
treebab7d92178e35e35b4f60f496243b0f58099beab /payloads
parent31ff06a2da7380ecfe56365992d013b8ad0f7760 (diff)
util/cbfstool: Support FIT payloads
In order to support booting a GNU/Linux payload on non x86, the FIT format should be used, as it is the defacto standard on ARM. Due to greater complexity of FIT it is not converted to simple ELF format. Add support for autodecting FIT payloads and add them as new CBFS_TYPE 'fit'. The payload is included as is, with no special header. The code can determine the type at runtime using the CBFS_TYPE field. Support for parsing FIT payloads in coreboot is added in a follow on commit. Compression of FIT payloads is not supported, as the FIT sections might be compressed itself. Starting at this point a CBFS payload/ can be either of type FIT or SELF. Tested on Cavium SoC. Change-Id: Ic5fc30cd5419eb76c4eb50cca3449caea60270de Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/25860 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
Diffstat (limited to 'payloads')
-rw-r--r--payloads/coreinfo/cbfs_module.c4
-rw-r--r--payloads/libpayload/include/cbfs_core.h1
2 files changed, 5 insertions, 0 deletions
diff --git a/payloads/coreinfo/cbfs_module.c b/payloads/coreinfo/cbfs_module.c
index ee759352bf..275c84e986 100644
--- a/payloads/coreinfo/cbfs_module.c
+++ b/payloads/coreinfo/cbfs_module.c
@@ -29,6 +29,7 @@
#define COMPONENT_CBFSHEADER 0x02
#define COMPONENT_STAGE 0x10
#define COMPONENT_SELF 0x20
+#define COMPONENT_FIT 0x21
#define COMPONENT_OPTIONROM 0x30
#define COMPONENT_RAW 0x50
#define COMPONENT_MICROCODE 0x53
@@ -190,6 +191,9 @@ static int cbfs_module_redraw(WINDOW * win)
case COMPONENT_SELF:
mvwprintw(win, row++, 38, "simple ELF");
break;
+ case COMPONENT_FIT:
+ mvwprintw(win, row++, 38, "FIT");
+ break;
case COMPONENT_OPTIONROM:
mvwprintw(win, row++, 38, "optionrom");
break;
diff --git a/payloads/libpayload/include/cbfs_core.h b/payloads/libpayload/include/cbfs_core.h
index da9860458c..364f6c474d 100644
--- a/payloads/libpayload/include/cbfs_core.h
+++ b/payloads/libpayload/include/cbfs_core.h
@@ -68,6 +68,7 @@
#define CBFS_TYPE_STAGE 0x10
#define CBFS_TYPE_SELF 0x20
+#define CBFS_TYPE_FIT 0x21
#define CBFS_TYPE_OPTIONROM 0x30
#define CBFS_TYPE_BOOTSPLASH 0x40
#define CBFS_TYPE_RAW 0x50