- Clearfog: Fix SD booting (Baruch) - Misc updates to MMC handling in SPL to support booting from main data partition (vs hardware boot partition) on MVEBU (Baruch)
This commit is contained in:
@@ -20,12 +20,6 @@ of "/dev/sdX" here!
|
|||||||
Install U-Boot on eMMC:
|
Install U-Boot on eMMC:
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
The ROM loads the bootloader from eMMC first boot partition at offset 0. This
|
|
||||||
is unlike load from SD card that is at offset 512. As a result, the offset of
|
|
||||||
the main U-Boot image on the eMMC boot partition changes. Set
|
|
||||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR to 0x140 for SPL to load U-Boot from
|
|
||||||
the correct location.
|
|
||||||
|
|
||||||
To make SPL load the main U-Boot image from the eMMC boot partition enable
|
To make SPL load the main U-Boot image from the eMMC boot partition enable
|
||||||
eMMC boot acknowledgement and boot partition with the following U-Boot
|
eMMC boot acknowledgement and boot partition with the following U-Boot
|
||||||
command:
|
command:
|
||||||
|
|||||||
@@ -329,6 +329,18 @@ config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
|
|||||||
Address on the MMC to load U-Boot from, when the MMC is being used
|
Address on the MMC to load U-Boot from, when the MMC is being used
|
||||||
in raw mode. Units: MMC sectors (1 sector = 512 bytes).
|
in raw mode. Units: MMC sectors (1 sector = 512 bytes).
|
||||||
|
|
||||||
|
config SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET
|
||||||
|
hex "U-Boot main hardware partition image offset"
|
||||||
|
depends on SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
|
||||||
|
default 0x0
|
||||||
|
help
|
||||||
|
On some platforms SPL location depends on hardware partition. The ROM
|
||||||
|
code skips the MBR sector when loading SPL from main hardware data
|
||||||
|
partition. This adds offset to the main U-Boot image. Set this symbol
|
||||||
|
to the number of skipped sectors.
|
||||||
|
|
||||||
|
If unsure, leave the default.
|
||||||
|
|
||||||
config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
|
config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
|
||||||
bool "MMC Raw mode: by partition"
|
bool "MMC Raw mode: by partition"
|
||||||
help
|
help
|
||||||
|
|||||||
@@ -49,6 +49,16 @@ static ulong h_spl_load_read(struct spl_load_info *load, ulong sector,
|
|||||||
return blk_dread(mmc_get_blk_desc(mmc), sector, count, buf);
|
return blk_dread(mmc_get_blk_desc(mmc), sector, count, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static __maybe_unused unsigned long spl_mmc_raw_uboot_offset(int part)
|
||||||
|
{
|
||||||
|
#if IS_ENABLED(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR)
|
||||||
|
if (part == 0)
|
||||||
|
return CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static __maybe_unused
|
static __maybe_unused
|
||||||
int mmc_load_image_raw_sector(struct spl_image_info *spl_image,
|
int mmc_load_image_raw_sector(struct spl_image_info *spl_image,
|
||||||
struct mmc *mmc, unsigned long sector)
|
struct mmc *mmc, unsigned long sector)
|
||||||
@@ -325,7 +335,7 @@ int spl_mmc_load(struct spl_image_info *spl_image,
|
|||||||
static struct mmc *mmc;
|
static struct mmc *mmc;
|
||||||
u32 boot_mode;
|
u32 boot_mode;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
__maybe_unused int part;
|
__maybe_unused int part = 0;
|
||||||
|
|
||||||
/* Perform peripheral init only once */
|
/* Perform peripheral init only once */
|
||||||
if (!mmc) {
|
if (!mmc) {
|
||||||
@@ -391,7 +401,8 @@ int spl_mmc_load(struct spl_image_info *spl_image,
|
|||||||
return err;
|
return err;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
|
#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
|
||||||
err = mmc_load_image_raw_sector(spl_image, mmc, raw_sect);
|
err = mmc_load_image_raw_sector(spl_image, mmc,
|
||||||
|
raw_sect + spl_mmc_raw_uboot_offset(part));
|
||||||
if (!err)
|
if (!err)
|
||||||
return err;
|
return err;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ CONFIG_USE_PREBOOT=y
|
|||||||
CONFIG_SYS_CONSOLE_INFO_QUIET=y
|
CONFIG_SYS_CONSOLE_INFO_QUIET=y
|
||||||
# CONFIG_DISPLAY_BOARDINFO is not set
|
# CONFIG_DISPLAY_BOARDINFO is not set
|
||||||
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x141
|
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET=0x1
|
||||||
|
CONFIG_SPL_DM_GPIO=y
|
||||||
CONFIG_SPL_I2C_SUPPORT=y
|
CONFIG_SPL_I2C_SUPPORT=y
|
||||||
# CONFIG_CMD_FLASH is not set
|
# CONFIG_CMD_FLASH is not set
|
||||||
CONFIG_CMD_GPIO=y
|
CONFIG_CMD_GPIO=y
|
||||||
|
|||||||
Reference in New Issue
Block a user