diff options
author | Stephen Warren <swarren@nvidia.com> | 2012-07-30 10:55:43 +0000 |
---|---|---|
committer | Andy Fleming <afleming@freescale.com> | 2012-09-05 17:32:41 -0500 |
commit | 8948ea830275afaa7c91fe7e13dd3c4b894a453f (patch) | |
tree | eacb0bff88c42d717293454fa064ec2e4f8d6d8f | |
parent | 122efd43899597e79bbe0a11298279f90ee55a17 (diff) | |
download | u-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>
-rw-r--r-- | drivers/mmc/mmc.c | 3 | ||||
-rw-r--r-- | include/mmc.h | 1 |
2 files changed, 3 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]; } diff --git a/include/mmc.h b/include/mmc.h index 7b094a4..a13e2bd 100644 --- a/include/mmc.h +++ b/include/mmc.h @@ -160,6 +160,7 @@ #define EXT_CSD_CARD_TYPE 196 /* RO */ #define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */ #define EXT_CSD_HC_ERASE_GRP_SIZE 224 /* RO */ +#define EXT_CSD_BOOT_MULT 226 /* RO */ /* * EXT_CSD field definitions |