
Hi Tom,
On Wed, 18 Dec 2024 at 07:30, Tom Rini trini@konsulko.com wrote:
On Tue, Dec 17, 2024 at 06:46:37PM -0700, Simon Glass wrote:
On Tue, 26 Nov 2024 at 10:10, Patrice CHOTARD patrice.chotard@foss.st.com wrote:
On 11/2/24 18:49, Simon Glass wrote:
This returns a devicetree and updates a parameter with an error code. Swap it, since this fits better with the way U-Boot normally works. It also (more easily) allows leaving the existing pointer unchanged.
No yaks were harmed in this change, but there is a very small code-size reduction.
For sifive, the OF_BOARD option must be set for the function to be called, so there is no point in checking it again. Also OF_SEPARATE is defined always.
Signed-off-by: Simon Glass sjg@chromium.org
Changes in v2:
- Set up the existing FDT in case the board wants to check it
- Update snapdragon to return -EEXIST
- Set the existing FDT before calling board_fd_blob_setup()
- Update sandbox to return -EEXIST if an fdt comes from a bloblist
- Update do_go_uboot() to set the existing FDT
- Drop unnecessary setting of FDT in vexpress64
- Tidy up redundant RISC-V code
arch/arm/mach-apple/board.c | 7 ++-- arch/arm/mach-snapdragon/board.c | 9 ++--- arch/arm/mach-stm32mp/boot_params.c | 19 ++++++----- arch/sandbox/cpu/cpu.c | 34 +++++++++---------- board/Marvell/octeontx/board-fdt.c | 12 +++---- board/Marvell/octeontx2/board-fdt.c | 12 +++---- board/Marvell/octeontx2/board.c | 3 +- board/andestech/ae350/ae350.c | 23 +++++++------ board/armltd/vexpress64/vexpress64.c | 33 ++++++++---------- board/broadcom/bcmstb/bcmstb.c | 7 ++-- board/emulation/qemu-arm/qemu-arm.c | 7 ++-- board/emulation/qemu-ppce500/qemu-ppce500.c | 12 +++---- board/emulation/qemu-riscv/qemu-riscv.c | 7 ++-- board/highbank/highbank.c | 7 ++-- board/raspberrypi/rpi/rpi.c | 13 ++++--- board/sifive/unleashed/unleashed.c | 12 +++---- board/sifive/unmatched/unmatched.c | 11 +++--- .../visionfive2/starfive_visionfive2.c | 11 +++--- board/xen/xenguest_arm64/xenguest_arm64.c | 14 ++++---- board/xilinx/common/board.c | 26 ++++++++------ include/fdtdec.h | 9 ++--- lib/fdtdec.c | 14 +++++--- 22 files changed, 152 insertions(+), 150 deletions(-)
diff --git a/arch/arm/mach-apple/board.c b/arch/arm/mach-apple/board.c index 0b6d290b8ac..2644a04a622 100644 --- a/arch/arm/mach-apple/board.c +++ b/arch/arm/mach-apple/board.c @@ -691,11 +691,12 @@ int dram_init_banksize(void)
extern long fw_dtb_pointer;
-void *board_fdt_blob_setup(int *err) +int board_fdt_blob_setup(void **fdtp) { /* Return DTB pointer passed by m1n1 */
*err = 0;
return (void *)fw_dtb_pointer;
*fdtp = (void *)fw_dtb_pointer;
return 0;
}
void build_mem_map(void) diff --git a/arch/arm/mach-snapdragon/board.c b/arch/arm/mach-snapdragon/board.c index 2ab2ceb5138..cd49de540f0 100644 --- a/arch/arm/mach-snapdragon/board.c +++ b/arch/arm/mach-snapdragon/board.c @@ -147,12 +147,12 @@ static void show_psci_version(void)
- or for supporting quirky devices where it's easier to leave the downstream DT in place
- to improve ABL compatibility. Otherwise, we use the DT provided by ABL.
*/ -void *board_fdt_blob_setup(int *err) +int board_fdt_blob_setup(void **fdtp) { struct fdt_header *fdt; bool internal_valid, external_valid;
int ret = 0;
*err = 0; fdt = (struct fdt_header *)get_prev_bl_fdt_addr(); external_valid = fdt && !fdt_check_header(fdt); internal_valid = !fdt_check_header(gd->fdt_blob);
@@ -167,10 +167,11 @@ void *board_fdt_blob_setup(int *err)
if (internal_valid) { debug("Using built in FDT\n");
ret = -EEXIST; } else { debug("Using external FDT\n"); /* So we can use it before returning */
gd->fdt_blob = fdt;
*fdtp = fdt; } /*
@@ -179,7 +180,7 @@ void *board_fdt_blob_setup(int *err) */ qcom_parse_memory();
return (void *)gd->fdt_blob;
return ret;
}
void reset_cpu(void) diff --git a/arch/arm/mach-stm32mp/boot_params.c b/arch/arm/mach-stm32mp/boot_params.c index ebddf6a7dbc..2d058edc419 100644 --- a/arch/arm/mach-stm32mp/boot_params.c +++ b/arch/arm/mach-stm32mp/boot_params.c @@ -6,6 +6,7 @@ #define LOG_CATEGORY LOGC_ARCH
#include <config.h> +#include <errno.h> #include <log.h> #include <linux/libfdt.h> #include <asm/arch/sys_proto.h> @@ -16,20 +17,22 @@
- Use the saved FDT address provided by TF-A at boot time (NT_FW_CONFIG =
- Non Trusted Firmware configuration file) when the pointer is valid
*/ -void *board_fdt_blob_setup(int *err) +int board_fdt_blob_setup(void **fdtp) { unsigned long nt_fw_dtb = get_stm32mp_bl2_dtb();
log_debug("%s: nt_fw_dtb=%lx\n", __func__, nt_fw_dtb);
*err = 0; /* use external device tree only if address is valid */
if (nt_fw_dtb >= STM32_DDR_BASE) {
if (fdt_magic(nt_fw_dtb) == FDT_MAGIC)
return (void *)nt_fw_dtb;
log_debug("%s: DTB not found.\n", __func__);
if (nt_fw_dtb < STM32_DDR_BASE ||
fdt_magic(nt_fw_dtb) != FDT_MAGIC) {
log_debug("DTB not found.\n");
log_debug("fall back to builtin DTB, %p\n", _end);
return -EEXIST; }
log_debug("%s: fall back to builtin DTB, %p\n", __func__, _end);
return (void *)_end;
*fdtp = (void *)nt_fw_dtb;
return 0;
}
For mach-stm32mp: Reviewed-by: Patrice Chotard patrice.chotard@foss.st.com
Thanks
Applied to sjg/master, thanks!
It would be helpful for this to be a pull request from you, vs current next. I hadn't applied it to next myself since I assigned it to you in patchwork. I can take it to next directly instead if you prefer.
OK, yes, I've assigned it to you. I should probably do that with all patches I apply, then you decide whether to apply them or not.
Regards, Simon