On Monday 16 August 2021 15:19:37 Marek Behún wrote: > Move the function get_boot_device() from spl.c to cpu.c. > > Make it visible, so that it may be used from other files. > > Signed-off-by: Marek Behún <[email protected]>
Reviewed-by: Pali Rohár <[email protected]> > --- > arch/arm/mach-mvebu/cpu.c | 60 ++++++++++++++++++++ > arch/arm/mach-mvebu/include/mach/cpu.h | 2 + > arch/arm/mach-mvebu/spl.c | 77 +++----------------------- > 3 files changed, 71 insertions(+), 68 deletions(-) > > diff --git a/arch/arm/mach-mvebu/cpu.c b/arch/arm/mach-mvebu/cpu.c > index 0b935c46fb..daf8bd66a0 100644 > --- a/arch/arm/mach-mvebu/cpu.c > +++ b/arch/arm/mach-mvebu/cpu.c > @@ -14,6 +14,7 @@ > #include <asm/pl310.h> > #include <asm/arch/cpu.h> > #include <asm/arch/soc.h> > +#include <asm/spl.h> > #include <sdhci.h> > > #define DDR_BASE_CS_OFF(n) (0x0000 + ((n) << 3)) > @@ -80,6 +81,65 @@ int mvebu_soc_family(void) > return MVEBU_SOC_UNKNOWN; > } > > +u32 get_boot_device(void) > +{ > + u32 val; > + u32 boot_device; > + > + /* > + * First check, if UART boot-mode is active. This can only > + * be done, via the bootrom error register. Here the > + * MSB marks if the UART mode is active. > + */ > + val = readl(CONFIG_BOOTROM_ERR_REG); > + boot_device = (val & BOOTROM_ERR_MODE_MASK) >> BOOTROM_ERR_MODE_OFFS; > + debug("BOOTROM_REG=0x%08x boot_device=0x%x\n", val, boot_device); > + if (boot_device == BOOTROM_ERR_MODE_UART) > + return BOOT_DEVICE_UART; > + > +#ifdef CONFIG_ARMADA_38X > + /* > + * If the bootrom error code contains any other than zeros it's an > + * error condition and the bootROM has fallen back to UART boot > + */ > + boot_device = (val & BOOTROM_ERR_CODE_MASK) >> BOOTROM_ERR_CODE_OFFS; > + if (boot_device) > + return BOOT_DEVICE_UART; > +#endif > + > + /* > + * Now check the SAR register for the strapped boot-device > + */ > + val = readl(CONFIG_SAR_REG); /* SAR - Sample At Reset */ > + boot_device = (val & BOOT_DEV_SEL_MASK) >> BOOT_DEV_SEL_OFFS; > + debug("SAR_REG=0x%08x boot_device=0x%x\n", val, boot_device); > + switch (boot_device) { > +#ifdef BOOT_FROM_NAND > + case BOOT_FROM_NAND: > + return BOOT_DEVICE_NAND; > +#endif > +#ifdef BOOT_FROM_MMC > + case BOOT_FROM_MMC: > + case BOOT_FROM_MMC_ALT: > + return BOOT_DEVICE_MMC1; > +#endif > + case BOOT_FROM_UART: > +#ifdef BOOT_FROM_UART_ALT > + case BOOT_FROM_UART_ALT: > +#endif > + return BOOT_DEVICE_UART; > +#ifdef BOOT_FROM_SATA > + case BOOT_FROM_SATA: > + case BOOT_FROM_SATA_ALT: > + return BOOT_DEVICE_SATA; > +#endif > + case BOOT_FROM_SPI: > + return BOOT_DEVICE_SPI; > + default: > + return BOOT_DEVICE_BOOTROM; > + }; > +} > + > #if defined(CONFIG_DISPLAY_CPUINFO) > > #if defined(CONFIG_ARMADA_375) > diff --git a/arch/arm/mach-mvebu/include/mach/cpu.h > b/arch/arm/mach-mvebu/include/mach/cpu.h > index 79858858c2..a7a62c7e7d 100644 > --- a/arch/arm/mach-mvebu/include/mach/cpu.h > +++ b/arch/arm/mach-mvebu/include/mach/cpu.h > @@ -148,6 +148,8 @@ void __noreturn return_to_bootrom(void); > int mv_sdh_init(unsigned long regbase, u32 max_clk, u32 min_clk, u32 quirks); > #endif > > +u32 get_boot_device(void); > + > void get_sar_freq(struct sar_freq_modes *sar_freq); > > /* > diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c > index f0cf60bb14..8d6d4902f6 100644 > --- a/arch/arm/mach-mvebu/spl.c > +++ b/arch/arm/mach-mvebu/spl.c > @@ -171,74 +171,6 @@ int spl_parse_board_header(struct spl_image_info > *spl_image, > return 0; > } > > -static u32 get_boot_device(void) > -{ > - u32 val; > - u32 boot_device; > - > - /* > - * First check, if UART boot-mode is active. This can only > - * be done, via the bootrom error register. Here the > - * MSB marks if the UART mode is active. > - */ > - val = readl(CONFIG_BOOTROM_ERR_REG); > - boot_device = (val & BOOTROM_ERR_MODE_MASK) >> BOOTROM_ERR_MODE_OFFS; > - debug("BOOTROM_REG=0x%08x boot_device=0x%x\n", val, boot_device); > - if (boot_device == BOOTROM_ERR_MODE_UART) > - return BOOT_DEVICE_UART; > - > -#ifdef CONFIG_ARMADA_38X > - /* > - * If the bootrom error code contains any other than zeros it's an > - * error condition and the bootROM has fallen back to UART boot > - */ > - boot_device = (val & BOOTROM_ERR_CODE_MASK) >> BOOTROM_ERR_CODE_OFFS; > - if (boot_device) > - return BOOT_DEVICE_UART; > -#endif > - > - /* > - * Now check the SAR register for the strapped boot-device > - */ > - val = readl(CONFIG_SAR_REG); /* SAR - Sample At Reset */ > - boot_device = (val & BOOT_DEV_SEL_MASK) >> BOOT_DEV_SEL_OFFS; > - debug("SAR_REG=0x%08x boot_device=0x%x\n", val, boot_device); > - switch (boot_device) { > -#ifdef BOOT_FROM_NAND > - case BOOT_FROM_NAND: > - return BOOT_DEVICE_NAND; > -#endif > -#ifdef BOOT_FROM_MMC > - case BOOT_FROM_MMC: > - case BOOT_FROM_MMC_ALT: > - return BOOT_DEVICE_MMC1; > -#endif > - case BOOT_FROM_UART: > -#ifdef BOOT_FROM_UART_ALT > - case BOOT_FROM_UART_ALT: > -#endif > - return BOOT_DEVICE_UART; > -#ifdef BOOT_FROM_SATA > - case BOOT_FROM_SATA: > - case BOOT_FROM_SATA_ALT: > - return BOOT_DEVICE_SATA; > -#endif > - case BOOT_FROM_SPI: > - return BOOT_DEVICE_SPI; > - default: > - return BOOT_DEVICE_BOOTROM; > - }; > -} > - > -#else > - > -static u32 get_boot_device(void) > -{ > - return BOOT_DEVICE_BOOTROM; > -} > - > -#endif > - > u32 spl_boot_device(void) > { > u32 boot_device = get_boot_device(); > @@ -285,6 +217,15 @@ u32 spl_boot_device(void) > } > } > > +#else > + > +u32 spl_boot_device(void) > +{ > + return BOOT_DEVICE_BOOTROM; > +} > + > +#endif > + > int board_return_to_bootrom(struct spl_image_info *spl_image, > struct spl_boot_device *bootdev) > { > -- > 2.31.1 >

