[PATCH 4/6] ufs: Call ufs_scsi_bind() from uclass .post_bind
    Neil Armstrong 
    neil.armstrong at linaro.org
       
    Tue Oct 28 09:15:08 CET 2025
    
    
  
On 10/27/25 18:06, Marek Vasut wrote:
> Instead of duplicating the ufs_scsi_bind() call in every driver,
> call it from UFS uclass .post_bind callback for every driver in
> one place. While doing so, inline ufs_scsi_bind() directly into
> ufs_post_bind() as trivial device_bind_driver() call.
> 
> Signed-off-by: Marek Vasut <marek.vasut+renesas at mailbox.org>
> ---
> Cc: Bhupesh Sharma <bhupesh.linux at gmail.com>
> Cc: Casey Connolly <casey.connolly at linaro.org>
> Cc: Michal Simek <michal.simek at amd.com>
> Cc: Neha Malcom Francis <n-francis at ti.com>
> Cc: Neil Armstrong <neil.armstrong at linaro.org>
> Cc: Nobuhiro Iwamatsu <iwamatsu at nigauri.org>
> Cc: Sumit Garg <sumit.garg at kernel.org>
> Cc: Tom Rini <trini at konsulko.com>
> Cc: Tuyen Dang <tuyen.dang.xa at renesas.com>
> Cc: Venkatesh Yadav Abbarapu <venkatesh.abbarapu at amd.com>
> Cc: Yoshihiro Shimoda <yoshihiro.shimoda.uh at renesas.com>
> Cc: u-boot-qcom at groups.io
> Cc: u-boot at lists.denx.de
> ---
>   drivers/ufs/cdns-platform.c   |  8 --------
>   drivers/ufs/ufs-amd-versal2.c |  8 --------
>   drivers/ufs/ufs-pci.c         |  8 --------
>   drivers/ufs/ufs-qcom.c        |  8 --------
>   drivers/ufs/ufs-renesas.c     |  8 --------
>   drivers/ufs/ufs.c             | 14 ++++++--------
>   6 files changed, 6 insertions(+), 48 deletions(-)
> 
> diff --git a/drivers/ufs/cdns-platform.c b/drivers/ufs/cdns-platform.c
> index 510a6a6aa5d..87d9c5bad79 100644
> --- a/drivers/ufs/cdns-platform.c
> +++ b/drivers/ufs/cdns-platform.c
> @@ -101,13 +101,6 @@ static int cdns_ufs_pltfm_probe(struct udevice *dev)
>   	return err;
>   }
>   
> -static int cdns_ufs_pltfm_bind(struct udevice *dev)
> -{
> -	struct udevice *scsi_dev;
> -
> -	return ufs_scsi_bind(dev, &scsi_dev);
> -}
> -
>   static const struct udevice_id cdns_ufs_pltfm_ids[] = {
>   	{
>   		.compatible = "cdns,ufshc-m31-16nm",
> @@ -120,5 +113,4 @@ U_BOOT_DRIVER(cdns_ufs_pltfm) = {
>   	.id		= UCLASS_UFS,
>   	.of_match	= cdns_ufs_pltfm_ids,
>   	.probe		= cdns_ufs_pltfm_probe,
> -	.bind		= cdns_ufs_pltfm_bind,
>   };
> diff --git a/drivers/ufs/ufs-amd-versal2.c b/drivers/ufs/ufs-amd-versal2.c
> index 89931921ff9..bf23439e59d 100644
> --- a/drivers/ufs/ufs-amd-versal2.c
> +++ b/drivers/ufs/ufs-amd-versal2.c
> @@ -552,13 +552,6 @@ static int ufs_versal2_probe(struct udevice *dev)
>   	return ret;
>   }
>   
> -static int ufs_versal2_bind(struct udevice *dev)
> -{
> -	struct udevice *scsi_dev;
> -
> -	return ufs_scsi_bind(dev, &scsi_dev);
> -}
> -
>   static const struct udevice_id ufs_versal2_ids[] = {
>   	{
>   		.compatible = "amd,versal2-ufs",
> @@ -571,5 +564,4 @@ U_BOOT_DRIVER(ufs_versal2_pltfm) = {
>   	.id		= UCLASS_UFS,
>   	.of_match	= ufs_versal2_ids,
>   	.probe		= ufs_versal2_probe,
> -	.bind		= ufs_versal2_bind,
>   };
> diff --git a/drivers/ufs/ufs-pci.c b/drivers/ufs/ufs-pci.c
> index 871f3f50f5c..5b9c72a695d 100644
> --- a/drivers/ufs/ufs-pci.c
> +++ b/drivers/ufs/ufs-pci.c
> @@ -11,13 +11,6 @@
>   #include <dm/device_compat.h>
>   #include "ufs.h"
>   
> -static int ufs_pci_bind(struct udevice *dev)
> -{
> -	struct udevice *scsi_dev;
> -
> -	return ufs_scsi_bind(dev, &scsi_dev);
> -}
> -
>   static int ufs_pci_probe(struct udevice *dev)
>   {
>   	int err;
> @@ -32,7 +25,6 @@ static int ufs_pci_probe(struct udevice *dev)
>   U_BOOT_DRIVER(ufs_pci) = {
>   	.name	= "ufs_pci",
>   	.id	= UCLASS_UFS,
> -	.bind	= ufs_pci_bind,
>   	.probe	= ufs_pci_probe,
>   };
>   
> diff --git a/drivers/ufs/ufs-qcom.c b/drivers/ufs/ufs-qcom.c
> index 843585726c7..9f0a6940d98 100644
> --- a/drivers/ufs/ufs-qcom.c
> +++ b/drivers/ufs/ufs-qcom.c
> @@ -648,13 +648,6 @@ static int ufs_qcom_probe(struct udevice *dev)
>   	return 0;
>   }
>   
> -static int ufs_qcom_bind(struct udevice *dev)
> -{
> -	struct udevice *scsi_dev;
> -
> -	return ufs_scsi_bind(dev, &scsi_dev);
> -}
> -
>   static const struct udevice_id ufs_qcom_ids[] = {
>   	{ .compatible = "qcom,ufshc" },
>   	{},
> @@ -665,6 +658,5 @@ U_BOOT_DRIVER(qcom_ufshcd) = {
>   	.id		= UCLASS_UFS,
>   	.of_match	= ufs_qcom_ids,
>   	.probe		= ufs_qcom_probe,
> -	.bind		= ufs_qcom_bind,
>   	.priv_auto	= sizeof(struct ufs_qcom_priv),
>   };
> diff --git a/drivers/ufs/ufs-renesas.c b/drivers/ufs/ufs-renesas.c
> index ae05bdc8102..0b74b39dc2a 100644
> --- a/drivers/ufs/ufs-renesas.c
> +++ b/drivers/ufs/ufs-renesas.c
> @@ -351,13 +351,6 @@ static struct ufs_hba_ops ufs_renesas_vops = {
>   	.hce_enable_notify = ufs_renesas_hce_enable_notify,
>   };
>   
> -static int ufs_renesas_pltfm_bind(struct udevice *dev)
> -{
> -	struct udevice *scsi_dev;
> -
> -	return ufs_scsi_bind(dev, &scsi_dev);
> -}
> -
>   static int ufs_renesas_pltfm_probe(struct udevice *dev)
>   {
>   	struct ufs_renesas_priv *priv = dev_get_priv(dev);
> @@ -405,7 +398,6 @@ U_BOOT_DRIVER(ufs_renesas) = {
>   	.name		= "ufs-renesas",
>   	.id		= UCLASS_UFS,
>   	.of_match	= ufs_renesas_pltfm_ids,
> -	.bind		= ufs_renesas_pltfm_bind,
>   	.probe		= ufs_renesas_pltfm_probe,
>   	.remove		= ufs_renesas_pltfm_remove,
>   	.priv_auto	= sizeof(struct ufs_renesas_priv),
> diff --git a/drivers/ufs/ufs.c b/drivers/ufs/ufs.c
> index c1f3301b37e..5dff5c3aaec 100644
> --- a/drivers/ufs/ufs.c
> +++ b/drivers/ufs/ufs.c
> @@ -2030,14 +2030,6 @@ int ufshcd_probe(struct udevice *ufs_dev, struct ufs_hba_ops *hba_ops)
>   	return 0;
>   }
>   
> -int ufs_scsi_bind(struct udevice *ufs_dev, struct udevice **scsi_devp)
> -{
> -	int ret = device_bind_driver(ufs_dev, "ufs_scsi", "ufs_scsi",
> -				     scsi_devp);
> -
> -	return ret;
> -}
> -
>   #if IS_ENABLED(CONFIG_BOUNCE_BUFFER)
>   static int ufs_scsi_buffer_aligned(struct udevice *scsi_dev, struct bounce_buffer *state)
>   {
> @@ -2092,8 +2084,14 @@ U_BOOT_DRIVER(ufs_scsi) = {
>   	.ops = &ufs_ops,
>   };
>   
> +static int ufs_post_bind(struct udevice *dev)
> +{
> +	return device_bind_driver(dev, "ufs_scsi", "ufs_scsi", NULL);
> +}
> +
>   UCLASS_DRIVER(ufs) = {
>   	.id			= UCLASS_UFS,
>   	.name			= "ufs",
> +	.post_bind		= ufs_post_bind,
>   	.per_device_auto	= sizeof(struct ufs_hba),
>   };
Nice change !
Reviewed-by: Neil Armstrong <neil.armstrong at linaro.org>
    
    
More information about the U-Boot
mailing list