dm: mmc: Implement the select_hwpart() method

Implement this method so that hardware partitions will work correctly with
MMC.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2016-05-01 13:52:26 -06:00
parent ff3882ac23
commit e17d1143c1

View File

@ -606,6 +606,27 @@ int mmc_switch_part(int dev_num, unsigned int part_num)
return ret; return ret;
} }
static int mmc_select_hwpartp(struct blk_desc *desc, int hwpart)
{
struct mmc *mmc = find_mmc_device(desc->devnum);
int ret;
if (!mmc)
return -ENODEV;
if (mmc->block_dev.hwpart == hwpart)
return 0;
if (mmc->part_config == MMCPART_NOAVAILABLE)
return -EMEDIUMTYPE;
ret = mmc_switch_part(desc->devnum, hwpart);
if (ret)
return ret;
return 0;
}
int mmc_select_hwpart(int dev_num, int hwpart) int mmc_select_hwpart(int dev_num, int hwpart)
{ {
struct mmc *mmc = find_mmc_device(dev_num); struct mmc *mmc = find_mmc_device(dev_num);
@ -1973,4 +1994,5 @@ U_BOOT_LEGACY_BLK(mmc) = {
.if_type = IF_TYPE_MMC, .if_type = IF_TYPE_MMC,
.max_devs = -1, .max_devs = -1,
.get_dev = mmc_get_dev, .get_dev = mmc_get_dev,
.select_hwpart = mmc_select_hwpartp,
}; };