All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Chen <peter.chen@kernel.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-kernel@vger.kernel.org,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"Lyude Paul" <lyude@redhat.com>,
	"Alexander Lobakin" <aleksander.lobakin@intel.com>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Jonathan Cameron" <Jonathan.Cameron@huawei.com>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Lukas Wunner" <lukas@wunner.de>,
	"Mark Brown" <broonie@kernel.org>,
	"Maíra Canal" <mairacanal@riseup.net>,
	"Robin Murphy" <robin.murphy@arm.com>,
	"Simona Vetter" <simona.vetter@ffwll.ch>,
	"Zijun Hu" <quic_zijuhu@quicinc.com>,
	linux-usb@vger.kernel.org, rust-for-linux@vger.kernel.org
Subject: Re: [PATCH v2 3/5] USB: phy: convert usb_phy_generic logic to use a faux device
Date: Wed, 5 Feb 2025 18:19:16 +0800	[thread overview]
Message-ID: <20250205101916.GA4083@nchen-desktop> (raw)
In-Reply-To: <2025020424-overstock-scheming-6a30@gregkh>

On 25-02-04 12:09:15, Greg Kroah-Hartman wrote:
> The usb_phy_generic code was creating a "fake" platform device to pass
> around in different places.  Instead of doing that, use the faux bus
> instead as that is what is really wanted here.

Hi Greg,

As far as I know, there are some platforms use the device-tree to get
the system resource (eg, clock, reset, regular) for this driver.
We may not use fake bus for this driver.

