[PATCH v2 22/24] blk: Drop if_type

Heinrich Schuchardt xypron.glpk at gmx.de
Tue Sep 13 18:27:37 CEST 2022


On 8/12/22 03:35, Simon Glass wrote:
> Use the uclass ID instead.
>
> Signed-off-by: Simon Glass <sjg at 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.

Acked-by: Heinrich Schuchardt <xypron.glpk at gmx.de>


>   	u8 part;



>   } efi_system_partition;



More information about the U-Boot mailing list