public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: AKASHI Takahiro <takahiro.akashi@linaro.org>
To: Heinrich Schuchardt <xypron.glpk@gmx.de>
Cc: Simon Glass <sjg@chromium.org>, Tom Rini <trini@konsulko.com>,
	Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	Masahisa Kojima <masahisa.kojima@linaro.org>,
	U-Boot Mailing List <u-boot@lists.denx.de>
Subject: Re: [PATCH v2 22/24] blk: Drop if_type
Date: Wed, 14 Sep 2022 17:20:03 +0900	[thread overview]
Message-ID: <20220914082003.GA52407@laputa> (raw)
In-Reply-To: <970c0bcb-4ce4-b339-5367-26742c88e65c@gmx.de>

On Wed, Sep 14, 2022 at 09:45:47AM +0200, Heinrich Schuchardt wrote:
> On 9/14/22 04:08, AKASHI Takahiro wrote:
> > On Tue, Sep 13, 2022 at 06:27:37PM +0200, Heinrich Schuchardt wrote:
> > > On 8/12/22 03:35, Simon Glass wrote:
> > > > Use the uclass ID instead.
> > > > 
> > > > Signed-off-by: Simon Glass <sjg@chromium.org>
> > > > ---
> > > > 
> > > > (no changes since v1)
> > > > 
> > > >    cmd/blk_common.c           |  2 +-
> > > >    drivers/block/blk-uclass.c | 34 +++++++++++++++----------------
> > > >    drivers/block/blk_legacy.c | 20 +++++++++----------
> > > >    include/blk.h              | 41 ++++++++++++++++++--------------------
> > > >    include/efi_loader.h       |  2 +-
> > > >    5 files changed, 48 insertions(+), 51 deletions(-)
> > > > 
> > > > diff --git a/cmd/blk_common.c b/cmd/blk_common.c
> > > > index 4e442f2918b..369c5ae4bbe 100644
> > > > --- a/cmd/blk_common.c
> > > > +++ b/cmd/blk_common.c
> > > > @@ -12,7 +12,7 @@
> > > >    #include <blk.h>
> > > >    #include <command.h>
> > > > 
> > > > -int blk_common_cmd(int argc, char *const argv[], enum if_type if_type,
> > > > +int blk_common_cmd(int argc, char *const argv[], enum uclass_id if_type,
> > > >    		   int *cur_devnump)
> > > >    {
> > > >    	const char *if_name = blk_get_if_type_name(if_type);
> > > > diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c
> > > > index 436af764f91..a9a85aa37f3 100644
> > > > --- a/drivers/block/blk-uclass.c
> > > > +++ b/drivers/block/blk-uclass.c
> > > > @@ -34,7 +34,7 @@ static struct {
> > > >    	{ UCLASS_PVBLOCK, "pvblock" },
> > > >    };
> > > > 
> > > > -static enum if_type if_typename_to_iftype(const char *if_typename)
> > > > +static enum uclass_id if_typename_to_iftype(const char *if_typename)
> > > >    {
> > > >    	int i;
> > > > 
> > > > @@ -46,7 +46,7 @@ static enum if_type if_typename_to_iftype(const char *if_typename)
> > > >    	return UCLASS_INVALID;
> > > >    }
> > > > 
> > > > -static enum uclass_id if_type_to_uclass_id(enum if_type if_type)
> > > > +static enum uclass_id if_type_to_uclass_id(enum uclass_id if_type)
> > > >    {
> > > >    	/*
> > > >    	 * This strange adjustment is used because we use UCLASS_MASS_STORAGE
> > > > @@ -71,7 +71,7 @@ static enum uclass_id if_type_to_uclass_id(enum if_type if_type)
> > > >    	return if_type;
> > > >    }
> > > > 
> > > > -const char *blk_get_if_type_name(enum if_type if_type)
> > > > +const char *blk_get_if_type_name(enum uclass_id if_type)
> > > >    {
> > > >    	int i;
> > > > 
> > > > @@ -83,7 +83,7 @@ const char *blk_get_if_type_name(enum if_type if_type)
> > > >    	return "(none)";
> > > >    }
> > > > 
> > > > -struct blk_desc *blk_get_devnum_by_type(enum if_type if_type, int devnum)
> > > > +struct blk_desc *blk_get_devnum_by_type(enum uclass_id if_type, int devnum)
> > > >    {
> > > >    	struct blk_desc *desc;
> > > >    	struct udevice *dev;
> > > > @@ -105,7 +105,7 @@ struct blk_desc *blk_get_devnum_by_type(enum if_type if_type, int devnum)
> > > >    struct blk_desc *blk_get_devnum_by_typename(const char *if_typename, int devnum)
> > > >    {
> > > >    	enum uclass_id uclass_id;
> > > > -	enum if_type type;
> > > > +	enum uclass_id type;
> > > >    	struct udevice *dev;
> > > >    	struct uclass *uc;
> > > >    	int ret;
> > > > @@ -185,7 +185,7 @@ struct blk_desc *blk_get_by_device(struct udevice *dev)
> > > >     * with a higher device number, -ENOENT if there is no such device but there
> > > >     * is one with a higher number, or other -ve on other error.
> > > >     */
> > > > -static int get_desc(enum if_type if_type, int devnum, struct blk_desc **descp)
> > > > +static int get_desc(enum uclass_id if_type, int devnum, struct blk_desc **descp)
> > > >    {
> > > >    	bool found_more = false;
> > > >    	struct udevice *dev;
> > > > @@ -218,7 +218,7 @@ static int get_desc(enum if_type if_type, int devnum, struct blk_desc **descp)
> > > >    	return found_more ? -ENOENT : -ENODEV;
> > > >    }
> > > > 
> > > > -int blk_select_hwpart_devnum(enum if_type if_type, int devnum, int hwpart)
> > > > +int blk_select_hwpart_devnum(enum uclass_id if_type, int devnum, int hwpart)
> > > >    {
> > > >    	struct udevice *dev;
> > > >    	int ret;
> > > > @@ -230,7 +230,7 @@ int blk_select_hwpart_devnum(enum if_type if_type, int devnum, int hwpart)
> > > >    	return blk_select_hwpart(dev, hwpart);
> > > >    }
> > > > 
> > > > -int blk_list_part(enum if_type if_type)
> > > > +int blk_list_part(enum uclass_id if_type)
> > > >    {
> > > >    	struct blk_desc *desc;
> > > >    	int devnum, ok;
> > > > @@ -255,7 +255,7 @@ int blk_list_part(enum if_type if_type)
> > > >    	return 0;
> > > >    }
> > > > 
> > > > -int blk_print_part_devnum(enum if_type if_type, int devnum)
> > > > +int blk_print_part_devnum(enum uclass_id if_type, int devnum)
> > > >    {
> > > >    	struct blk_desc *desc;
> > > >    	int ret;
> > > > @@ -270,7 +270,7 @@ int blk_print_part_devnum(enum if_type if_type, int devnum)
> > > >    	return 0;
> > > >    }
> > > > 
> > > > -void blk_list_devices(enum if_type if_type)
> > > > +void blk_list_devices(enum uclass_id if_type)
> > > >    {
> > > >    	struct blk_desc *desc;
> > > >    	int ret;
> > > > @@ -289,7 +289,7 @@ void blk_list_devices(enum if_type if_type)
> > > >    	}
> > > >    }
> > > > 
> > > > -int blk_print_device_num(enum if_type if_type, int devnum)
> > > > +int blk_print_device_num(enum uclass_id if_type, int devnum)
> > > >    {
> > > >    	struct blk_desc *desc;
> > > >    	int ret;
> > > > @@ -303,7 +303,7 @@ int blk_print_device_num(enum if_type if_type, int devnum)
> > > >    	return 0;
> > > >    }
> > > > 
> > > > -int blk_show_device(enum if_type if_type, int devnum)
> > > > +int blk_show_device(enum uclass_id if_type, int devnum)
> > > >    {
> > > >    	struct blk_desc *desc;
> > > >    	int ret;
> > > > @@ -324,7 +324,7 @@ int blk_show_device(enum if_type if_type, int devnum)
> > > >    	return 0;
> > > >    }
> > > > 
> > > > -ulong blk_read_devnum(enum if_type if_type, int devnum, lbaint_t start,
> > > > +ulong blk_read_devnum(enum uclass_id if_type, int devnum, lbaint_t start,
> > > >    		      lbaint_t blkcnt, void *buffer)
> > > >    {
> > > >    	struct blk_desc *desc;
> > > > @@ -341,7 +341,7 @@ ulong blk_read_devnum(enum if_type if_type, int devnum, lbaint_t start,
> > > >    	return n;
> > > >    }
> > > > 
> > > > -ulong blk_write_devnum(enum if_type if_type, int devnum, lbaint_t start,
> > > > +ulong blk_write_devnum(enum uclass_id if_type, int devnum, lbaint_t start,
> > > >    		       lbaint_t blkcnt, const void *buffer)
> > > >    {
> > > >    	struct blk_desc *desc;
> > > > @@ -525,7 +525,7 @@ const char *blk_get_devtype(struct udevice *dev)
> > > >    	return uclass_get_name(device_get_uclass_id(parent));
> > > >    };
> > > > 
> > > > -int blk_find_max_devnum(enum if_type if_type)
> > > > +int blk_find_max_devnum(enum uclass_id if_type)
> > > >    {
> > > >    	struct udevice *dev;
> > > >    	int max_devnum = -ENODEV;
> > > > @@ -545,7 +545,7 @@ int blk_find_max_devnum(enum if_type if_type)
> > > >    	return max_devnum;
> > > >    }
> > > > 
> > > > -int blk_next_free_devnum(enum if_type if_type)
> > > > +int blk_next_free_devnum(enum uclass_id if_type)
> > > >    {
> > > >    	int ret;
> > > > 
> > > > @@ -631,7 +631,7 @@ int blk_count_devices(enum blk_flag_t flag)
> > > >    	return count;
> > > >    }
> > > > 
> > > > -static int blk_claim_devnum(enum if_type if_type, int devnum)
> > > > +static int blk_claim_devnum(enum uclass_id if_type, int devnum)
> > > >    {
> > > >    	struct udevice *dev;
> > > >    	struct uclass *uc;
> > > > diff --git a/drivers/block/blk_legacy.c b/drivers/block/blk_legacy.c
> > > > index bd8a17df6a9..8c6f9cb208e 100644
> > > > --- a/drivers/block/blk_legacy.c
> > > > +++ b/drivers/block/blk_legacy.c
> > > > @@ -39,7 +39,7 @@ static struct blk_driver *blk_driver_lookup_typename(const char *if_typename)
> > > >    	return NULL;
> > > >    }
> > > > 
> > > > -const char *blk_get_if_type_name(enum if_type if_type)
> > > > +const char *blk_get_if_type_name(enum uclass_id if_type)
> > > >    {
> > > >    	struct blk_driver *drv = blk_driver_lookup_type(if_type);
> > > > 
> > > > @@ -70,7 +70,7 @@ static int get_desc(struct blk_driver *drv, int devnum, struct blk_desc **descp)
> > > >    	return drv->get_dev(devnum, descp);
> > > >    }
> > > > 
> > > > -int blk_list_part(enum if_type if_type)
> > > > +int blk_list_part(enum uclass_id if_type)
> > > >    {
> > > >    	struct blk_driver *drv;
> > > >    	struct blk_desc *desc;
> > > > @@ -97,7 +97,7 @@ int blk_list_part(enum if_type if_type)
> > > >    	return 0;
> > > >    }
> > > > 
> > > > -int blk_print_part_devnum(enum if_type if_type, int devnum)
> > > > +int blk_print_part_devnum(enum uclass_id if_type, int devnum)
> > > >    {
> > > >    	struct blk_driver *drv = blk_driver_lookup_type(if_type);
> > > >    	struct blk_desc *desc;
> > > > @@ -115,7 +115,7 @@ int blk_print_part_devnum(enum if_type if_type, int devnum)
> > > >    	return 0;
> > > >    }
> > > > 
> > > > -void blk_list_devices(enum if_type if_type)
> > > > +void blk_list_devices(enum uclass_id if_type)
> > > >    {
> > > >    	struct blk_driver *drv = blk_driver_lookup_type(if_type);
> > > >    	struct blk_desc *desc;
> > > > @@ -133,7 +133,7 @@ void blk_list_devices(enum if_type if_type)
> > > >    	}
> > > >    }
> > > > 
> > > > -int blk_print_device_num(enum if_type if_type, int devnum)
> > > > +int blk_print_device_num(enum uclass_id if_type, int devnum)
> > > >    {
> > > >    	struct blk_driver *drv = blk_driver_lookup_type(if_type);
> > > >    	struct blk_desc *desc;
> > > > @@ -150,7 +150,7 @@ int blk_print_device_num(enum if_type if_type, int devnum)
> > > >    	return 0;
> > > >    }
> > > > 
> > > > -int blk_show_device(enum if_type if_type, int devnum)
> > > > +int blk_show_device(enum uclass_id if_type, int devnum)
> > > >    {
> > > >    	struct blk_driver *drv = blk_driver_lookup_type(if_type);
> > > >    	struct blk_desc *desc;
> > > > @@ -174,7 +174,7 @@ int blk_show_device(enum if_type if_type, int devnum)
> > > >    	return 0;
> > > >    }
> > > > 
> > > > -struct blk_desc *blk_get_devnum_by_type(enum if_type if_type, int devnum)
> > > > +struct blk_desc *blk_get_devnum_by_type(enum uclass_id if_type, int devnum)
> > > >    {
> > > >    	struct blk_driver *drv = blk_driver_lookup_type(if_type);
> > > >    	struct blk_desc *desc;
> > > > @@ -214,7 +214,7 @@ struct blk_desc *blk_get_devnum_by_typename(const char *if_typename, int devnum)
> > > >    	return desc;
> > > >    }
> > > > 
> > > > -ulong blk_read_devnum(enum if_type if_type, int devnum, lbaint_t start,
> > > > +ulong blk_read_devnum(enum uclass_id if_type, int devnum, lbaint_t start,
> > > >    		      lbaint_t blkcnt, void *buffer)
> > > >    {
> > > >    	struct blk_driver *drv = blk_driver_lookup_type(if_type);
> > > > @@ -234,7 +234,7 @@ ulong blk_read_devnum(enum if_type if_type, int devnum, lbaint_t start,
> > > >    	return n;
> > > >    }
> > > > 
> > > > -ulong blk_write_devnum(enum if_type if_type, int devnum, lbaint_t start,
> > > > +ulong blk_write_devnum(enum uclass_id if_type, int devnum, lbaint_t start,
> > > >    		       lbaint_t blkcnt, const void *buffer)
> > > >    {
> > > >    	struct blk_driver *drv = blk_driver_lookup_type(if_type);
> > > > @@ -249,7 +249,7 @@ ulong blk_write_devnum(enum if_type if_type, int devnum, lbaint_t start,
> > > >    	return desc->block_write(desc, start, blkcnt, buffer);
> > > >    }
> > > > 
> > > > -int blk_select_hwpart_devnum(enum if_type if_type, int devnum, int hwpart)
> > > > +int blk_select_hwpart_devnum(enum uclass_id if_type, int devnum, int hwpart)
> > > >    {
> > > >    	struct blk_driver *drv = blk_driver_lookup_type(if_type);
> > > >    	struct blk_desc *desc;
> > > > diff --git a/include/blk.h b/include/blk.h
> > > > index 548cd09d6bb..279f9ea4a9d 100644
> > > > --- a/include/blk.h
> > > > +++ b/include/blk.h
> > > > @@ -27,9 +27,6 @@ static inline bool blk_enabled(void)
> > > >    	return CONFIG_IS_ENABLED(BLK) || IS_ENABLED(CONFIG_SPL_LEGACY_BLOCK);
> > > >    }
> > > > 
> > > > -/* Interface types: */
> > > > -#define if_type uclass_id
> > > > -
> > > >    #define BLK_VEN_SIZE		40
> > > >    #define BLK_PRD_SIZE		20
> > > >    #define BLK_REV_SIZE		8
> > > > @@ -57,7 +54,7 @@ struct blk_desc {
> > > >    	 * TODO: With driver model we should be able to use the parent
> > > >    	 * device's uclass instead.
> > > >    	 */
> > > > -	enum if_type	if_type;	/* type of the interface */
> > > > +	enum uclass_id	if_type;	/* type of the interface */
> > > >    	int		devnum;		/* device number */
> > > >    	unsigned char	part_type;	/* partition type */
> > > >    	unsigned char	target;		/* target SCSI ID */
> > > > @@ -282,7 +279,7 @@ unsigned long blk_derase(struct blk_desc *block_dev, lbaint_t start,
> > > >     * This function does not activate the device. The device will be returned
> > > >     * whether or not it is activated.
> > > >     *
> > > > - * @if_type:	Interface type (enum if_type_t)
> > > > + * @if_type:	Interface type (enum uclass_id_t)
> > > >     * @devnum:	Device number (specific to each interface type)
> > > >     * @devp:	the device, if found
> > > >     * Return: 0 if found, -ENODEV if no device found, or other -ve error value
> > > > @@ -292,7 +289,7 @@ int blk_find_device(int if_type, int devnum, struct udevice **devp);
> > > >    /**
> > > >     * blk_get_device() - Find and probe a block device ready for use
> > > >     *
> > > > - * @if_type:	Interface type (enum if_type_t)
> > > > + * @if_type:	Interface type (enum uclass_id_t)
> > > >     * @devnum:	Device number (specific to each interface type)
> > > >     * @devp:	the device, if found
> > > >     * Return: 0 if found, -ENODEV if no device found, or other -ve error value
> > > > @@ -330,7 +327,7 @@ int blk_next_device(struct udevice **devp);
> > > >     * @parent:	Parent of the new device
> > > >     * @drv_name:	Driver name to use for the block device
> > > >     * @name:	Name for the device
> > > > - * @if_type:	Interface type (enum if_type_t)
> > > > + * @if_type:	Interface type (enum uclass_id_t)
> > > >     * @devnum:	Device number, specific to the interface type, or -1 to
> > > >     *		allocate the next available number
> > > >     * @blksz:	Block size of the device in bytes (typically 512)
> > > > @@ -347,7 +344,7 @@ int blk_create_device(struct udevice *parent, const char *drv_name,
> > > >     * @parent:	Parent of the new device
> > > >     * @drv_name:	Driver name to use for the block device
> > > >     * @name:	Name for the device (parent name is prepended)
> > > > - * @if_type:	Interface type (enum if_type_t)
> > > > + * @if_type:	Interface type (enum uclass_id_t)
> > > >     * @devnum:	Device number, specific to the interface type, or -1 to
> > > >     *		allocate the next available number
> > > >     * @blksz:	Block size of the device in bytes (typically 512)
> > > > @@ -390,7 +387,7 @@ int blk_unbind_all(int if_type);
> > > >     * Return: maximum device number found, or -ENODEV if none, or other -ve on
> > > >     * error
> > > >     */
> > > > -int blk_find_max_devnum(enum if_type if_type);
> > > > +int blk_find_max_devnum(enum uclass_id if_type);
> > > > 
> > > >    /**
> > > >     * blk_next_free_devnum() - get the next device number for an interface type
> > > > @@ -401,7 +398,7 @@ int blk_find_max_devnum(enum if_type if_type);
> > > >     * @if_type:	Interface type to scan
> > > >     * Return: next device number safe to use, or -ve on error
> > > >     */
> > > > -int blk_next_free_devnum(enum if_type if_type);
> > > > +int blk_next_free_devnum(enum uclass_id if_type);
> > > > 
> > > >    /**
> > > >     * blk_select_hwpart() - select a hardware partition
> > > > @@ -496,7 +493,7 @@ static inline ulong blk_derase(struct blk_desc *block_dev, lbaint_t start,
> > > >     */
> > > >    struct blk_driver {
> > > >    	const char *if_typename;
> > > > -	enum if_type if_type;
> > > > +	enum uclass_id if_type;
> > > >    	int max_devs;
> > > >    	struct blk_desc *desc;
> > > >    	/**
> > > > @@ -557,7 +554,7 @@ struct blk_driver *blk_driver_lookup_type(int if_type);
> > > >     * @devnum:	Device number
> > > >     * Return: point to block device descriptor, or NULL if not found
> > > >     */
> > > > -struct blk_desc *blk_get_devnum_by_type(enum if_type if_type, int devnum);
> > > > +struct blk_desc *blk_get_devnum_by_type(enum uclass_id if_type, int devnum);
> > > > 
> > > >    /**
> > > >     * blk_get_devnum_by_type() - Get a block device by type name, and number
> > > > @@ -594,7 +591,7 @@ int blk_dselect_hwpart(struct blk_desc *desc, int hwpart);
> > > >     * @if_type:	Block device type
> > > >     * Return: 0 if OK, -ENODEV if there is none of that type
> > > >     */
> > > > -int blk_list_part(enum if_type if_type);
> > > > +int blk_list_part(enum uclass_id if_type);
> > > > 
> > > >    /**
> > > >     * blk_list_devices() - list the block devices of a given type
> > > > @@ -604,7 +601,7 @@ int blk_list_part(enum if_type if_type);
> > > >     *
> > > >     * @if_type:	Block device type
> > > >     */
> > > > -void blk_list_devices(enum if_type if_type);
> > > > +void blk_list_devices(enum uclass_id if_type);
> > > > 
> > > >    /**
> > > >     * blk_show_device() - show information about a given block device
> > > > @@ -615,7 +612,7 @@ void blk_list_devices(enum if_type if_type);
> > > >     * @devnum:	Device number
> > > >     * Return: 0 if OK, -ENODEV for invalid device number
> > > >     */
> > > > -int blk_show_device(enum if_type if_type, int devnum);
> > > > +int blk_show_device(enum uclass_id if_type, int devnum);
> > > > 
> > > >    /**
> > > >     * blk_print_device_num() - show information about a given block device
> > > > @@ -628,7 +625,7 @@ int blk_show_device(enum if_type if_type, int devnum);
> > > >     * Return: 0 if OK, -ENODEV for invalid device number, -ENOENT if the block
> > > >     * device is not connected
> > > >     */
> > > > -int blk_print_device_num(enum if_type if_type, int devnum);
> > > > +int blk_print_device_num(enum uclass_id if_type, int devnum);
> > > > 
> > > >    /**
> > > >     * blk_print_part_devnum() - print the partition information for a device
> > > > @@ -638,7 +635,7 @@ int blk_print_device_num(enum if_type if_type, int devnum);
> > > >     * Return: 0 if OK, -ENOENT if the block device is not connected, -ENOSYS if
> > > >     * the interface type is not supported, other -ve on other error
> > > >     */
> > > > -int blk_print_part_devnum(enum if_type if_type, int devnum);
> > > > +int blk_print_part_devnum(enum uclass_id if_type, int devnum);
> > > > 
> > > >    /**
> > > >     * blk_read_devnum() - read blocks from a device
> > > > @@ -649,7 +646,7 @@ int blk_print_part_devnum(enum if_type if_type, int devnum);
> > > >     * @buffer:	Address to write data to
> > > >     * Return: number of blocks read, or -ve error number on error
> > > >     */
> > > > -ulong blk_read_devnum(enum if_type if_type, int devnum, lbaint_t start,
> > > > +ulong blk_read_devnum(enum uclass_id if_type, int devnum, lbaint_t start,
> > > >    		      lbaint_t blkcnt, void *buffer);
> > > > 
> > > >    /**
> > > > @@ -661,7 +658,7 @@ ulong blk_read_devnum(enum if_type if_type, int devnum, lbaint_t start,
> > > >     * @buffer:	Address to read data from
> > > >     * Return: number of blocks written, or -ve error number on error
> > > >     */
> > > > -ulong blk_write_devnum(enum if_type if_type, int devnum, lbaint_t start,
> > > > +ulong blk_write_devnum(enum uclass_id if_type, int devnum, lbaint_t start,
> > > >    		       lbaint_t blkcnt, const void *buffer);
> > > > 
> > > >    /**
> > > > @@ -675,7 +672,7 @@ ulong blk_write_devnum(enum if_type if_type, int devnum, lbaint_t start,
> > > >     * @hwpart:	Partition number to select
> > > >     * Return: 0 if OK, -ve on error
> > > >     */
> > > > -int blk_select_hwpart_devnum(enum if_type if_type, int devnum, int hwpart);
> > > > +int blk_select_hwpart_devnum(enum uclass_id if_type, int devnum, int hwpart);
> > > > 
> > > >    /**
> > > >     * blk_get_if_type_name() - Get the name of an interface type
> > > > @@ -683,7 +680,7 @@ int blk_select_hwpart_devnum(enum if_type if_type, int devnum, int hwpart);
> > > >     * @if_type: Interface type to check
> > > >     * Return: name of interface, or NULL if none
> > > >     */
> > > > -const char *blk_get_if_type_name(enum if_type if_type);
> > > > +const char *blk_get_if_type_name(enum uclass_id if_type);
> > > > 
> > > >    /**
> > > >     * blk_common_cmd() - handle common commands with block devices
> > > > @@ -694,7 +691,7 @@ const char *blk_get_if_type_name(enum if_type if_type);
> > > >     * @cur_devnump: Current device number for this interface type
> > > >     * Return: 0 if OK, CMD_RET_ERROR on error
> > > >     */
> > > > -int blk_common_cmd(int argc, char *const argv[], enum if_type if_type,
> > > > +int blk_common_cmd(int argc, char *const argv[], enum uclass_id if_type,
> > > >    		   int *cur_devnump);
> > > > 
> > > >    enum blk_flag_t {
> > > > diff --git a/include/efi_loader.h b/include/efi_loader.h
> > > > index 3a63a1f75fd..ae58efb0036 100644
> > > > --- a/include/efi_loader.h
> > > > +++ b/include/efi_loader.h
> > > > @@ -156,7 +156,7 @@ extern bool efi_st_keep_devices;
> > > > 
> > > >    /* EFI system partition */
> > > >    extern struct efi_system_partition {
> > > > -	enum if_type if_type;
> > > > +	enum uclass_id if_type;
> > > >    	int devnum;
> > > 
> > > Please, rename the field if_type to class_id in a later patch.
> > > 
> > > Uclass ID and device number may refer to a different device after
> > > commands like usb init. It would be better if we could use the partition
> > > GUID to identify a partition in the long term. But that is beyond the
> > > scope of this series.
> > 
> > Well, as far as UEFI is concerned, we should use a device path
> > (and/or a handle to it) to uniquely identify a given device.
> 
> The address pointed to by a handle or struct udevice * maybe reused
> after deleting the handle or device. This is why I mentioned the
> partition GUID.

1) With a device path, you can find a corresponding handle dynamically
   by using efi_dp_find_obj().

2) With a handle, you can maintain (update) it by using
   EVT_DM_POST_PROBE/REMOVE hooks as "efi_system_partition" variable
   is in efi_disk_add_dev().

So both approaches are very much feasible, not depending directly
on the underlying U-Boot representation.

-Takahiro Akashi


> A device path for a partition contains the partition GUID, see UEFI spec
> 2.10, 10.3.5.1 Hard Drive.
> 
> Regards
> 
> Heinrich
> 
> > 
> > Then the whole code in efi_var_file.c can be rewritten
> > by using SIMPLE_FILE_SYSTEM_PROTOCOL attached to it.
> > 
> > -Takahiro Akashi
> > 
> > > Acked-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> > > 
> > > 
> > > >    	u8 part;
> > > 
> > > 
> > > 
> > > >    } efi_system_partition;
> > > 
> 

  reply	other threads:[~2022-09-14  8:20 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-12  1:34 [PATCH v2 00/24] blk: Rationalise the block interface Simon Glass
2022-08-12  1:34 ` [PATCH v2 01/24] disk: Correct help for TPL_PARTITIONS Simon Glass
2022-09-16 19:37   ` Tom Rini
2022-08-12  1:34 ` [PATCH v2 02/24] blk: Enable CONFIG_BLK for all media Simon Glass
2022-08-12  1:34 ` [PATCH v2 03/24] ata: Fix an instance of SPL_SATA_SUPPORT Simon Glass
2022-08-12  1:34 ` [PATCH v2 04/24] sandbox: Avoid defining HAVE_BLOCK_DEVICE in Konfig Simon Glass
2022-08-12  1:34 ` [PATCH v2 05/24] disk: Use Makefile to omit partition drivers Simon Glass
2022-08-12  1:34 ` [PATCH v2 06/24] blk: Use a function for whether block devices are available Simon Glass
2022-08-12  1:34 ` [PATCH v2 07/24] cmd: Drop use of HAVE_BLOCK_DEVICE Simon Glass
2022-08-12  1:34 ` [PATCH v2 08/24] blk: Drop unnecessary #ifdef in in blk_legacy Simon Glass
2022-08-12  1:34 ` [PATCH v2 09/24] blk: Rename HAVE_BLOCK_DEVICE Simon Glass
2022-09-14  1:42   ` AKASHI Takahiro
2022-09-14  7:34     ` Heinrich Schuchardt
2022-09-14 17:10       ` Simon Glass
2022-08-12  1:34 ` [PATCH v2 10/24] blk: Select SPL_LEGACY_BLOCK automatically Simon Glass
2022-08-12  1:34 ` [PATCH v2 11/24] blk: Drop unnecessary CONFIG_SPL_LEGACY_BLOCK in defconfigs Simon Glass
2022-08-12  1:34 ` [PATCH v2 12/24] blk: Hide the BLK and SPL_LEGACY_BLOCK options Simon Glass
2022-08-12  1:34 ` [PATCH v2 13/24] blk: Drop IF_TYPE_DOC Simon Glass
2022-08-12  1:34 ` [PATCH v2 14/24] ide: Use a flag for an ATAPI device Simon Glass
2022-08-12  1:34 ` [PATCH v2 15/24] blk: Drop IF_TYPE_ATAPI Simon Glass
2022-08-12  1:34 ` [PATCH v2 16/24] blk: Drop IF_TYPE_SD Simon Glass
2022-08-12  1:34 ` [PATCH v2 17/24] blk: Rename var in blk_get_devnum_by_typename() Simon Glass
2022-08-12  1:34 ` [PATCH v2 18/24] blk: Rewrite if_type to name functions Simon Glass
2022-08-12  1:34 ` [PATCH v2 19/24] efi: Correct assumption about if_type Simon Glass
2022-08-12  1:34 ` [PATCH v2 20/24] blk: Switch over to using uclass IDs Simon Glass
2022-08-12  1:35 ` [PATCH v2 21/24] disk: Handle UCLASS_EFI_MEDIA in dev_print() Simon Glass
2022-08-12  1:35 ` [PATCH v2 22/24] blk: Drop if_type Simon Glass
2022-09-13 16:27   ` Heinrich Schuchardt
2022-09-14  2:08     ` AKASHI Takahiro
2022-09-14  7:45       ` Heinrich Schuchardt
2022-09-14  8:20         ` AKASHI Takahiro [this message]
2022-09-14 17:10     ` Simon Glass
2022-08-12  1:35 ` [PATCH v2 23/24] efi: Drop ifname field from struct efi_disk_obj Simon Glass
2022-09-13 16:17   ` Heinrich Schuchardt
2022-08-12  1:35 ` [PATCH v2 24/24] blk: Rename if_type to uclass_id Simon Glass
2022-09-13 16:03   ` Tom Rini
2022-09-14 17:09     ` Simon Glass
2022-09-14  1:22   ` AKASHI Takahiro
2022-08-12 13:51 ` [PATCH v2 00/24] blk: Rationalise the block interface Johan Jonker
2022-08-12 15:11   ` Simon Glass
2022-08-14  6:33     ` Johan Jonker
2022-08-15 17:37       ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220914082003.GA52407@laputa \
    --to=takahiro.akashi@linaro.org \
    --cc=ilias.apalodimas@linaro.org \
    --cc=masahisa.kojima@linaro.org \
    --cc=sjg@chromium.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=xypron.glpk@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox