* [PATCH v3 0/7] usb: dwc3: Calculate REFCLKPER et. al. from reference clock
@ 2022-01-27 20:06 Sean Anderson
2022-01-27 20:06 ` [PATCH v3 1/7] dt-bindings: usb: dwc3: Deprecate snps,ref-clock-period-ns Sean Anderson
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Sean Anderson @ 2022-01-27 20:06 UTC (permalink / raw)
To: Greg Kroah-Hartman, linux-usb
Cc: Robert Hancock, Baruch Siach, Felipe Balbi, Thinh Nguyen,
linux-kernel, Balaji Prakash J, Sean Anderson, Andy Gross,
Bjorn Andersson, Michal Simek, Rob Herring, devicetree,
linux-arm-kernel, linux-arm-msm
This is a rework of patches 3-5 of [1]. It attempts to correctly program
REFCLKPER and REFCLK_FLADJ based on the reference clock frequency. Since
we no longer need a special property duplicating this configuration,
snps,ref-clock-period-ns is deprecated.
Please test this! Patches 3/4 in this series have the effect of
programming REFCLKPER and REFCLK_FLADJ on boards which already configure
the "ref" clock. I have build tested, but not much else.
[1] https://lore.kernel.org/linux-usb/20220114044230.2677283-1-robert.hancock@calian.com/
Changes in v3:
- Define each variable on its own line
- Rebase onto linux/master
- Update comment to notes some things mentioned during review
Changes in v2:
- Add snps,ref-clock-frequency-hz property for ACPI
- Also program GFLADJ.240MHZDECR
- Document clock members
- Don't program GFLADJ if the version is < 2.50a
Sean Anderson (7):
dt-bindings: usb: dwc3: Deprecate snps,ref-clock-period-ns
usb: dwc3: Get clocks individually
usb: dwc3: Calculate REFCLKPER based on reference clock
usb: dwc3: Program GFLADJ
usb: dwc3: Add snps,ref-clock-frequency-hz property for ACPI
arm64: dts: zynqmp: Move USB clocks to dwc3 node
arm64: dts: ipq6018: Use reference clock to set dwc3 period
.../devicetree/bindings/usb/snps,dwc3.yaml | 7 +-
arch/arm64/boot/dts/qcom/ipq6018.dtsi | 3 +-
.../arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi | 4 +-
arch/arm64/boot/dts/xilinx/zynqmp.dtsi | 4 +-
drivers/usb/dwc3/core.c | 117 +++++++++++++++---
drivers/usb/dwc3/core.h | 17 ++-
6 files changed, 125 insertions(+), 27 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 1/7] dt-bindings: usb: dwc3: Deprecate snps,ref-clock-period-ns
2022-01-27 20:06 [PATCH v3 0/7] usb: dwc3: Calculate REFCLKPER et. al. from reference clock Sean Anderson
@ 2022-01-27 20:06 ` Sean Anderson
2022-02-07 21:27 ` Rob Herring
2022-01-27 20:06 ` [PATCH v3 6/7] arm64: dts: zynqmp: Move USB clocks to dwc3 node Sean Anderson
2022-01-27 20:06 ` [PATCH v3 7/7] arm64: dts: ipq6018: Use reference clock to set dwc3 period Sean Anderson
2 siblings, 1 reply; 5+ messages in thread
From: Sean Anderson @ 2022-01-27 20:06 UTC (permalink / raw)
To: Greg Kroah-Hartman, linux-usb
Cc: Robert Hancock, Baruch Siach, Felipe Balbi, Thinh Nguyen,
linux-kernel, Balaji Prakash J, Sean Anderson, Rob Herring,
devicetree
This property is redundant because we can determine the correct value for
REFCLKPER based on the "ref" clock. Deprecate it, and encourage users to
provide a clock instead. This also restricts the minimum and maximum to the
values documented in the register reference [1].
[1] https://www.xilinx.com/html_docs/registers/ug1087/usb3_xhci___guctl.html
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
---
(no changes since v1)
Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
index d29ffcd27472..4f2b0913ad9f 100644
--- a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
+++ b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
@@ -263,8 +263,11 @@ properties:
Value for REFCLKPER field of GUCTL register for reference clock period in
nanoseconds, when the hardware set default does not match the actual
clock.
- minimum: 1
- maximum: 0x3ff
+
+ This binding is deprecated. Instead, provide an appropriate reference clock.
+ minimum: 8
+ maximum: 62
+ deprecated: true
snps,rx-thr-num-pkt-prd:
description:
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v3 6/7] arm64: dts: zynqmp: Move USB clocks to dwc3 node
2022-01-27 20:06 [PATCH v3 0/7] usb: dwc3: Calculate REFCLKPER et. al. from reference clock Sean Anderson
2022-01-27 20:06 ` [PATCH v3 1/7] dt-bindings: usb: dwc3: Deprecate snps,ref-clock-period-ns Sean Anderson
@ 2022-01-27 20:06 ` Sean Anderson
2022-01-27 20:06 ` [PATCH v3 7/7] arm64: dts: ipq6018: Use reference clock to set dwc3 period Sean Anderson
2 siblings, 0 replies; 5+ messages in thread
From: Sean Anderson @ 2022-01-27 20:06 UTC (permalink / raw)
To: Greg Kroah-Hartman, linux-usb
Cc: Robert Hancock, Baruch Siach, Felipe Balbi, Thinh Nguyen,
linux-kernel, Balaji Prakash J, Sean Anderson, Michal Simek,
Rob Herring, devicetree, linux-arm-kernel
These clocks are not used by the dwc3-xilinx driver except to
enable/disable them. Move them to the dwc3 node so its driver can use
them to configure the reference clock period.
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Robert Hancock <robert.hancock@calian.com>
Tested-by: Robert Hancock <robert.hancock@calian.com>
---
(no changes since v1)
arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi | 4 ++--
arch/arm64/boot/dts/xilinx/zynqmp.dtsi | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi b/arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi
index 1e0b1bca7c94..8493dd7d5f1f 100644
--- a/arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi
+++ b/arch/arm64/boot/dts/xilinx/zynqmp-clk-ccf.dtsi
@@ -223,11 +223,11 @@ &uart1 {
clocks = <&zynqmp_clk UART1_REF>, <&zynqmp_clk LPD_LSBUS>;
};
-&usb0 {
+&dwc3_0 {
clocks = <&zynqmp_clk USB0_BUS_REF>, <&zynqmp_clk USB3_DUAL_REF>;
};
-&usb1 {
+&dwc3_1 {
clocks = <&zynqmp_clk USB1_BUS_REF>, <&zynqmp_clk USB3_DUAL_REF>;
};
diff --git a/arch/arm64/boot/dts/xilinx/zynqmp.dtsi b/arch/arm64/boot/dts/xilinx/zynqmp.dtsi
index 74e66443e4ce..ba68fb8529ee 100644
--- a/arch/arm64/boot/dts/xilinx/zynqmp.dtsi
+++ b/arch/arm64/boot/dts/xilinx/zynqmp.dtsi
@@ -811,7 +811,6 @@ usb0: usb@ff9d0000 {
status = "disabled";
compatible = "xlnx,zynqmp-dwc3";
reg = <0x0 0xff9d0000 0x0 0x100>;
- clock-names = "bus_clk", "ref_clk";
power-domains = <&zynqmp_firmware PD_USB_0>;
resets = <&zynqmp_reset ZYNQMP_RESET_USB0_CORERESET>,
<&zynqmp_reset ZYNQMP_RESET_USB0_HIBERRESET>,
@@ -825,6 +824,7 @@ dwc3_0: usb@fe200000 {
interrupt-parent = <&gic>;
interrupt-names = "dwc_usb3", "otg";
interrupts = <0 65 4>, <0 69 4>;
+ clock-names = "bus_early", "ref";
#stream-id-cells = <1>;
iommus = <&smmu 0x860>;
snps,quirk-frame-length-adjustment = <0x20>;
@@ -838,7 +838,6 @@ usb1: usb@ff9e0000 {
status = "disabled";
compatible = "xlnx,zynqmp-dwc3";
reg = <0x0 0xff9e0000 0x0 0x100>;
- clock-names = "bus_clk", "ref_clk";
power-domains = <&zynqmp_firmware PD_USB_1>;
resets = <&zynqmp_reset ZYNQMP_RESET_USB1_CORERESET>,
<&zynqmp_reset ZYNQMP_RESET_USB1_HIBERRESET>,
@@ -852,6 +851,7 @@ dwc3_1: usb@fe300000 {
interrupt-parent = <&gic>;
interrupt-names = "dwc_usb3", "otg";
interrupts = <0 70 4>, <0 74 4>;
+ clock-names = "bus_early", "ref";
#stream-id-cells = <1>;
iommus = <&smmu 0x861>;
snps,quirk-frame-length-adjustment = <0x20>;
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v3 7/7] arm64: dts: ipq6018: Use reference clock to set dwc3 period
2022-01-27 20:06 [PATCH v3 0/7] usb: dwc3: Calculate REFCLKPER et. al. from reference clock Sean Anderson
2022-01-27 20:06 ` [PATCH v3 1/7] dt-bindings: usb: dwc3: Deprecate snps,ref-clock-period-ns Sean Anderson
2022-01-27 20:06 ` [PATCH v3 6/7] arm64: dts: zynqmp: Move USB clocks to dwc3 node Sean Anderson
@ 2022-01-27 20:06 ` Sean Anderson
2 siblings, 0 replies; 5+ messages in thread
From: Sean Anderson @ 2022-01-27 20:06 UTC (permalink / raw)
To: Greg Kroah-Hartman, linux-usb
Cc: Robert Hancock, Baruch Siach, Felipe Balbi, Thinh Nguyen,
linux-kernel, Balaji Prakash J, Sean Anderson, Andy Gross,
Bjorn Andersson, Rob Herring, devicetree, linux-arm-msm
Instead of manually setting snps,ref-clock-period-ns, we can let the
driver calculate it automatically from the "ref" clock. I haven't
reviewed this board's schematics, so please let me know if this is the
wrong 24MHz clock to use.
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
---
(no changes since v1)
arch/arm64/boot/dts/qcom/ipq6018.dtsi | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/ipq6018.dtsi b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
index 66ec5615651d..a614b9f73e2c 100644
--- a/arch/arm64/boot/dts/qcom/ipq6018.dtsi
+++ b/arch/arm64/boot/dts/qcom/ipq6018.dtsi
@@ -743,12 +743,13 @@ dwc_0: usb@8A00000 {
interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
phys = <&qusb_phy_0>, <&usb0_ssphy>;
phy-names = "usb2-phy", "usb3-phy";
+ clocks = <&xo>;
+ clock-names = "ref";
tx-fifo-resize;
snps,is-utmi-l1-suspend;
snps,hird-threshold = /bits/ 8 <0x0>;
snps,dis_u2_susphy_quirk;
snps,dis_u3_susphy_quirk;
- snps,ref-clock-period-ns = <0x32>;
dr_mode = "host";
};
};
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v3 1/7] dt-bindings: usb: dwc3: Deprecate snps,ref-clock-period-ns
2022-01-27 20:06 ` [PATCH v3 1/7] dt-bindings: usb: dwc3: Deprecate snps,ref-clock-period-ns Sean Anderson
@ 2022-02-07 21:27 ` Rob Herring
0 siblings, 0 replies; 5+ messages in thread
From: Rob Herring @ 2022-02-07 21:27 UTC (permalink / raw)
To: Sean Anderson
Cc: linux-usb, Balaji Prakash J, Rob Herring, Felipe Balbi,
Robert Hancock, Greg Kroah-Hartman, devicetree, Baruch Siach,
linux-kernel, Thinh Nguyen
On Thu, 27 Jan 2022 15:06:30 -0500, Sean Anderson wrote:
> This property is redundant because we can determine the correct value for
> REFCLKPER based on the "ref" clock. Deprecate it, and encourage users to
> provide a clock instead. This also restricts the minimum and maximum to the
> values documented in the register reference [1].
>
> [1] https://www.xilinx.com/html_docs/registers/ug1087/usb3_xhci___guctl.html
>
> Signed-off-by: Sean Anderson <sean.anderson@seco.com>
> ---
>
> (no changes since v1)
>
> Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
Reviewed-by: Rob Herring <robh@kernel.org>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-02-07 21:28 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-27 20:06 [PATCH v3 0/7] usb: dwc3: Calculate REFCLKPER et. al. from reference clock Sean Anderson
2022-01-27 20:06 ` [PATCH v3 1/7] dt-bindings: usb: dwc3: Deprecate snps,ref-clock-period-ns Sean Anderson
2022-02-07 21:27 ` Rob Herring
2022-01-27 20:06 ` [PATCH v3 6/7] arm64: dts: zynqmp: Move USB clocks to dwc3 node Sean Anderson
2022-01-27 20:06 ` [PATCH v3 7/7] arm64: dts: ipq6018: Use reference clock to set dwc3 period Sean Anderson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).