On 19/07/2023 19:40, Sebastian Reichel wrote: > RK3588 contains three DWC3 cores. Two of them are connected to > dedicated USBDP PHY and can be used in dual-role. The third is > connected to one of the shared combo PHYs used for PCIe/SATA/USB3 > and can only be used in host mode. Since the binding is all about > the PHY glueing and involved clocks, separate compatible values > have been created for these two types. The cores are the same. To which phy they are connected to, does not justify difference in compatibles. It's still the same devoce. > > Signed-off-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx> > --- > .../bindings/usb/rockchip,rk3399-dwc3.yaml | 107 ++++++++++++++---- > 1 file changed, 85 insertions(+), 22 deletions(-) > > diff --git a/Documentation/devicetree/bindings/usb/rockchip,rk3399-dwc3.yaml b/Documentation/devicetree/bindings/usb/rockchip,rk3399-dwc3.yaml > index 3159f9a6a0f7..0db4dc86e506 100644 > --- a/Documentation/devicetree/bindings/usb/rockchip,rk3399-dwc3.yaml > +++ b/Documentation/devicetree/bindings/usb/rockchip,rk3399-dwc3.yaml > @@ -11,7 +11,13 @@ maintainers: > > properties: > compatible: > - const: rockchip,rk3399-dwc3 > + oneOf: > + - items: > + - enum: > + - rockchip,rk3588-dwc3-otg > + - rockchip,rk3588-dwc3-host > + - const: rockchip,rk3399-dwc3 > + - const: rockchip,rk3399-dwc3 > > '#address-cells': > const: 2 > @@ -22,35 +28,37 @@ properties: > ranges: true > > clocks: > - items: > - - description: > - Controller reference clock, must to be 24 MHz > - - description: > - Controller suspend clock, must to be 24 MHz or 32 KHz > - - description: > - Master/Core clock, must to be >= 62.5 MHz for SS > - operation and >= 30MHz for HS operation > - - description: > - USB3 aclk peri > - - description: > - USB3 aclk > - - description: > - Controller grf clock > + minItems: 3 > + maxItems: 6 > > clock-names: > items: > - - const: ref_clk > - - const: suspend_clk > - - const: bus_clk > - - const: aclk_usb3_rksoc_axi_perf > - - const: aclk_usb3 > - - const: grf_clk > + oneOf: > + - enum: > + - ref > + - ref_clk This is not oneOf. You cannot have here one clock. There is also no point in making all these changes here,. > + - enum: > + - suspend > + - suspend_clk > + - enum: > + - bus > + - bus_clk > + - const: aclk_usb3_rksoc_axi_perf > + - const: aclk_usb3 > + - const: grf_clk > + - const: utmi > + - const: php > + - const: pipe > + minItems: 3 > + maxItems: 6 > > resets: > maxItems: 1 > > reset-names: > - const: usb3-otg > + enum: > + - usb3-host > + - usb3-otg I don't see a point in changing this. > > patternProperties: > '^usb@': > @@ -68,6 +76,61 @@ required: > - resets > - reset-names > > +allOf: > + - if: > + properties: > + compatible: > + const: rockchip,rk3399-dwc3 > + then: > + properties: > + clocks: > + minItems: 6 > + clock-names: > + items: > + - const: ref_clk > + - const: suspend_clk > + - const: bus_clk > + - const: aclk_usb3_rksoc_axi_perf > + - const: aclk_usb3 > + - const: grf_clk > + reset-names: > + const: usb3-otg > + - if: > + properties: > + compatible: > + contains: > + const: rockchip,rk3588-dwc3-otg > + then: > + properties: > + clocks: > + maxItems: 3 > + clock-names: > + items: > + - const: ref > + - const: suspend > + - const: bus Use the same clock names. > + reset-names: > + const: usb3-otg > + - if: > + properties: > + compatible: > + contains: > + const: rockchip,rk3588-dwc3-host > + then: > + properties: > + clocks: > + minItems: 6 > + clock-names: > + items: > + - const: ref > + - const: suspend > + - const: bus > + - const: utmi > + - const: php > + - const: pipe Same clock names > + reset-names: > + const: usb3-host Same reset name. Best regards, Krzysztof