summaryrefslogtreecommitdiff
path: root/drivers/mmc/mmc.c
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2012-07-30 10:55:43 +0000
committerAndy Fleming <afleming@freescale.com>2012-09-05 17:32:41 -0500
commit8948ea830275afaa7c91fe7e13dd3c4b894a453f (patch)
treeeacb0bff88c42d717293454fa064ec2e4f8d6d8f /drivers/mmc/mmc.c
parent122efd43899597e79bbe0a11298279f90ee55a17 (diff)
downloadu-boot-imx-8948ea830275afaa7c91fe7e13dd3c4b894a453f.zip
u-boot-imx-8948ea830275afaa7c91fe7e13dd3c4b894a453f.tar.gz
u-boot-imx-8948ea830275afaa7c91fe7e13dd3c4b894a453f.tar.bz2
mmc: detect boot sectors using EXT_CSD_BOOT_MULT too
Some eMMC devices contain boot partitions, but do not set the PART_SUPPORT bit in EXT_CSD_PARTITIONING_SUPPORT. Allow partition selection on such devices, by enabling partition switching when EXT_CSD_BOOT_MULT is set. Note that the Linux kernel enables access to boot partitions solely based on the value of EXT_CSD_BOOT_MULT; EXT_CSD_PARTITIONING_SUPPORT only influences access to "general" partitions. eMMC devices affected by this issue exist on various NVIDIA Tegra platforms (and presumably many others too), such as Harmony (plug-in eMMC), Seaboard, Springbank, and Whistler (plug-in eMMC). Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Andy Fleming <afleming@freescale.com>
Diffstat (limited to 'drivers/mmc/mmc.c')
-rw-r--r--drivers/mmc/mmc.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 1f666c2..64abe5b 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -1137,7 +1137,8 @@ int mmc_startup(struct mmc *mmc)
}
/* store the partition info of emmc */
- if (ext_csd[EXT_CSD_PARTITIONING_SUPPORT] & PART_SUPPORT)
+ if ((ext_csd[EXT_CSD_PARTITIONING_SUPPORT] & PART_SUPPORT) ||
+ ext_csd[EXT_CSD_BOOT_MULT])
mmc->part_config = ext_csd[EXT_CSD_PART_CONF];
}