pcm052: bk4: sdcard: Add support for SD card booting/recovery

This code allows reusing the default u-boot as in the late board init, the
default envs are restored and proper recovery scripts executed.

Signed-off-by: Lukasz Majewski <lukma@denx.de>
This commit is contained in:
Lukasz Majewski 2019-02-13 22:46:56 +01:00 committed by Stefano Babic
parent b3d28ace14
commit e5b345f30c
3 changed files with 35 additions and 0 deletions

View File

@ -23,6 +23,7 @@ config TARGET_BK4R1
bool "BK4r1"
select SYS_FSL_ERRATUM_ESDHC135
select SYS_FSL_ERRATUM_ESDHC_A001
select BOARD_LATE_INIT
endchoice

View File

@ -289,6 +289,8 @@
#define SRC_SRSR_WDOG_M4 (0x1 << 4)
#define SRC_SRSR_WDOG_A5 (0x1 << 3)
#define SRC_SRSR_POR_RST (0x1 << 0)
#define SRC_SBMR1_BOOTCFG1_SDMMC BIT(6)
#define SRC_SBMR1_BOOTCFG1_MMC BIT(4)
#define SRC_SBMR2_BMOD_MASK (0x3 << 24)
#define SRC_SBMR2_BMOD_SHIFT 24
#define SRC_SBMR2_BMOD_FUSES 0x0

View File

@ -13,6 +13,7 @@
#include <asm/arch/ddrmc-vf610.h>
#include <asm/arch/crm_regs.h>
#include <asm/arch/clock.h>
#include <environment.h>
DECLARE_GLOBAL_DATA_PTR;
@ -307,6 +308,37 @@ int board_init(void)
return 0;
}
#ifdef CONFIG_TARGET_BK4R1
int board_late_init(void)
{
struct src *psrc = (struct src *)SRC_BASE_ADDR;
u32 reg;
/*
* BK4r1 handle emergency/service SD card boot
* Checking the SBMR1 register BOOTCFG1 byte:
* NAND:
* bit [2] - NAND data width - 16
* bit [5] - NAND fast boot
* bit [7] = 1 - NAND as a source of booting
* SD card (0x64):
* bit [4] = 0 - SD card source
* bit [6] = 1 - SD/MMC source
*/
reg = readl(&psrc->sbmr1);
if ((reg & SRC_SBMR1_BOOTCFG1_SDMMC) &&
!(reg & SRC_SBMR1_BOOTCFG1_MMC)) {
printf("------ SD card boot -------\n");
set_default_env("!LVFBootloader", 0);
env_set("bootcmd",
"run prepare_install_bk4r1_envs; run install_bk4r1rs");
}
return 0;
}
#endif /* CONFIG_TARGET_BK4R1 */
int checkboard(void)
{
#ifdef CONFIG_TARGET_BK4R1