Firmware Configuration and Compilation
--------------------------------------
-All firmware types mandate the definition of the following compile time
-configuration parameter.
-
-* **FW_TEXT_ADDR** - Defines the address at which the previous booting stage
- loads OpenSBI firmware.
+All firmware types support the following common compile time configuration
+parameters:
+
+* **FW_TEXT_ADDR** - Defines the execution address of the OpenSBI firmware.
+ This configuration parameter is mandatory.
+* **FW_FDT_PATH** - Path to an external flattened device tree binary file to
+ be embedded in the *.rodata* section of the final firmware. If this option
+ is not provided then the firmware will expect the FDT to be passed as an
+ argument by the prior booting stage.
+* **FW_FDT_PADDING** - Optional zero bytes padding to the embedded flattened
+ device tree binary file specified by **FW_FDT_PATH** option.
Additionally, each firmware type as a set of type specific configuration
parameters. Detailed information for each firmware type can be found in the
# 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)
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
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
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