[U-Boot] [PATCH v3] mmc-uclass: correct the device number

Simon Glass sjg at chromium.org
Fri Jul 22 05:21:40 CEST 2016


Hi Kever,

On 19 July 2016 at 07:28, Kever Yang <kever.yang at rock-chips.com> wrote:
> Not like the mmc-legacy which the devnum starts from 1, it starts from 0
> in mmc-uclass, so the device number should be (devnum + 1) in get_mmc_num().
>
> Signed-off-by: Kever Yang <kever.yang at rock-chips.com>
> ---
>
> Changes in v3:
> - apply comments from Jaehoon Chung
>
> Changes in v2:
> - add comment for get_mmc_num() in mmc.h
> - update mmc_get_next_devnum()
>
>  drivers/mmc/mmc-uclass.c | 4 ++--
>  include/mmc.h            | 6 ++++++
>  2 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mmc/mmc-uclass.c b/drivers/mmc/mmc-uclass.c
> index 38ced41..d0ca91b 100644
> --- a/drivers/mmc/mmc-uclass.c
> +++ b/drivers/mmc/mmc-uclass.c
> @@ -111,7 +111,7 @@ struct mmc *find_mmc_device(int dev_num)
>
>  int get_mmc_num(void)
>  {
> -       return max(blk_find_max_devnum(IF_TYPE_MMC), 0);
> +       return max((blk_find_max_devnum(IF_TYPE_MMC) + 1), 0);

Sorry to be pendantic, but the problem is that this
blk_find_max_devnum() can return -ENODEV. You change it to 0 in this
case, which is correct for get_mmc_num(), but not for
mmc_get_next_devnum(). I think you should adjust the latter to call
blk_find_max_devnum() directly, so it can return an error if there is
one.

I realise that this may not matter in practice, but it is really
confusing the way you have it.

>  }
>
>  int mmc_get_next_devnum(void)
> @@ -122,7 +122,7 @@ int mmc_get_next_devnum(void)
>         if (ret < 0)
>                 return ret;
>
> -       return ret + 1;
> +       return ret;
>  }
>
>  struct blk_desc *mmc_get_blk_desc(struct mmc *mmc)
> diff --git a/include/mmc.h b/include/mmc.h
> index 8f309f1..dd47f34 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -503,6 +503,12 @@ void mmc_set_clock(struct mmc *mmc, uint clock);
>  struct mmc *find_mmc_device(int dev_num);
>  int mmc_set_dev(int dev_num);
>  void print_mmc_devices(char separator);
> +
> +/**
> + * get_mmc_num() - get the total MMC device number
> + *
> + * @return 0 if there is no MMC device, else the number of devices
> + */
>  int get_mmc_num(void);
>  int mmc_hwpart_config(struct mmc *mmc, const struct mmc_hwpart_conf *conf,
>                       enum mmc_hwpart_conf_mode mode);
> --
> 1.9.1
>
>

Regards,
Simon


More information about the U-Boot mailing list