Hi Tom, On Wed, 18 Dec 2024 at 07:30, Tom Rini <[email protected]> wrote: > > On Tue, Dec 17, 2024 at 06:46:37PM -0700, Simon Glass wrote: > > On Tue, 26 Nov 2024 at 10:10, Patrice CHOTARD > > <[email protected]> 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 <[email protected]> > > > > --- > > > > > > > > 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 <[email protected]> > > > > > > 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

