Tom Rini <tr...@konsulko.com> writes: > On Sun, May 06, 2018 at 07:09:22AM -0400, Thomas Fitzsimmons wrote: > >> Add support for loading U-Boot on the Broadcom 7445D0 SoC. This port >> assumes Broadcom's BOLT bootloader is acting as the second stage >> bootloader, and U-Boot is acting as the third stage bootloader, loaded >> as an ELF program by BOLT. >> >> Signed-off-by: Thomas Fitzsimmons <fitz...@fitzsim.org> >> Cc: Stefan Roese <s...@denx.de> > [snip] >> diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S >> index fa81317..f1a6f35 100644 >> --- a/arch/arm/lib/crt0.S >> +++ b/arch/arm/lib/crt0.S >> @@ -94,6 +94,7 @@ ENTRY(_main) >> * 'here' but relocated. >> */ >> >> +#if !defined(CONFIG_OF_PRIOR_STAGE) >> ldr r0, [r9, #GD_START_ADDR_SP] /* sp = gd->start_addr_sp */ >> bic r0, r0, #7 /* 8-byte alignment for ABI compliance */ >> mov sp, r0 >> @@ -108,6 +109,7 @@ ENTRY(_main) >> #endif >> ldr r0, [r9, #GD_RELOCADDR] /* r0 = gd->relocaddr */ >> b relocate_code >> +#endif >> here: >> /* >> * now relocate vectors > > Can you explain this bit a good bit more?
When BOLT loads U-Boot as an ELF program, this relocation code hangs -- I haven't found out why yet -- but if I skip the relocation, U-Boot runs successfully. I figured out a different approach to preventing the relocation, one that only requires logic in an SoC-specific file, so v2 of the patch will not have any crt0.S changes. >> +config BCHP_BSPI_MAST_N_BOOT_CTRL >> + hex "" >> + default 0x003e3208 > > Doing hex "" seems wrong. What are you doing here exactly? I've reorganized all these into more appropriate locations, and documented all the remaining Kconfig items, which you'll see in the v2 patch I'll post shortly. >> diff --git a/common/fdt_support.c b/common/fdt_support.c >> index 66a313e..f07dfe3 100644 >> --- a/common/fdt_support.c >> +++ b/common/fdt_support.c >> @@ -242,11 +242,13 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong >> initrd_end) >> } >> } >> >> +#if !defined(CONFIG_BCMSTB_ACCOMMODATE_STBLINUX) >> err = fdt_add_mem_rsv(fdt, initrd_start, initrd_end - initrd_start); >> if (err < 0) { >> printf("fdt_initrd: %s\n", fdt_strerror(err)); >> return err; >> } >> +#endif > > Why do we need this? The background is that stblinux is designed to use some physical memory for Linux itself, and leave the rest of physical memory for direct use by video decode blocks in the SoC. Basically, without making accommodations for it in U-Boot, stblinux will allocate less memory for use by the video decode blocks than is actually available, even if it could safely allocate more. In v2 of the patch, I've documented a different approach to loading FIT images (one that keeps the RFS and DTB in-place), which eliminates the need for this configuration macro. >> +#ifdef DEBUG >> +static int debug_tx_rx; >> +#define D(fmt, args...) debug_cond(debug_tx_rx, fmt, ##args) >> +#else >> +#define D(fmt, args...) >> +#endif > > We have dbg() etc, please use. Thanks! OK, done in v2 of the patch. Thanks for reviewing, Thomas _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot