summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorAnup Patel <anup.patel@wdc.com>2020-10-14 13:33:35 +0300
committerAnup Patel <anup@brainfault.org>2020-10-18 07:58:26 +0300
commit6ca096977d723f3ac50291d668719bd938a85544 (patch)
tree080b13bd140acc05ef08066dcb35586553bd90b9 /firmware
parentaf4b50f896684040dd3f56f2fdcad702f527c633 (diff)
downloadopensbi-6ca096977d723f3ac50291d668719bd938a85544.tar.xz
firmware: Add common FW_FDT_PATH compile-time option
Currently, only FW_PAYLOAD has mechanism to embed external FDT using FW_PAYLOAD_FDT_PATH compile-time option. This patch adds a common FW_FDT_PATH compile-time option to embed external FDT for all OpenSBI firmwares (i.e FW_JUMP, FW_PAYLOAD, and FW_DYNAMIC). Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Atish Patra <atish.patra@wdc.com>
Diffstat (limited to 'firmware')
-rw-r--r--firmware/external_deps.mk4
-rw-r--r--firmware/fw_base.S16
-rw-r--r--firmware/objects.mk7
3 files changed, 27 insertions, 0 deletions
diff --git a/firmware/external_deps.mk b/firmware/external_deps.mk
index 2b8f9f6..f43ac06 100644
--- a/firmware/external_deps.mk
+++ b/firmware/external_deps.mk
@@ -7,5 +7,9 @@
# Anup Patel <anup.patel@wdc.com>
#
+$(platform_build_dir)/firmware/fw_dynamic.o: $(FW_FDT_PATH)
+$(platform_build_dir)/firmware/fw_jump.o: $(FW_FDT_PATH)
+$(platform_build_dir)/firmware/fw_payload.o: $(FW_FDT_PATH)
+
$(platform_build_dir)/firmware/fw_payload.o: $(FW_PAYLOAD_PATH_FINAL)
$(platform_build_dir)/firmware/fw_payload.o: $(FW_PAYLOAD_FDT_PATH)
diff --git a/firmware/fw_base.S b/firmware/fw_base.S
index 0271d9a..95197da 100644
--- a/firmware/fw_base.S
+++ b/firmware/fw_base.S
@@ -182,6 +182,11 @@ _bss_zero:
call fw_save_info
MOV_5R a0, s0, a1, s1, a2, s2, a3, s3, a4, s4
+#ifdef FW_FDT_PATH
+ /* Override previous arg1 */
+ la a1, fw_fdt_bin
+#endif
+
/* Override previous arg1 */
MOV_3R s0, a0, s1, a1, s2, a2
call fw_prev_arg1
@@ -668,3 +673,14 @@ _reset_regs:
csrw CSR_MSCRATCH, 0
ret
+
+#ifdef FW_FDT_PATH
+ .section .rodata
+ .align 4
+ .globl fw_fdt_bin
+fw_fdt_bin:
+ .incbin FW_FDT_PATH
+#ifdef FW_FDT_PADDING
+ .fill FW_FDT_PADDING, 1, 0
+#endif
+#endif
diff --git a/firmware/objects.mk b/firmware/objects.mk
index c980362..2eea54c 100644
--- a/firmware/objects.mk
+++ b/firmware/objects.mk
@@ -17,6 +17,13 @@ ifdef FW_TEXT_START
firmware-genflags-y += -DFW_TEXT_START=$(FW_TEXT_START)
endif
+ifdef FW_FDT_PATH
+firmware-genflags-y += -DFW_FDT_PATH=\"$(FW_FDT_PATH)\"
+ifdef FW_FDT_PADDING
+firmware-genflags-y += -DFW_FDT_PADDING=$(FW_FDT_PADDING)
+endif
+endif
+
firmware-bins-$(FW_DYNAMIC) += fw_dynamic.bin
firmware-bins-$(FW_JUMP) += fw_jump.bin