[PATCH v4 10/18] dt-bindings: usb: Convert DWC USB3 bindings to DT schema
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 --- 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/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt deleted file mode 100644 index d03edf9d3935.. --- a/Documentation/devicetree/bindings/usb/dwc3.txt +++ /dev/null @@ -1,125 +0,0 @@ -synopsys DWC3 CORE - -DWC3- USB3 CONTROLLER. Complies to the generic USB binding properties - as described in 'usb/generic.txt' - -Required properties: - - compatible: must be "snps,dwc3" - - reg : Address and length of the register set for the device - - interrupts: Interrupts used by the dwc3 controller. - - clock-names: list of clock names. Ideally should be "ref", -"bus_early", "suspend" but may be less or more. - - clocks: list of phandle and clock specifier pairs corresponding to - entries in the clock-names property. - -Exception for clocks: - clocks are optional if the parent node (i.e. glue-layer) is compatible to - one of the following: -"cavium,octeon-7130-usb-uctl" -"qcom,dwc3" -"samsung,exynos5250-dwusb3" -"samsung,exynos5433-dwusb3" -"samsung,exynos7-dwusb3" -"sprd,sc9860-dwc3" -"st,stih407-dwc3" -"ti,am437x-dwc3" -"ti,dwc3" -"ti,keystone-dwc3" -"rockchip,rk3399-dwc3" -"xlnx,zynqmp-dwc3" - -Optional properties: - - usb-phy : array of phandle for the PHY device. The first element - in the array is expected to be a handle to the USB2/HS PHY and - the second element is expected to be a handle to the USB3/SS PHY - - phys: from the *Generic PHY* bindings - - phy-names: from the *Generic PHY* bindings; supported names are "usb2-phy" - or "usb3-phy". - - resets: set of phandle and reset specifier pairs - - snps,usb2-lpm-disable: indicate if we don't want to enable USB2 HW LPM - - snps,usb3_lpm_capable: determines if platform is USB3 LPM capable - - snps,dis-start-transfer-quirk: when set, disable isoc START TRANSFER command - failure SW work-around for DWC_usb31 version 1.70a-ea06 - and prior. - - snps,disable_scramble_quirk: true when SW should disable data scrambling. - Only really useful for FPGA builds. - - snps,has-lpm-erratum: true when DWC3 was configured with LPM Erratum enabled - - snps,lpm-nyet-threshold: LPM NYET threshold - - snps,u2exit_lfps_quirk: set if we want to enable u2exit lfps quirk - - snps,u2ss_inp3_quirk: set if we enable P3 OK for U2/SS Inactive quirk - - snps,req_p1p2p3_quirk: when set, the core will always request for - P1/P2/P3 transition sequence. - - snps,del_p1p2p3_quirk: when set core will delay P1/P2/P3 until a certain - amount of 8B10B errors occur. - - snps,del_phy_power_chg_quirk: when set core will delay PHY power change - from P0 to P1/P2/P3. - - snps,lfps_filter_quirk: when set core will filter LFPS reception. - - snps,rx_detect_poll_quirk: when set core will disable a 400us delay to start - Polling LFPS after RX.Detect. - - snps,tx_de_emphasis_quirk: when set core will set Tx de-emphasis value. - - snps,tx_de_emphasis: the value driven to the PHY is controlled by the - LTSSM during USB3 Compliance mode. - - snps,dis_u3_susphy_quirk: when set core will disable USB3 suspend phy. - - snps,dis_u2_susphy_quirk: when set core will disable USB2 suspend phy. - - snps,dis_enblslpm_quirk: when set clea
Re: [PATCH v4 10/18] dt-bindings: usb: Convert DWC USB3 bindings to DT schema
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 > > --- > > 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/dwc3.txt > b/Documentation/devicetree/bindings/usb/dwc3.txt > deleted file mode 100644 > index d03edf9d3935.. > --- a/Documentation/devicetree/bindings/usb/dwc3.txt > +++ /dev/null > @@ -1,125 +0,0 @@ > -synopsys DWC3 CORE > - > -DWC3- USB3 CONTROLLER. Complies to the generic USB binding properties > - as described in 'usb/generic.txt' > - > -Required properties: > - - compatible: must be "snps,dwc3" > - - reg : Address and length of the register set for the device > - - interrupts: Interrupts used by the dwc3 controller. > - - clock-names: list of clock names. Ideally should be "ref", > -"bus_early", "suspend" but may be less or more. > - - clocks: list of phandle and clock specifier pairs corresponding to > - entries in the clock-names property. > - > -Exception for clocks: > - clocks are optional if the parent node (i.e. glue-layer) is compatible to > - one of the following: > -"cavium,octeon-7130-usb-uctl" > -"qcom,dwc3" > -"samsung,exynos5250-dwusb3" > -"samsung,exynos5433-dwusb3" > -"samsung,exynos7-dwusb3" > -"sprd,sc9860-dwc3" > -"st,stih407-dwc3" > -"ti,am437x-dwc3" > -"ti,dwc3" > -"ti,keystone-dwc3" > -"rockchip,rk3399-dwc3" > -"xlnx,zynqmp-dwc3" What happened with this part of dtschema? It sees you removed it. Best regards, Krzysztof
Re: [PATCH v4 10/18] dt-bindings: usb: Convert DWC USB3 bindings to DT schema
On Wed, Nov 11, 2020 at 10:16:28AM +0100, Krzysztof Kozlowski 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 > > > > --- > > > > 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/dwc3.txt > > b/Documentation/devicetree/bindings/usb/dwc3.txt > > deleted file mode 100644 > > index d03edf9d3935.. > > --- a/Documentation/devicetree/bindings/usb/dwc3.txt > > +++ /dev/null > > @@ -1,125 +0,0 @@ > > -synopsys DWC3 CORE > > - > > -DWC3- USB3 CONTROLLER. Complies to the generic USB binding properties > > - as described in 'usb/generic.txt' > > - > > -Required properties: > > - - compatible: must be "snps,dwc3" > > - - reg : Address and length of the register set for the device > > - - interrupts: Interrupts used by the dwc3 controller. > > - - clock-names: list of clock names. Ideally should be "ref", > > -"bus_early", "suspend" but may be less or more. > > - - clocks: list of phandle and clock specifier pairs corresponding to > > - entries in the clock-names property. > > - > > -Exception for clocks: > > - clocks are optional if the parent node (i.e. glue-layer) is compatible to > > - one of the following: > > -"cavium,octeon-7130-usb-uctl" > > -"qcom,dwc3" > > -"samsung,exynos5250-dwusb3" > > -"samsung,exynos5433-dwusb3" > > -"samsung,exynos7-dwusb3" > > -"sprd,sc9860-dwc3" > > -"st,stih407-dwc3" > > -"ti,am437x-dwc3" > > -"ti,dwc3" > > -"ti,keystone-dwc3" > > -"rockchip,rk3399-dwc3" > > -"xlnx,zynqmp-dwc3" > > What happened with this part of dtschema? It sees you removed it. You meant "bindings", right? I don't think it's a good idea to implement that weak binding in the generic DWC USB3 DT schema. Of course I could have created it under the allOf conditional schema and stuff. But in that case we would have needed to support the clock-related vendor-specific peculiarities in both the generic DWC USB3 DT schema and in the vendor-specific binding files. That wouldn't be that maintainable. As I see it all the vendor-specific clock requirements should be reflected in the glue-node DT schema. The DWC USB3 node binding just declares the clocks as optional. Moreover the DWC USB3 driver also considers them as optional. -Sergey > > Best regards, > Krzysztof
Re: [PATCH v4 10/18] dt-bindings: usb: Convert DWC USB3 bindings to DT schema
On Wed, 11 Nov 2020 at 10:32, Serge Semin wrote: > > On Wed, Nov 11, 2020 at 10:16:28AM +0100, Krzysztof Kozlowski 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 > > > > > > --- > > > > > > 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/dwc3.txt > > > b/Documentation/devicetree/bindings/usb/dwc3.txt > > > deleted file mode 100644 > > > index d03edf9d3935.. > > > --- a/Documentation/devicetree/bindings/usb/dwc3.txt > > > +++ /dev/null > > > @@ -1,125 +0,0 @@ > > > -synopsys DWC3 CORE > > > - > > > -DWC3- USB3 CONTROLLER. Complies to the generic USB binding properties > > > - as described in 'usb/generic.txt' > > > - > > > -Required properties: > > > - - compatible: must be "snps,dwc3" > > > - - reg : Address and length of the register set for the device > > > - - interrupts: Interrupts used by the dwc3 controller. > > > > - - clock-names: list of clock names. Ideally should be "ref", > > > -"bus_early", "suspend" but may be less or more. > > > - - clocks: list of phandle and clock specifier pairs corresponding to > > > - entries in the clock-names property. > > > - > > > -Exception for clocks: > > > - clocks are optional if the parent node (i.e. glue-layer) is compatible > > > to > > > - one of the following: > > > -"cavium,octeon-7130-usb-uctl" > > > -"qcom,dwc3" > > > -"samsung,exynos5250-dwusb3" > > > -"samsung,exynos5433-dwusb3" > > > -"samsung,exynos7-dwusb3" > > > -"sprd,sc9860-dwc3" > > > -"st,stih407-dwc3" > > > -"ti,am437x-dwc3" > > > -"ti,dwc3" > > > -"ti,keystone-dwc3" > > > -"rockchip,rk3399-dwc3" > > > -"xlnx,zynqmp-dwc3" > > > > What happened with this part of dtschema? It sees you removed it. > > You meant "bindings", right? > > I don't think it's a good idea to implement that weak binding in the > generic DWC USB3 DT schema. Of course I could have created it under > the allOf conditional schema and stuff. But in that case we would have > needed to support the clock-related vendor-specific peculiarities in > both the generic DWC USB3 DT schema and in the vendor-specific binding > files. That wouldn't be that maintainable. As I see it all the > vendor-specific clock requirements should be reflected in the > glue-node DT schema. The DWC USB3 node binding just declares the > clocks as optional. Moreover the DWC USB3 driver also considers them > as optional. Sure, rationale is good, but it needs to be explained in commit msg. Otherwise you state that you just "convert" but it's not a simple conversion. The meaning is changed. Best regards, Krzysztof
Re: [PATCH v4 10/18] dt-bindings: usb: Convert DWC USB3 bindings to DT schema
On Wed, Nov 11, 2020 at 10:34:10AM +0100, Krzysztof Kozlowski wrote: > On Wed, 11 Nov 2020 at 10:32, Serge Semin > wrote: > > > > On Wed, Nov 11, 2020 at 10:16:28AM +0100, Krzysztof Kozlowski 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 > > > > > > > > --- > > > > > > > > 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/dwc3.txt > > > > b/Documentation/devicetree/bindings/usb/dwc3.txt > > > > deleted file mode 100644 > > > > index d03edf9d3935.. > > > > --- a/Documentation/devicetree/bindings/usb/dwc3.txt > > > > +++ /dev/null > > > > @@ -1,125 +0,0 @@ > > > > -synopsys DWC3 CORE > > > > - > > > > -DWC3- USB3 CONTROLLER. Complies to the generic USB binding properties > > > > - as described in 'usb/generic.txt' > > > > - > > > > -Required properties: > > > > - - compatible: must be "snps,dwc3" > > > > - - reg : Address and length of the register set for the device > > > > - - interrupts: Interrupts used by the dwc3 controller. > > > > > > - - clock-names: list of clock names. Ideally should be "ref", > > > > -"bus_early", "suspend" but may be less or more. > > > > - - clocks: list of phandle and clock specifier pairs corresponding to > > > > - entries in the clock-names property. > > > > - > > > > -Exception for clocks: > > > > - clocks are optional if the parent node (i.e. glue-layer) is > > > > compatible to > > > > - one of the following: > > > > -"cavium,octeon-7130-usb-uctl" > > > > -"qcom,dwc3" > > > > -"samsung,exynos5250-dwusb3" > > > > -"samsung,exynos5433-dwusb3" > > > > -"samsung,exynos7-dwusb3" > > > > -"sprd,sc9860-dwc3" > > > > -"st,stih407-dwc3" > > > > -"ti,am437x-dwc3" > > > > -"ti,dwc3" > > > > -"ti,keystone-dwc3" > > > > -"rockchip,rk3399-dwc3" > > > > -"xlnx,zynqmp-dwc3" > > > > > > What happened with this part of dtschema? It sees you removed it. > > > > You meant "bindings", right? > > > > I don't think it's a good idea to implement that weak binding in the > > generic DWC USB3 DT schema. Of course I could have created it under > > the allOf conditional schema and stuff. But in that case we would have > > needed to support the clock-related vendor-specific peculiarities in > > both the generic DWC USB3 DT schema and in the vendor-specific binding > > files. That wouldn't be that maintainable. As I see it all the > > vendor-specific clock requirements should be reflected in the > > glue-node DT schema. The DWC USB3 node binding just declares the > > clocks as optional. Moreover the DWC USB3 driver also considers them > > as optional. > > Sure, rationale is good, but it needs to be explained in commit msg. > Otherwise you state that you just "convert" but it's not a simple > conversion. The meaning is changed. Right. I should have explained it in the commit log. It has just slipped out of my mind. If v3 is needed I'll add the proper text in the commit message. -Sergey > > > Best regards, > Krzysztof
Re: [PATCH v4 10/18] dt-bindings: usb: Convert DWC USB3 bindings to DT schema
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 > > --- > > 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/dwc3.txt > b/Documentation/devicetree/bindings/usb/dwc3.txt > deleted file mode 100644 > index d03edf9d3935.. > --- a/Documentation/devicetree/bindings/usb/dwc3.txt > +++ /dev/null > @@ -1,125 +0,0 @@ > -synopsys DWC3 CORE > - > -DWC3- USB3 CONTROLLER. Complies to the generic USB binding properties > - as described in 'usb/generic.txt' > - > -Required properties: > - - compatible: must be "snps,dwc3" > - - reg : Address and length of the register set for the device > - - interrupts: Interrupts used by the dwc3 controller. > - - clock-names: list of clock names. Ideally should be "ref", > -"bus_early", "suspend" but may be less or more. > - - clocks: list of phandle and clock specifier pairs corresponding to > - entries in the clock-names property. > - > -Exception for clocks: > - clocks are optional if the parent node (i.e. glue-layer) is compatible to > - one of the following: > -"cavium,octeon-7130-usb-uctl" > -"qcom,dwc3" > -"samsung,exynos5250-dwusb3" > -"samsung,exynos5433-dwusb3" > -"samsung,exynos7-dwusb3" > -"sprd,sc9860-dwc3" > -"st,stih407-dwc3" > -"ti,am437x-dwc3" > -"ti,dwc3" > -"ti,keystone-dwc3" > -"rockchip,rk3399-dwc3" > -"xlnx,zynqmp-dwc3" > - > -Optional properties: > - - usb-phy : array of phandle for the PHY device. The first element > - in the array is expected to be a handle to the USB2/HS PHY and > - the second element is expected to be a handle to the USB3/SS PHY > - - phys: from the *Generic PHY* bindings > - - phy-names: from the *Generic PHY* bindings; supported names are "usb2-phy" > - or "usb3-phy". > - - resets: set of phandle and reset specifier pairs > - - snps,usb2-lpm-disable: indicate if we don't want to enable USB2 HW LPM > - - snps,usb3_lpm_capable: determines if platform is USB3 LPM capable > - - snps,dis-start-transfer-quirk: when set, disable isoc START TRANSFER > command > - failure SW work-around for DWC_usb31 version 1.70a-ea06 > - and prior. > - - snps,disable_scramble_quirk: true when SW should disable data scrambling. > - Only really useful for FPGA builds. > - - snps,has-lpm-erratum: true when DWC3 was configured with LPM Erratum > enabled > - - snps,lpm-nyet-threshold: LPM NYET threshold > - - snps,u2exit_lfps_quirk: set if we want to enable u2exit lfps quirk > - - snps,u2ss_inp3_quirk: set if we enable P3 OK for U2/SS Inactive quirk > - - snps,req_p1p2p3_quirk: when set, the core will always request for > - P1/P2/P3 transition sequence. > - - snps,del_p1p2p3_quirk: when set core will delay P1/P2/P3 until a certain > - amount of 8B10B errors occur. > - - snps,del_phy_power_chg_quirk: when set core will delay PHY power change > - from P0 to P1/P2/P3. > - - snps,lfps_filter_quirk: when set core will filter LFPS reception. > - - snps,rx_detect_poll_quirk: when set core will disable a 400us delay to > start > - Polling LFPS after RX.Detect. > - - snps,tx_de_emphasis_quirk: when set core will set Tx de-emphasis value. > - - snps,tx_de_emphasis: the value driven to the PHY is con
Re: [PATCH v4 10/18] dt-bindings: usb: Convert DWC USB3 bindings to DT schema
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 > > > > --- > > > > 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/dwc3.txt > > b/Documentation/devicetree/bindings/usb/dwc3.txt > > deleted file mode 100644 > > index d03edf9d3935.. > > --- a/Documentation/devicetree/bindings/usb/dwc3.txt > > +++ /dev/null > > @@ -1,125 +0,0 @@ > > -synopsys DWC3 CORE > > - > > -DWC3- USB3 CONTROLLER. Complies to the generic USB binding properties > > - as described in 'usb/generic.txt' > > - > > -Required properties: > > - - compatible: must be "snps,dwc3" > > - - reg : Address and length of the register set for the device > > - - interrupts: Interrupts used by the dwc3 controller. > > - - clock-names: list of clock names. Ideally should be "ref", > > -"bus_early", "suspend" but may be less or more. > > - - clocks: list of phandle and clock specifier pairs corresponding to > > - entries in the clock-names property. > > - > > -Exception for clocks: > > - clocks are optional if the parent node (i.e. glue-layer) is compatible to > > - one of the following: > > -"cavium,octeon-7130-usb-uctl" > > -"qcom,dwc3" > > -"samsung,exynos5250-dwusb3" > > -"samsung,exynos5433-dwusb3" > > -"samsung,exynos7-dwusb3" > > -"sprd,sc9860-dwc3" > > -"st,stih407-dwc3" > > -"ti,am437x-dwc3" > > -"ti,dwc3" > > -"ti,keystone-dwc3" > > -"rockchip,rk3399-dwc3" > > -"xlnx,zynqmp-dwc3" > > - > > -Optional properties: > > - - usb-phy : array of phandle for the PHY device. The first element > > - in the array is expected to be a handle to the USB2/HS PHY and > > - the second element is expected to be a handle to the USB3/SS PHY > > - - phys: from the *Generic PHY* bindings > > - - phy-names: from the *Generic PHY* bindings; supported names are > > "usb2-phy" > > - or "usb3-phy". > > - - resets: set of phandle and reset specifier pairs > > - - snps,usb2-lpm-disable: indicate if we don't want to enable USB2 HW LPM > > - - snps,usb3_lpm_capable: determines if platform is USB3 LPM capable > > - - snps,dis-start-transfer-quirk: when set, disable isoc START TRANSFER > > command > > - failure SW work-around for DWC_usb31 version 1.70a-ea06 > > - and prior. > > - - snps,disable_scramble_quirk: true when SW should disable data > > scrambling. > > - Only really useful for FPGA builds. > > - - snps,has-lpm-erratum: true when DWC3 was configured with LPM Erratum > > enabled > > - - snps,lpm-nyet-threshold: LPM NYET threshold > > - - snps,u2exit_lfps_quirk: set if we want to enable u2exit lfps quirk > > - - snps,u2ss_inp3_quirk: set if we enable P3 OK for U2/SS Inactive quirk > > - - snps,req_p1p2p3_quirk: when set, the core will always request for > > - P1/P2/P3 transition sequence. > > - - snps,del_p1p2p3_quirk: when set core will delay P1/P2/P3 until a certain > > - amount of 8B10B errors occur. > > - - snps,del_phy_power_chg_quirk: when set core will delay PHY power change > > - from P0 to P1/P2/P3. > > - - snps,lfps_filter_quirk: when set core will filter LFPS reception. > > - - snps
Re: [PATCH v4 10/18] dt-bindings: usb: Convert DWC USB3 bindings to DT schema
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 > > > > > > --- > > > > > > 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 ..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 > > > + > > > +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'? If dr_mode is otg, then don't you need to apply both usb.yaml and usb-xhci.yaml? > > > +then: > > > + $ref: usb.yaml# > > > > This part could be done in usb-drd.yaml? > > Originally I was thinking about that, but then in order to minimize > the properties validation I've decided to split the properties in > accordance with the USB controllers functionality: > > +- USB Gadget/Peripheral Controller. There is no > | specific schema for the gadgets since there is no > | common gadget properties (at least I failed to find > | ones). So the pure gadget controllers need to be > | validated just against usb.yaml schema. > | > usb.yaml <--+-- usb-hcd.yaml - Generic USB Host Controller. The schema > ^ turns out to include the OHCI/UHCI/EHCI > | properties, which AFAICS are also > | applicable for the other host controllers. > | So any USB host controller node needs to > | be validated against this schema. > | > +- usb-xhci.yaml - Generic xHCI Host controller. > > usb-drd.yaml -- USB Dual-Role/OTG Controllers. It describes the > DRD/OTG-specific properties and nothing else. So normally > it should be applied together with one of the > schemas described above. > > So the use-cases of the suggested schemas is following: > > 1) USB Controller is pure gadget? Then: >+ allOf: >+ - $ref: usb.yaml# > 2) USB Controller is pure USB host (including OHCI/UHCI/EHCI)? >+ allOf: >+ - $ref: usb-hcd.yaml# >Note this prevents us from fixing all the currently available USB DT >schemas, which already apply the usb-hcd.yaml s
Re: [PATCH v4 10/18] dt-bindings: usb: Convert DWC USB3 bindings to DT schema
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 > > > > > > > > --- > > > > > > > > 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 ..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 > > > > + > > > > +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? + 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. -Sergey > > > > > +then: > > > > + $ref: usb.yaml# > > > > > > This part could be done in usb-drd.yaml? > > > > Originally I was thinking about that, but then in order to minimize > > the properties validation I've decided to split the properties in > > accordance with the USB controllers functionality: > > > > +- USB Gadget/Peripheral Controller. There is no > > | specific schema for the gadgets since there is no > > | common gadget properties (at least I failed to find > > | ones). So the pure gadget controllers need to be > > | validated just against usb.yaml schema. > > | > > usb.yaml <--+-- usb-hcd.yaml - Generic USB Host Controller. The schema > > ^ turns out to include the OHCI/UHCI/EHCI > > | properties, which AFAICS a
Re: [PATCH v4 10/18] dt-bindings: usb: Convert DWC USB3 bindings to DT schema
On Wed, Nov 25, 2020 at 1:32 AM Serge Semin 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 > > > > > > > > > > --- > > > > > > > > > > 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 ..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 > > > > > + > > > > > +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