On Wed, Nov 25, 2020 at 1:32 AM Serge Semin <Sergey.Semin@xxxxxxxxxxxxxxxxxxxx> wrote: > > On Sat, Nov 21, 2020 at 06:42:28AM -0600, Rob Herring wrote: > > On Thu, Nov 12, 2020 at 01:29:46PM +0300, Serge Semin wrote: > > > On Wed, Nov 11, 2020 at 02:14:23PM -0600, Rob Herring wrote: > > > > On Wed, Nov 11, 2020 at 12:08:45PM +0300, Serge Semin wrote: > > > > > DWC USB3 DT node is supposed to be compliant with the Generic xHCI > > > > > Controller schema, but with additional vendor-specific properties, the > > > > > controller-specific reference clocks and PHYs. So let's convert the > > > > > currently available legacy text-based DWC USB3 bindings to the DT schema > > > > > and make sure the DWC USB3 nodes are also validated against the > > > > > usb-xhci.yaml schema. > > > > > > > > > > Note we have to discard the nodename restriction of being prefixed with > > > > > "dwc3@" string, since in accordance with the usb-hcd.yaml schema USB nodes > > > > > are supposed to be named as "^usb(@.*)". > > > > > > > > > > Signed-off-by: Serge Semin <Sergey.Semin@xxxxxxxxxxxxxxxxxxxx> > > > > > > > > > > --- > > > > > > > > > > Changelog v2: > > > > > - Discard '|' from the descriptions, since we don't need to preserve > > > > > the text formatting in any of them. > > > > > - Drop quotes from around the string constants. > > > > > - Fix the "clock-names" prop description to be referring the enumerated > > > > > clock-names instead of the ones from the Databook. > > > > > > > > > > Changelog v3: > > > > > - Apply usb-xhci.yaml# schema only if the controller is supposed to work > > > > > as either host or otg. > > > > > > > > > > Changelog v4: > > > > > - Apply usb-drd.yaml schema first. If the controller is configured > > > > > to work in a gadget mode only, then apply the usb.yaml schema too, > > > > > otherwise apply the usb-xhci.yaml schema. > > > > > - Discard the Rob'es Reviewed-by tag. Please review the patch one more > > > > > time. > > > > > --- > > > > > .../devicetree/bindings/usb/dwc3.txt | 125 -------- > > > > > .../devicetree/bindings/usb/snps,dwc3.yaml | 303 ++++++++++++++++++ > > > > > 2 files changed, 303 insertions(+), 125 deletions(-) > > > > > delete mode 100644 Documentation/devicetree/bindings/usb/dwc3.txt > > > > > create mode 100644 Documentation/devicetree/bindings/usb/snps,dwc3.yaml > > > > > > > > > diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml > > > > > new file mode 100644 > > > > > index 000000000000..079617891da6 > > > > > --- /dev/null > > > > > +++ b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml > > > > > @@ -0,0 +1,303 @@ > > > > > +# SPDX-License-Identifier: GPL-2.0 > > > > > +%YAML 1.2 > > > > > +--- > > > > > +$id: http://devicetree.org/schemas/usb/snps,dwc3.yaml# > > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > > > + > > > > > +title: Synopsys DesignWare USB3 Controller > > > > > + > > > > > +maintainers: > > > > > + - Felipe Balbi <balbi@xxxxxxxxxx> > > > > > + > > > > > +description: > > > > > + This is usually a subnode to DWC3 glue to which it is connected, but can also > > > > > + be presented as a standalone DT node with an optional vendor-specific > > > > > + compatible string. > > > > > + > > > > > > > > +allOf: > > > > > + - $ref: usb-drd.yaml# > > > > > + - if: > > > > > + properties: > > > > > + dr_mode: > > > > > + const: peripheral > > > > > Another thing, this evaluates to true if dr_mode is not present. You > > need to add 'required'? > > Right. Will something like this do that? Yes. > > + allOf: > + - $ref: usb-drd.yaml# > + - if: > + properties: > + dr_mode: > + const: peripheral > + > + required: > + - dr_mode > + then: > + $ref: usb.yaml# > + else > + $ref: usb-xhci.yaml# > > > If dr_mode is otg, then don't you need to apply > > both usb.yaml and usb-xhci.yaml? > > No I don't. Since there is no peripheral-specific DT schema, then the > only schema any USB-gadget node needs to pass is usb.yaml, which > is already included into the usb-xhci.yaml schema. So for pure OTG devices > with xHCI host and gadget capabilities it's enough to evaluate: allOf: > [$ref: usb-drd.yaml#, $ref: usb-xhci.yaml#]. Please see the > sketch/ASCII-figure below and the following text for details. Okay. Rob