mmc: Ensure linux starts in eMMC user partition

uBoot sometimes leaves eMMC pointing to the private boot partition.
Ensure we always start looking at the user partition.

Signed-off-by: Philip Rakity <prakity@marvell.com>
Signed-off-by: Bruce Clemens <bpclemens@marvell.com>
Signed-off-by: Mark F. Brown <markb@marvell.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
This commit is contained in:
Philip Rakity
2011-03-19 14:10:33 -04:00
committed by Chris Ball
parent 7c21738efd
commit 41e2a48935
3 changed files with 12 additions and 0 deletions

View File

@@ -288,6 +288,7 @@ static int mmc_read_ext_csd(struct mmc_card *card)
if (card->ext_csd.rev >= 3) {
u8 sa_shift = ext_csd[EXT_CSD_S_A_TIMEOUT];
card->ext_csd.bootconfig = ext_csd[EXT_CSD_BOOT_CONFIG];
/* Sleep / awake timeout in 100ns units */
if (sa_shift > 0 && sa_shift <= 0x17)
@@ -567,6 +568,15 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
}
}
/*
* Ensure eMMC user default partition is enabled
*/
if (card->ext_csd.bootconfig & 0x7) {
card->ext_csd.bootconfig &= ~0x7;
mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BOOT_CONFIG,
card->ext_csd.bootconfig);
}
/*
* Activate high speed (if supported)
*/