[U-Boot] [PATCH 1/9] disk/part.c: Expose a list of available block drivers

Simon Glass sjg at chromium.org
Fri Jan 15 00:11:44 CET 2016


Hi Alexander,

On 22 December 2015 at 06:57, Alexander Graf <agraf at suse.de> wrote:
> We have a pretty nice and generic interface to ask for a specific block
> device. However, that one is still based around the magic notion that
> we know the driver name.
>
> In order to be able to write fully generic disk access code, expose a list
> of all available block drivers.
>
> Signed-off-by: Alexander Graf <agraf at suse.de>
> ---
>  disk/part.c    | 25 +++++++++++++++++++++++++
>  include/part.h |  2 ++
>  2 files changed, 27 insertions(+)
>
> diff --git a/disk/part.c b/disk/part.c
> index 909712e..5bc64c7 100644
> --- a/disk/part.c
> +++ b/disk/part.c
> @@ -26,6 +26,31 @@ struct block_drvr {
>         int (*select_hwpart)(int dev_num, int hwpart);
>  };
>
> +const char *available_block_drvrs[] = {
> +#if defined(CONFIG_CMD_IDE)
> +       "ide",
> +#endif
> +#if defined(CONFIG_CMD_SATA)
> +       "sata",
> +#endif
> +#if defined(CONFIG_CMD_SCSI)
> +       "scsi",
> +#endif
> +#if defined(CONFIG_CMD_USB) && defined(CONFIG_USB_STORAGE)
> +       "usb",
> +#endif
> +#if defined(CONFIG_MMC)
> +       "mmc",
> +#endif
> +#if defined(CONFIG_SYSTEMACE)
> +       "ace",
> +#endif
> +#if defined(CONFIG_SANDBOX)
> +       "host",
> +#endif
> +       NULL,
> +};

You seem to be duplicating block_drvr[]. Can we not just use that?

> +
>  static const struct block_drvr block_drvr[] = {
>  #if defined(CONFIG_CMD_IDE)
>         { .name = "ide", .get_dev = ide_get_dev, },
> diff --git a/include/part.h b/include/part.h
> index 720a867..dc2a78b 100644
> --- a/include/part.h
> +++ b/include/part.h
> @@ -122,6 +122,8 @@ int get_device(const char *ifname, const char *dev_str,
>  int get_device_and_partition(const char *ifname, const char *dev_part_str,
>                              block_dev_desc_t **dev_desc,
>                              disk_partition_t *info, int allow_whole_dev);
> +
> +extern const char *available_block_drvrs[];
>  #else
>  static inline block_dev_desc_t *get_dev(const char *ifname, int dev)
>  { return NULL; }
> --
> 2.1.4
Regards,
Simon


More information about the U-Boot mailing list