diff options
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 bb9014dc064..8b53ead98f8 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); | 