$grep -rn "usb-nop-xceiv" arch/arm64/boot/dts/*

arch/arm64/boot/dts/altera/socfpga_stratix10.dtsi:649:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/freescale/imx8mm.dtsi:275:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/freescale/imx8mm.dtsi:285:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/freescale/imx93.dtsi:238:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/freescale/imx93.dtsi:245:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/freescale/imx8mn.dtsi:1321:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/intel/socfpga_agilex.dtsi:149:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi:133:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/marvell/cn9132-db.dtsi:30:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/marvell/cn9132-db.dtsi:44:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/marvell/cn9131-db.dtsi:33:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/marvell/armada-3720-db.dts:43:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/marvell/cn9130-crb.dtsi:49:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/marvell/cn9130-crb.dtsi:53:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/marvell/cn9130-db.dtsi:52:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/marvell/cn9130-db.dtsi:66:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/marvell/armada-8040-db.dts:53:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/marvell/armada-8040-db.dts:67:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/marvell/ac5-98dx35xx-rd.dts:36:		compatible = "usb-nop-xceiv";
arch/arm64/boot/dts/marvell/armada-3720-espressobin-ultra.dts:39:		compatible = "usb-nop-xceiv";

Peter

> 
> Site note, this fixes a bug in the mpfs driver where the incorrect
> pointer was being passed to usb_phy_generic_unregister(), odd that no
> one ever hit this in the past.
> 
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---
>  v2: no change
> 
>  drivers/usb/chipidea/ci_hdrc_pci.c  | 2 +-
>  drivers/usb/dwc2/pci.c              | 4 ++--
>  drivers/usb/musb/mediatek.c         | 4 ++--
>  drivers/usb/musb/mpfs.c             | 4 ++--
>  drivers/usb/musb/tusb6010.c         | 2 +-
>  drivers/usb/phy/phy-generic.c       | 9 ++++-----
>  include/linux/usb/usb_phy_generic.h | 9 +++++----
>  7 files changed, 17 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/usb/chipidea/ci_hdrc_pci.c b/drivers/usb/chipidea/ci_hdrc_pci.c
> index d63479e1ad10..63511ea30d6e 100644
> --- a/drivers/usb/chipidea/ci_hdrc_pci.c
> +++ b/drivers/usb/chipidea/ci_hdrc_pci.c
> @@ -20,7 +20,7 @@
>  
>  struct ci_hdrc_pci {
>  	struct platform_device	*ci;
> -	struct platform_device	*phy;
> +	struct faux_device	*phy;
>  };
>  
>  /******************************************************************************
> diff --git a/drivers/usb/dwc2/pci.c b/drivers/usb/dwc2/pci.c
> index f3a1e4232a31..8cb50620aa55 100644
> --- a/drivers/usb/dwc2/pci.c
> +++ b/drivers/usb/dwc2/pci.c
> @@ -30,7 +30,7 @@ static const char dwc2_driver_name[] = "dwc2-pci";
>  
>  struct dwc2_pci_glue {
>  	struct platform_device *dwc2;
> -	struct platform_device *phy;
> +	struct faux_device *phy;
>  };
>  
>  /**
> @@ -53,7 +53,7 @@ static int dwc2_pci_probe(struct pci_dev *pci,
>  {
>  	struct resource		res[2];
>  	struct platform_device	*dwc2;
> -	struct platform_device	*phy;
> +	struct faux_device	*phy;
>  	int			ret;
>  	struct device		*dev = &pci->dev;
>  	struct dwc2_pci_glue	*glue;
> diff --git a/drivers/usb/musb/mediatek.c b/drivers/usb/musb/mediatek.c
> index aa988d74b58d..995bab88506a 100644
> --- a/drivers/usb/musb/mediatek.c
> +++ b/drivers/usb/musb/mediatek.c
> @@ -43,7 +43,7 @@ struct mtk_glue {
>  	struct device *dev;
>  	struct musb *musb;
>  	struct platform_device *musb_pdev;
> -	struct platform_device *usb_phy;
> +	struct faux_device *usb_phy;
>  	struct phy *phy;
>  	struct usb_phy *xceiv;
>  	enum phy_mode phy_mode;
> @@ -507,7 +507,7 @@ static int mtk_musb_probe(struct platform_device *pdev)
>  static void mtk_musb_remove(struct platform_device *pdev)
>  {
>  	struct mtk_glue *glue = platform_get_drvdata(pdev);
> -	struct platform_device *usb_phy = glue->usb_phy;
> +	struct faux_device *usb_phy = glue->usb_phy;
>  
>  	platform_device_unregister(glue->musb_pdev);
>  	usb_phy_generic_unregister(usb_phy);
> diff --git a/drivers/usb/musb/mpfs.c b/drivers/usb/musb/mpfs.c
> index 7edc8429b274..ef20794aee12 100644
> --- a/drivers/usb/musb/mpfs.c
> +++ b/drivers/usb/musb/mpfs.c
> @@ -25,7 +25,7 @@
>  struct mpfs_glue {
>  	struct device *dev;
>  	struct platform_device *musb;
> -	struct platform_device *phy;
> +	struct faux_device *phy;
>  	struct clk *clk;
>  };
>  
> @@ -356,7 +356,7 @@ static void mpfs_remove(struct platform_device *pdev)
>  
>  	clk_disable_unprepare(glue->clk);
>  	platform_device_unregister(glue->musb);
> -	usb_phy_generic_unregister(pdev);
> +	usb_phy_generic_unregister(glue->phy);
>  }
>  
>  #ifdef CONFIG_OF
> diff --git a/drivers/usb/musb/tusb6010.c b/drivers/usb/musb/tusb6010.c
> index 90b760a95e4e..92609f9d20ff 100644
> --- a/drivers/usb/musb/tusb6010.c
> +++ b/drivers/usb/musb/tusb6010.c
> @@ -32,7 +32,7 @@
>  struct tusb6010_glue {
>  	struct device		*dev;
>  	struct platform_device	*musb;
> -	struct platform_device	*phy;
> +	struct faux_device	*phy;
>  	struct gpio_desc	*enable;
>  	struct gpio_desc	*intpin;
>  };
> diff --git a/drivers/usb/phy/phy-generic.c b/drivers/usb/phy/phy-generic.c
> index 6c3ececf9137..a6cece75d0f8 100644
> --- a/drivers/usb/phy/phy-generic.c
> +++ b/drivers/usb/phy/phy-generic.c
> @@ -30,16 +30,15 @@
>  	(IRQF_SHARED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | \
>  		IRQF_ONESHOT)
>  
> -struct platform_device *usb_phy_generic_register(void)
> +struct faux_device *usb_phy_generic_register(void)
>  {
> -	return platform_device_register_simple("usb_phy_generic",
> -			PLATFORM_DEVID_AUTO, NULL, 0);
> +	return faux_device_create("usb_phy_generic", NULL);
>  }
>  EXPORT_SYMBOL_GPL(usb_phy_generic_register);
>  
> -void usb_phy_generic_unregister(struct platform_device *pdev)
> +void usb_phy_generic_unregister(struct faux_device *fdev)
>  {
> -	platform_device_unregister(pdev);
> +	faux_device_destroy(fdev);
>  }
>  EXPORT_SYMBOL_GPL(usb_phy_generic_unregister);
>  
> diff --git a/include/linux/usb/usb_phy_generic.h b/include/linux/usb/usb_phy_generic.h
> index cd9e70a552a0..856db2bacc07 100644
> --- a/include/linux/usb/usb_phy_generic.h
> +++ b/include/linux/usb/usb_phy_generic.h
> @@ -3,18 +3,19 @@
>  #define __LINUX_USB_NOP_XCEIV_H
>  
>  #include <linux/usb/otg.h>
> +#include <linux/device/faux.h>
>  
>  #if IS_ENABLED(CONFIG_NOP_USB_XCEIV)
>  /* sometimes transceivers are accessed only through e.g. ULPI */
> -extern struct platform_device *usb_phy_generic_register(void);
> -extern void usb_phy_generic_unregister(struct platform_device *);
> +struct faux_device *usb_phy_generic_register(void);
> +void usb_phy_generic_unregister(struct faux_device *);
>  #else
> -static inline struct platform_device *usb_phy_generic_register(void)
> +static inline struct faux_device *usb_phy_generic_register(void)
>  {
>  	return NULL;
>  }
>  
> -static inline void usb_phy_generic_unregister(struct platform_device *pdev)
> +static inline void usb_phy_generic_unregister(struct faux_device *fdev)
>  {
>  }
>  #endif
> -- 
> 2.48.1
> 
> 

  reply	other threads:[~2025-02-05 10:19 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-04 11:09 [PATCH v2 0/5] Driver core: Add faux bus devices Greg Kroah-Hartman
2025-02-04 11:09 ` [PATCH v2 1/5] driver core: add a faux bus for use when a simple device/bus is needed Greg Kroah-Hartman
2025-02-04 11:44   ` Danilo Krummrich
2025-02-04 11:52     ` Greg Kroah-Hartman
2025-02-04 12:04       ` Danilo Krummrich
2025-02-04 12:55         ` Greg Kroah-Hartman
2025-02-04 13:57           ` Danilo Krummrich
2025-02-04 12:46   ` Jonathan Cameron
2025-02-04 15:31   ` Alan Stern
2025-02-06  7:44     ` Greg Kroah-Hartman
2025-02-04 16:46   ` Rob Herring
2025-02-04 16:51     ` Rob Herring
2025-02-06  7:43     ` Greg Kroah-Hartman
2025-02-04 22:18   ` Lyude Paul
2025-02-06 10:50     ` Greg Kroah-Hartman
2025-02-04 22:51   ` Lyude Paul
2025-02-05  5:51     ` Greg Kroah-Hartman
2025-02-04 23:10   ` Lyude Paul
2025-02-05  5:53     ` Greg Kroah-Hartman
2025-02-05  7:57       ` Andy Shevchenko
2025-02-05  8:58         ` Greg Kroah-Hartman
2025-02-06 15:34   ` Zijun Hu
2025-02-06 16:19     ` Greg Kroah-Hartman
2025-02-04 11:09 ` [PATCH v2 2/5] regulator: dummy: convert to use the faux bus Greg Kroah-Hartman
2025-02-04 12:35   ` Mark Brown
2025-02-04 12:47   ` Jonathan Cameron
2025-02-04 11:09 ` [PATCH v2 3/5] USB: phy: convert usb_phy_generic logic to use a faux device Greg Kroah-Hartman
2025-02-05 10:19   ` Peter Chen [this message]
2025-02-05 12:27     ` Greg Kroah-Hartman
2025-02-05 13:41       ` Greg Kroah-Hartman
2025-02-06  1:54         ` Peter Chen
2025-02-06  5:46           ` Greg Kroah-Hartman
2025-02-04 11:09 ` [PATCH v2 4/5] x86/microcode: move away from using a fake platform device Greg Kroah-Hartman
2025-02-04 11:09 ` [PATCH v2 5/5] wifi: cfg80211: " Greg Kroah-Hartman

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=20250205101916.GA4083@nchen-desktop \
    --to=peter.chen@kernel.org \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=aleksander.lobakin@intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=bhelgaas@google.com \
    --cc=broonie@kernel.org \
    --cc=dakr@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=lyude@redhat.com \
    --cc=mairacanal@riseup.net \
    --cc=quic_zijuhu@quicinc.com \
    --cc=rafael@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=simona.vetter@ffwll.ch \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.