|
|
|
@ -606,6 +606,27 @@ int mmc_switch_part(int dev_num, unsigned int part_num) |
|
|
|
|
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) |
|
|
|
|
{ |
|
|
|
|
struct mmc *mmc = find_mmc_device(dev_num); |
|
|
|
@ -1973,4 +1994,5 @@ U_BOOT_LEGACY_BLK(mmc) = { |
|
|
|
|
.if_type = IF_TYPE_MMC, |
|
|
|
|
.max_devs = -1, |
|
|
|
|
.get_dev = mmc_get_dev, |
|
|
|
|
.select_hwpart = mmc_select_hwpartp, |
|
|
|
|
}; |
|
|
|
|