
Hi Stephen,
On May 7, 2014, at 9:19 PM, Stephen Warren wrote:
From: Stephen Warren swarren@nvidia.com
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.
Signed-off-by: Stephen Warren swarren@nvidia.com
disk/part.c | 6 +++++- drivers/mmc/mmc.c | 26 ++++++++++++++++++++++++++ include/part.h | 2 ++ 3 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/disk/part.c b/disk/part.c index 5e10cae015e5..2827089d8d5f 100644 --- a/disk/part.c +++ b/disk/part.c @@ -39,7 +39,11 @@ static const struct block_drvr block_drvr[] = { { .name = "usb", .get_dev = usb_stor_get_dev, }, #endif #if defined(CONFIG_MMC)
- { .name = "mmc", .get_dev = mmc_get_dev, },
- {
.name = "mmc",
.get_dev = mmc_get_dev,
.select_hwpart = mmc_select_hwpart,
- },
#endif #if defined(CONFIG_SYSTEMACE) { .name = "ace", .get_dev = systemace_get_dev, }, diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index 16051e52ff16..3089d8d807a8 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c @@ -550,6 +550,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); diff --git a/include/part.h b/include/part.h index 53532dcd6120..f2c8c641faa8 100644 --- a/include/part.h +++ b/include/part.h @@ -103,6 +103,7 @@ block_dev_desc_t* sata_get_dev(int dev); block_dev_desc_t* scsi_get_dev(int dev); block_dev_desc_t* usb_stor_get_dev(int dev); block_dev_desc_t* mmc_get_dev(int dev); +int mmc_select_hwpart(int dev_num, int hwpart); block_dev_desc_t* systemace_get_dev(int dev); block_dev_desc_t* mg_disk_get_dev(int dev); block_dev_desc_t *host_get_dev(int dev); @@ -126,6 +127,7 @@ static inline block_dev_desc_t* sata_get_dev(int dev) { return NULL; } static inline block_dev_desc_t* scsi_get_dev(int dev) { return NULL; } static inline block_dev_desc_t* usb_stor_get_dev(int dev) { return NULL; } static inline block_dev_desc_t* mmc_get_dev(int dev) { return NULL; } +static inline int mmc_select_hwpart(int dev_num, int hwpart) { return -1; } static inline block_dev_desc_t* systemace_get_dev(int dev) { return NULL; } static inline block_dev_desc_t* mg_disk_get_dev(int dev) { return NULL; } static inline block_dev_desc_t *host_get_dev(int dev) { return NULL; } -- 1.8.1.5
Applied, but expect a follow up patch for returning something else than -1.
Thanks
-- Pantelis
Acked-by: Pantelis Antoniou panto@antoniou-consulting.com