On 01/15/2017 11:46 PM, Lukasz Majewski wrote: > Some boards do require early adjustments (due to e.g. HW fix) in SPL code. > In this particular case such operations must be performed just before ANY > external IC is accessed (good example here is the I2C early bus access).
Shouldn't such stuff be done in board_init_f or so then ? board_init_r is pretty late ... btw I'm not a big fan of adding more and more callbacks, what is the usecase here ? > Signed-off-by: Lukasz Majewski <lu...@denx.de> > --- > common/spl/Kconfig | 8 ++++++++ > common/spl/spl.c | 6 ++++++ > include/spl.h | 4 ++++ > 3 files changed, 18 insertions(+) > > diff --git a/common/spl/Kconfig b/common/spl/Kconfig > index bb99f1f..7e6f9c4 100644 > --- a/common/spl/Kconfig > +++ b/common/spl/Kconfig > @@ -185,6 +185,14 @@ config SPL_SAVEENV > "reboot_image" and act accordingly and change the reboot_image > to default mode using setenv and save the environemnt. > > +config SPL_EARLY_BOARD_INIT > + bool "Support early board init code" > + depends on SPL > + help > + Enable support for very early SPL board code adjustments. > + Some boards require having adjustements done before any > + peripherals being operational (e.g. I2C, SPI, UART). > + > config SPL_ETH_SUPPORT > bool "Support Ethernet" > depends on SPL_ENV_SUPPORT > diff --git a/common/spl/spl.c b/common/spl/spl.c > index bdb165a..a15647b 100644 > --- a/common/spl/spl.c > +++ b/common/spl/spl.c > @@ -393,6 +393,12 @@ void board_init_r(gd_t *dummy1, ulong dummy2) > struct spl_image_info spl_image; > int i; > > +#ifdef CONFIG_SPL_EARLY_BOARD_INIT > + debug(">>spl:early_board_init()\n"); > + > + spl_early_board_init(); > +#endif > + > debug(">>spl:board_init_r()\n"); > > #if defined(CONFIG_SYS_SPL_MALLOC_START) > diff --git a/include/spl.h b/include/spl.h > index e080a82..00a2058 100644 > --- a/include/spl.h > +++ b/include/spl.h > @@ -215,6 +215,10 @@ int spl_init(void); > void spl_board_init(void); > #endif > > +#ifdef CONFIG_SPL_EARLY_BOARD_INIT > +void spl_early_board_init(void); > +#endif > + > /** > * spl_was_boot_source() - check if U-Boot booted from SPL > * > -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot