diff options
author | Bin Meng <bin.meng@windriver.com> | 2020-08-02 23:09:06 -0700 |
---|---|---|
committer | Andes <uboot@andestech.com> | 2020-08-14 14:38:53 +0800 |
commit | 3581811dc26fdf9eef05a7de9f654dc6a7a2596a (patch) | |
tree | 9c9693f266beca3fade8b1f3f919cc407c51e388 /board/sifive/fu540/spl.c | |
parent | 50856c3f0f0d14da97634e9cdef2f0380210f9cc (diff) |
riscv: sifive/fu540: Move SPL related functions to spl.c
It's better to keep all SPL related functions in the same spl.c.
Signed-off-by: Bin Meng <bin.meng@windriver.com>
Reviewed-by: Leo Liang <ycliang@andestech.com>
Reviewed-by: Rick Chen <rick@andestech.com>
Reviewed-by: Pragnesh Patel <pragnesh.patel@sifive.com>
Tested-by: Pragnesh Patel <pragnesh.patel@sifive.com>
Diffstat (limited to 'board/sifive/fu540/spl.c')
-rw-r--r-- | board/sifive/fu540/spl.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/board/sifive/fu540/spl.c b/board/sifive/fu540/spl.c index 135e118617..fe27316b2d 100644 --- a/board/sifive/fu540/spl.c +++ b/board/sifive/fu540/spl.c @@ -11,11 +11,17 @@ #include <misc.h> #include <log.h> #include <linux/delay.h> +#include <linux/io.h> #include <asm/gpio.h> #include <asm/arch/gpio.h> #include <asm/arch/spl.h> -#define GEM_PHY_RESET SIFIVE_GENERIC_GPIO_NR(0, 12) +#define GEM_PHY_RESET SIFIVE_GENERIC_GPIO_NR(0, 12) + +#define MODE_SELECT_REG 0x1000 +#define MODE_SELECT_QSPI 0x6 +#define MODE_SELECT_SD 0xb +#define MODE_SELECT_MASK GENMASK(3, 0) int spl_board_init_f(void) { @@ -55,3 +61,28 @@ int spl_board_init_f(void) return 0; } + +u32 spl_boot_device(void) +{ + u32 mode_select = readl((void *)MODE_SELECT_REG); + u32 boot_device = mode_select & MODE_SELECT_MASK; + + switch (boot_device) { + case MODE_SELECT_QSPI: + return BOOT_DEVICE_SPI; + case MODE_SELECT_SD: + return BOOT_DEVICE_MMC1; + default: + debug("Unsupported boot device 0x%x but trying MMC1\n", + boot_device); + return BOOT_DEVICE_MMC1; + } +} + +#ifdef CONFIG_SPL_LOAD_FIT +int board_fit_config_name_match(const char *name) +{ + /* boot using first FIT config */ + return 0; +} +#endif |