[PATCH u-boot-mvebu v2 1/4] arm: mvebu: Move get_boot_device() to cpu.c and make visible

Stefan Roese sr at denx.de
Tue Aug 17 09:46:14 CEST 2021


On 16.08.21 15:19, 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 <marek.behun at nic.cz>

Reviewed-by: Stefan Roese <sr at denx.de>

Thanks,
Stefan

> ---
>   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)
>   {
> 


Viele Grüße,
Stefan

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list