diff options
author | Stephen Warren <swarren@nvidia.com> | 2014-05-07 12:19:02 -0600 |
---|---|---|
committer | Pantelis Antoniou <panto@antoniou-consulting.com> | 2014-05-23 12:11:44 +0300 |
commit | d235628434657cf1eba58821445cb5ad88e10763 (patch) | |
tree | 19c19b00b626b01e7aa59177fd3668e08c3b5eca /drivers/mmc/mmc.c | |
parent | 336b6f90482f23b149323b698c05c2713fe55701 (diff) | |
download | u-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/mmc.c')
-rw-r--r-- | drivers/mmc/mmc.c | 26 |
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); |