From 46aa6536f96511d383c73308f692679b9af9b6d9 Mon Sep 17 00:00:00 2001 From: Takumi Sueda Date: Fri, 9 Oct 2020 05:00:31 +0900 Subject: [PATCH] mxs: enter U-Boot without info from SPL --- arch/arm/cpu/arm926ejs/mxs/mxs.c | 15 +++++++++++++-- board/freescale/mx28evk/mx28evk.c | 3 ++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/arch/arm/cpu/arm926ejs/mxs/mxs.c b/arch/arm/cpu/arm926ejs/mxs/mxs.c index 4d21e3df76..412ba83c2e 100644 --- a/arch/arm/cpu/arm926ejs/mxs/mxs.c +++ b/arch/arm/cpu/arm926ejs/mxs/mxs.c @@ -177,7 +177,8 @@ const char *get_imx_type(u32 imxtype) int print_cpuinfo(void) { u32 cpurev; - struct mxs_spl_data *data = MXS_SPL_DATA; + uint8_t bootmode = 0, masked; + int i; cpurev = get_cpu_rev(); printf("CPU: Freescale i.MX%s rev%d.%d at %d MHz\n", @@ -185,7 +186,17 @@ int print_cpuinfo(void) (cpurev & 0x000F0) >> 4, (cpurev & 0x0000F) >> 0, mxc_get_clock(MXC_ARM_CLK) / 1000000); - printf("BOOT: %s\n", mxs_boot_modes[data->boot_mode_idx].mode); + +#define GLOBAL_BOOT_MODE_ADDR 0x00019BF0 + bootmode = __raw_readl(GLOBAL_BOOT_MODE_ADDR); + + for (i = 0; i < ARRAY_SIZE(mxs_boot_modes); i++) { + masked = bootmode & mxs_boot_modes[i].boot_mask; + if (masked == mxs_boot_modes[i].boot_pads) + break; + } + + printf("BOOT: %s\n", mxs_boot_modes[i].mode); return 0; } #endif diff --git a/board/freescale/mx28evk/mx28evk.c b/board/freescale/mx28evk/mx28evk.c index 21c9cb1128..c5c4ec09c9 100644 --- a/board/freescale/mx28evk/mx28evk.c +++ b/board/freescale/mx28evk/mx28evk.c @@ -62,7 +62,8 @@ int board_early_init_f(void) int dram_init(void) { - return mxs_dram_init(); + gd->ram_size = 0x8000000; // 128MiB + return 0; } int board_init(void)