mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-11 07:34:31 +00:00
ARM: imx6q_logic: Fix MMC2 booting
With the reverting of a previous change to spl_boot_device, this board needs a new solution to determining if we're booting from MMC1 or MMC2. This patch creates board_boot_order function which overrides the standard, and returns not only MMC1, or MMC2, but also can fall back to NAND or the serial downloader should other boot options fail. Signed-off-by: Adam Ford <aford173@gmail.com>
This commit is contained in:
parent
63ce94b16b
commit
9fb50c68da
1 changed files with 29 additions and 0 deletions
|
@ -207,6 +207,35 @@ struct fsl_esdhc_cfg usdhc_cfg[] = {
|
|||
{USDHC2_BASE_ADDR} /* Baseboard */
|
||||
};
|
||||
|
||||
void board_boot_order(u32 *spl_boot_list)
|
||||
{
|
||||
struct src *psrc = (struct src *)SRC_BASE_ADDR;
|
||||
unsigned int reg = readl(&psrc->sbmr1) >> 11;
|
||||
/*
|
||||
* Upon reading BOOT_CFG register the following map is done:
|
||||
* Bit 11 and 12 of BOOT_CFG register can determine the current
|
||||
* mmc port
|
||||
* 0x1 SD1-SOM
|
||||
* 0x2 SD2-Baseboard
|
||||
*/
|
||||
|
||||
reg &= 0x3; /* Only care about bottom 2 bits */
|
||||
switch (reg) {
|
||||
case 0:
|
||||
spl_boot_list[0] = BOOT_DEVICE_MMC1;
|
||||
break;
|
||||
case 1:
|
||||
spl_boot_list[0] = BOOT_DEVICE_MMC2;
|
||||
break;
|
||||
}
|
||||
|
||||
/* If we cannot find a valid MMC/SD card, try NAND */
|
||||
spl_boot_list[1] = BOOT_DEVICE_NAND;
|
||||
|
||||
/* As a last resort, use serial downloader */
|
||||
spl_boot_list[2] = BOOT_DEVICE_BOARD;
|
||||
}
|
||||
|
||||
int board_mmc_init(bd_t *bis)
|
||||
{
|
||||
struct src *psrc = (struct src *)SRC_BASE_ADDR;
|
||||
|
|
Loading…
Reference in a new issue