summaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2014-05-07 12:19:02 -0600
committerPantelis Antoniou <panto@antoniou-consulting.com>2014-05-23 12:11:44 +0300
commitd235628434657cf1eba58821445cb5ad88e10763 (patch)
tree19c19b00b626b01e7aa59177fd3668e08c3b5eca /drivers/mmc
parent336b6f90482f23b149323b698c05c2713fe55701 (diff)
downloadu-boot-imx-d235628434657cf1eba58821445cb5ad88e10763.zip
u-boot-imx-d235628434657cf1eba58821445cb5ad88e10763.tar.gz
u-boot-imx-d235628434657cf1eba58821445cb5ad88e10763.tar.bz2
mmc: provide a select_hwpart implementation for get_device()
This enables specifying which eMMC HW partition to target for any U-Boot command that uses the generic get_partition() function to parse its command-line arguments. Acked-by: Pantelis Antoniou <panto@antoniou-consulting.com> Signed-off-by: Stephen Warren <swarren@nvidia.com>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/mmc.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index bb9014d..8b53ead 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -552,6 +552,32 @@ static int mmc_set_capacity(struct mmc *mmc, int part_num)
return 0;
}
+int mmc_select_hwpart(int dev_num, int hwpart)
+{
+ struct mmc *mmc = find_mmc_device(dev_num);
+ int ret;
+
+ if (!mmc)
+ return -1;
+
+ if (mmc->part_num == hwpart)
+ return 0;
+
+ if (mmc->part_config == MMCPART_NOAVAILABLE) {
+ printf("Card doesn't support part_switch\n");
+ return -1;
+ }
+
+ ret = mmc_switch_part(dev_num, hwpart);
+ if (ret)
+ return -1;
+
+ mmc->part_num = hwpart;
+
+ return 0;
+}
+
+
int mmc_switch_part(int dev_num, unsigned int part_num)
{
struct mmc *mmc = find_mmc_device(dev_num);