[U-Boot] [PATCH 3/4] mmc: provide a select_hwpart implementation for get_device()

Pantelis Antoniou panto at antoniou-consulting.com
Fri May 23 11:21:44 CEST 2014


Hi Stephen,

On May 7, 2014, at 9:19 PM, Stephen Warren wrote:

> From: Stephen Warren <swarren at 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 at 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 at antoniou-consulting.com>



More information about the U-Boot mailing list