RE: [PATCH v2 3/3] dt-bindings: phy: realtek: Add the doc about the Realtek SoC USB 2.0/3.0 PHY

From: Stanley Chang[昌育德]
Date: Wed May 31 2023 - 22:26:01 EST


Hi Conor,

> > > You have device-specific compatibles, which is great, but you also allow
> > > only those two generic ones. I had a _brief_ look at the driver, and it
> > > seems like there is no decision making done based on the compatibles,
> > > only on the properties. Is that correct?
> > > If it is, I would understand having "realtek,usb3phy" as a fallback
> > > compatible for "realtek,rtd1619-usb3phy", but I do not get the current
> > > setup.
> >
> > This driver is compatible with all Realtek RTD SoCs without specifying different settings.
> > So use "realtek,usb3phy" as fallback compatible for all SoCs.
> > This is the compatible name we use.
> > Other compatible names simply indicate that the driver supports the SoCs.
>
> Then you should write the binding such that having fallback compatibles
> is permitted. Try plugging
> compatible = "realtek,rtd1295-usb2phy", "realtek,rtd-usb2phy", "realtek,usb2phy";
> into your example below and see what happens.
>
> > The name "usbNphy" and "rtd-usbNphy" seem to be more generic for all RTD SoCs,
> > but they are not device-specific compatible.
> > Do you have a better suggestion?
>
> Write the binding so that having fallback compatibles in the DT actually
> works, don't add the SoC-specific ones merely as indicators that those
> SoCs are supported and don't permit "realtek,usbNphy" or
> "realtek,rtd-usbNphy" in isolation ;)
>

As far as I understand what you mean.
I should follow other docs to define compatible.
Reference:
Documentation/devicetree/bindings/phy/mediatek,xsphy.yaml
drivers/phy/mediatek/phy-mtk-xsphy.c

For example:

compatible:
items:
- enum:
- realtek,rtd1295-usb2phy
- realtek,rtd1395-usb2phy
- realtek,rtd1619-usb2phy
- realtek,rtd1319-usb2phy
- realtek,rtd1619b-usb2phy
- realtek,rtd1312c-usb2phy
- realtek,rtd1319d-usb2phy
- realtek,rtd1315e-usb2phy
- const: realtek,usb2phy

examples:
-
dwc3_u3drd_usb2phy: dwc3_u3drd_usb2phy@98013e14 {
compatible = "realtek,rtd1319-usb2phy", "realtek,usb2phy";

And use only "Realtek, usb2phy" in the driver.
static const struct of_device_id usbphy_rtk_dt_match[] = {
{ .compatible = "realtek,usb2phy", },
{},
};