Message ID | 20250227144734.61458-2-ziyao@disroot.org |
---|---|
State | Superseded |
Delegated to: | Andes |
Headers | show |
Series | Simplifiy retrieving FDT from SBI in S-Mode | expand |
On Thu, Feb 27, 2025 at 02:47:29PM +0000, Yao Zi wrote: > It's common for S-Mode U-Boot to retrieve a FDT blob along with taking > control from SBI firmware. Add a weak version of board_fdt_blob_setup to > make use of it by default and avoid copy-pasting similar functions among > boards. > > Signed-off-by: Yao Zi <ziyao@disroot.org> > --- > arch/riscv/lib/Makefile | 1 + > arch/riscv/lib/board.c | 19 +++++++++++++++++++ > 2 files changed, 20 insertions(+) > create mode 100644 arch/riscv/lib/board.c Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com>
diff --git a/arch/riscv/lib/Makefile b/arch/riscv/lib/Makefile index 268116f3757..b33f9c646dd 100644 --- a/arch/riscv/lib/Makefile +++ b/arch/riscv/lib/Makefile @@ -27,6 +27,7 @@ obj-$(CONFIG_$(XPL_)SMP) += smp.o obj-$(CONFIG_XPL_BUILD) += spl.o obj-y += fdt_fixup.o obj-$(CONFIG_$(SPL)CMD_BDI) += bdinfo.o +obj-$(CONFIG_OF_BOARD) += board.o # For building EFI apps CFLAGS_NON_EFI := -fstack-protector-strong diff --git a/arch/riscv/lib/board.c b/arch/riscv/lib/board.c new file mode 100644 index 00000000000..77bc174b047 --- /dev/null +++ b/arch/riscv/lib/board.c @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * RISC-V-specific handling of firmware FDT + */ + +#include <asm/global_data.h> +#include <linux/errno.h> + +DECLARE_GLOBAL_DATA_PTR; + +__weak int board_fdt_blob_setup(void **fdtp) +{ + if (!gd->arch.firmware_fdt_addr) + return -EEXIST; + + *fdtp = (void *)gd->arch.firmware_fdt_addr; + + return 0; +}
It's common for S-Mode U-Boot to retrieve a FDT blob along with taking control from SBI firmware. Add a weak version of board_fdt_blob_setup to make use of it by default and avoid copy-pasting similar functions among boards. Signed-off-by: Yao Zi <ziyao@disroot.org> --- arch/riscv/lib/Makefile | 1 + arch/riscv/lib/board.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 arch/riscv/lib/board.c