boot/opensbi: add support for including Linux payload
authorAlistair Francis <alistair.francis@wdc.com>
Mon, 22 Jul 2019 20:44:46 +0000 (13:44 -0700)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Sat, 3 Aug 2019 07:46:03 +0000 (09:46 +0200)
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
[Thomas:
 - Config.in: move the BR2_TARGET_OPENSBI_PLAT dependency to a
   "depends on", there's no need to have an if...endif block just for
   that.
 - Config.in: drop the BR2_TARGET_OPENSBI_LIBRARY_ONLY dependency,
   since this option doesn't exist
 - opensbi.mk: don't use qstrip on BR2_TARGET_OPENSBI_LINUX_PAYLOAD,
   since it's a boolean option
 - opensbi.mk: use += when adding linux to DEPENDENCIES
 - opensbki.mk: refactor the firmware file installation with a loop]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
boot/opensbi/Config.in
boot/opensbi/opensbi.mk

index 5f3cc13312938d032c8d3810815add4d94da76f0..b9b0ace8af41314e01cda1b2edfe228157a369f7 100644 (file)
@@ -22,4 +22,13 @@ config BR2_TARGET_OPENSBI_PLAT
          library libsbi.a is built. If a platform is specified then
          the platform specific static library libplatsbi.a and firmware
          examples are built.
+
+config BR2_TARGET_OPENSBI_LINUX_PAYLOAD
+       bool "Include Linux as OpenSBI Payload"
+       depends on BR2_TARGET_OPENSBI_PLAT != ""
+       depends on BR2_LINUX_KERNEL
+       depends on BR2_LINUX_KERNEL_IMAGE
+       help
+         Build OpenSBI with the Linux kernel as a Payload.
+
 endif
index 83552a544238c33052eb350b01d578ecdc4140c8..e202bd0b97b503886b63e6f72b15aef269c8678e 100644 (file)
@@ -19,19 +19,31 @@ ifneq ($(OPENSBI_PLAT),)
 OPENSBI_MAKE_ENV += PLATFORM=$(OPENSBI_PLAT)
 endif
 
+ifeq ($(BR2_TARGET_OPENSBI_LINUX_PAYLOAD),y)
+OPENSBI_DEPENDENCIES += linux
+OPENSBI_MAKE_ENV += FW_PAYLOAD_PATH="$(BINARIES_DIR)/Image"
+endif
+
 define OPENSBI_BUILD_CMDS
        $(TARGET_MAKE_ENV) $(OPENSBI_MAKE_ENV) $(MAKE) -C $(@D)
 endef
 
 ifneq ($(OPENSBI_PLAT),)
 OPENSBI_INSTALL_IMAGES = YES
+OPENSBI_FW_IMAGES += jump dynamic
+ifeq ($(BR2_TARGET_OPENSBI_LINUX_PAYLOAD),y)
+OPENSBI_FW_IMAGES += payload
+endif
+endif
+
 define OPENSBI_INSTALL_IMAGES_CMDS
-       $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_jump.bin $(BINARIES_DIR)/fw_jump.bin
-       $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_jump.elf $(BINARIES_DIR)/fw_jump.elf
-       $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_dynamic.bin $(BINARIES_DIR)/fw_dynamic.bin
-       $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_dynamic.elf $(BINARIES_DIR)/fw_dynamic.elf
+       $(foreach f,$(OPENSBI_FW_IMAGES),\
+               $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_$(f).bin \
+                       $(BINARIES_DIR)/fw_$(f).bin
+               $(INSTALL) -m 0644 -D $(@D)/build/platform/$(OPENSBI_PLAT)/firmware/fw_$(f).elf \
+                       $(BINARIES_DIR)/fw_$(f).elf
+       )
 endef
-endif
 
 # libsbi.a is not a library meant to be linked in user-space code, but
 # with bare metal code, which is why we don't install it in