mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-15 19:51:37 +00:00
arm: mvebu: Move get_boot_device() to cpu.c and make visible
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@nic.cz> Reviewed-by: Pali Rohár <pali@kernel.org> Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
167689897b
commit
dc595e3e45
3 changed files with 71 additions and 68 deletions
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
||||
/*
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue