mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2025-08-24 15:31:22 +01:00
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>
This commit is contained in:
@@ -51,11 +51,17 @@ case, a *FW_PAYLOAD* firmware allows embedding a flattened device tree in the
|
|||||||
Firmware Configuration and Compilation
|
Firmware Configuration and Compilation
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
All firmware types mandate the definition of the following compile time
|
All firmware types support the following common compile time configuration
|
||||||
configuration parameter.
|
parameters:
|
||||||
|
|
||||||
* **FW_TEXT_ADDR** - Defines the address at which the previous booting stage
|
* **FW_TEXT_ADDR** - Defines the execution address of the OpenSBI firmware.
|
||||||
loads 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
|
Additionally, each firmware type as a set of type specific configuration
|
||||||
parameters. Detailed information for each firmware type can be found in the
|
parameters. Detailed information for each firmware type can be found in the
|
||||||
|
@@ -7,5 +7,9 @@
|
|||||||
# Anup Patel <anup.patel@wdc.com>
|
# 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_PATH_FINAL)
|
||||||
$(platform_build_dir)/firmware/fw_payload.o: $(FW_PAYLOAD_FDT_PATH)
|
$(platform_build_dir)/firmware/fw_payload.o: $(FW_PAYLOAD_FDT_PATH)
|
||||||
|
@@ -182,6 +182,11 @@ _bss_zero:
|
|||||||
call fw_save_info
|
call fw_save_info
|
||||||
MOV_5R a0, s0, a1, s1, a2, s2, a3, s3, a4, s4
|
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 */
|
/* Override previous arg1 */
|
||||||
MOV_3R s0, a0, s1, a1, s2, a2
|
MOV_3R s0, a0, s1, a1, s2, a2
|
||||||
call fw_prev_arg1
|
call fw_prev_arg1
|
||||||
@@ -668,3 +673,14 @@ _reset_regs:
|
|||||||
csrw CSR_MSCRATCH, 0
|
csrw CSR_MSCRATCH, 0
|
||||||
|
|
||||||
ret
|
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
|
||||||
|
@@ -17,6 +17,13 @@ ifdef FW_TEXT_START
|
|||||||
firmware-genflags-y += -DFW_TEXT_START=$(FW_TEXT_START)
|
firmware-genflags-y += -DFW_TEXT_START=$(FW_TEXT_START)
|
||||||
endif
|
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_DYNAMIC) += fw_dynamic.bin
|
||||||
|
|
||||||
firmware-bins-$(FW_JUMP) += fw_jump.bin
|
firmware-bins-$(FW_JUMP) += fw_jump.bin
|
||||||
|
Reference in New Issue
Block a user