Re: [PATCH v2 3/5] USB: phy: convert usb_phy_generic logic to use a faux device

Greg Kroah-Hartman
2025-02-06T14:28:17Z

On Thu, Feb 06, 2025 at 09:54:52AM +0800, Peter Chen wrote:
> On 25-02-05 14:41:31, Greg Kroah-Hartman wrote:
> > On Wed, Feb 05, 2025 at 01:27:30PM +0100, Greg Kroah-Hartman wrote:
> > > On Wed, Feb 05, 2025 at 06:19:16PM +0800, Peter Chen wrote:
> > > > 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.
> > >
> > > But there is no system resources assigned to this device/driver at all,
> > > so how is it getting anything here?
> > >
> > > > $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";
> > >
> > > Does this actually work at all?
>
> Yes, at least for some NXP i.MX series SoCs, these SoCs use chipidea IP.
> At above device tree files, the USB generic PHY device node has enabled,
> so the device will be probed and get hardware resources.
>
> During the chipidea core driver->probe, it calls this generic USB phy
> driver's phy.init and do some actual hardware operations.

Ugh, that's not obvious at all. The usb-nop-xceiv match with
usb-phy-generic is tenious, but yeah, my change here broke this code.
I'll drop it from the series, thanks for the review.

greg k-h