mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-04-01 03:51: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 */
|
{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)
|
int board_mmc_init(bd_t *bis)
|
||||||
{
|
{
|
||||||
struct src *psrc = (struct src *)SRC_BASE_ADDR;
|
struct src *psrc = (struct src *)SRC_BASE_ADDR;
|
||||||
|
|
Loading…
Add table
Reference in a new issue