Re: [PATCH v4 10/18] dt-bindings: usb: Convert DWC USB3 bindings to DT schema
From: Rob Herring <robh@kernel.org>
Date: 2020-11-30 15:39:17
Also in:
linux-arm-kernel, linux-devicetree, linux-mips, linux-usb, lkml
On Wed, Nov 25, 2020 at 1:32 AM Serge Semin [off-list ref] wrote:
On Sat, Nov 21, 2020 at 06:42:28AM -0600, Rob Herring wrote:quoted
On Thu, Nov 12, 2020 at 01:29:46PM +0300, Serge Semin wrote:quoted
On Wed, Nov 11, 2020 at 02:14:23PM -0600, Rob Herring wrote:quoted
On Wed, Nov 11, 2020 at 12:08:45PM +0300, Serge Semin wrote:quoted
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 <redacted> --- 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.yamlquoted
quoted
quoted
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@kernel.org> + +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. +quoted
quoted
+allOf: + - $ref: usb-drd.yaml# + - if: + properties: + dr_mode: + const: peripheralquoted
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#quoted
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