* [PATCH 0/3] X1E GCC USB4 clock fix-ups
@ 2025-09-26 12:03 Konrad Dybcio
2025-09-26 12:03 ` [PATCH 1/3] dt-bindings: clock: qcom,x1e80100-gcc: Add missing USB4 clocks/resets Konrad Dybcio
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Konrad Dybcio @ 2025-09-26 12:03 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Rajendra Nayak, Konrad Dybcio,
Wesley Cheng, Bryan O'Donoghue, Sibi Sankar, Abel Vesa
Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Konrad Dybcio
Some of the USB4 clock infrastructure has been left undescribed.
Following the example of Glymur, add all the required muxes and resets.
These changes have passed a smoke test with their intended usecase.
Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
---
Konrad Dybcio (3):
dt-bindings: clock: qcom,x1e80100-gcc: Add missing USB4 clocks/resets
clk: qcom: gcc-x1e80100: Add missing USB4 clocks/resets
arm64: dts: qcom: x1e80100: Extend the gcc input clock list
.../bindings/clock/qcom,x1e80100-gcc.yaml | 62 +-
arch/arm64/boot/dts/qcom/x1e80100.dtsi | 29 +-
drivers/clk/qcom/gcc-x1e80100.c | 803 ++++++++++++++++++++-
include/dt-bindings/clock/qcom,x1e80100-gcc.h | 61 ++
4 files changed, 933 insertions(+), 22 deletions(-)
---
base-commit: 8e2755d7779a95dd61d8997ebce33ff8b1efd3fb
change-id: 20250926-topic-hamoa_gcc_usb4-35eb6741b141
Best regards,
--
Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH 1/3] dt-bindings: clock: qcom,x1e80100-gcc: Add missing USB4 clocks/resets 2025-09-26 12:03 [PATCH 0/3] X1E GCC USB4 clock fix-ups Konrad Dybcio @ 2025-09-26 12:03 ` Konrad Dybcio 2025-09-27 10:40 ` Bryan O'Donoghue 2025-10-02 2:26 ` Rob Herring (Arm) 2025-09-26 12:03 ` [PATCH 2/3] clk: qcom: gcc-x1e80100: " Konrad Dybcio 2025-09-26 12:03 ` [PATCH 3/3] arm64: dts: qcom: x1e80100: Extend the gcc input clock list Konrad Dybcio 2 siblings, 2 replies; 10+ messages in thread From: Konrad Dybcio @ 2025-09-26 12:03 UTC (permalink / raw) To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Rajendra Nayak, Konrad Dybcio, Wesley Cheng, Bryan O'Donoghue, Sibi Sankar, Abel Vesa Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Konrad Dybcio From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Some of the USB4 muxes, RCGs and resets were not initially described. Add indices for them to allow extending the driver. Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> --- .../bindings/clock/qcom,x1e80100-gcc.yaml | 62 ++++++++++++++++++++-- include/dt-bindings/clock/qcom,x1e80100-gcc.h | 61 +++++++++++++++++++++ 2 files changed, 119 insertions(+), 4 deletions(-) diff --git a/Documentation/devicetree/bindings/clock/qcom,x1e80100-gcc.yaml b/Documentation/devicetree/bindings/clock/qcom,x1e80100-gcc.yaml index 68dde0720c711320aa0e7c74040cf3c4422dda72..1b15b507095455c93b1ba39404cafbb6f96be5a9 100644 --- a/Documentation/devicetree/bindings/clock/qcom,x1e80100-gcc.yaml +++ b/Documentation/devicetree/bindings/clock/qcom,x1e80100-gcc.yaml @@ -32,9 +32,36 @@ properties: - description: PCIe 5 pipe clock - description: PCIe 6a pipe clock - description: PCIe 6b pipe clock - - description: USB QMP Phy 0 clock source - - description: USB QMP Phy 1 clock source - - description: USB QMP Phy 2 clock source + - description: USB4_0 QMPPHY clock source + - description: USB4_1 QMPPHY clock source + - description: USB4_2 QMPPHY clock source + - description: USB4_0 PHY DP0 GMUX clock source + - description: USB4_0 PHY DP1 GMUX clock source + - description: USB4_0 PHY PCIE PIPEGMUX clock source + - description: USB4_0 PHY PIPEGMUX clock source + - description: USB4_0 PHY SYS PCIE PIPEGMUX clock source + - description: USB4_1 PHY DP0 GMUX 2 clock source + - description: USB4_1 PHY DP1 GMUX 2 clock source + - description: USB4_1 PHY PCIE PIPEGMUX clock source + - description: USB4_1 PHY PIPEGMUX clock source + - description: USB4_1 PHY SYS PCIE PIPEGMUX clock source + - description: USB4_2 PHY DP0 GMUX 2 clock source + - description: USB4_2 PHY DP1 GMUX 2 clock source + - description: USB4_2 PHY PCIE PIPEGMUX clock source + - description: USB4_2 PHY PIPEGMUX clock source + - description: USB4_2 PHY SYS PCIE PIPEGMUX clock source + - description: USB4_0 PHY RX 0 clock source + - description: USB4_0 PHY RX 1 clock source + - description: USB4_1 PHY RX 0 clock source + - description: USB4_1 PHY RX 1 clock source + - description: USB4_2 PHY RX 0 clock source + - description: USB4_2 PHY RX 1 clock source + - description: USB4_0 PHY PCIE PIPE clock source + - description: USB4_0 PHY max PIPE clock source + - description: USB4_1 PHY PCIE PIPE clock source + - description: USB4_1 PHY max PIPE clock source + - description: USB4_2 PHY PCIE PIPE clock source + - description: USB4_2 PHY max PIPE clock source power-domains: description: @@ -67,7 +94,34 @@ examples: <&pcie6b_phy>, <&usb_1_ss0_qmpphy 0>, <&usb_1_ss1_qmpphy 1>, - <&usb_1_ss2_qmpphy 2>; + <&usb_1_ss2_qmpphy 2>, + <&usb4_0_phy_dp0_gmux_clk>, + <&usb4_0_phy_dp1_gmux_clk>, + <&usb4_0_phy_pcie_pipegmux_clk>, + <&usb4_0_phy_pipegmux_clk>, + <&usb4_0_phy_sys_pcie_pipegmux_clk>, + <&usb4_1_phy_dp0_gmux_2_clk>, + <&usb4_1_phy_dp1_gmux_2_clk>, + <&usb4_1_phy_pcie_pipegmux_clk>, + <&usb4_1_phy_pipegmux_clk>, + <&usb4_1_phy_sys_pcie_pipegmux_clk>, + <&usb4_2_phy_dp0_gmux_2_clk>, + <&usb4_2_phy_dp1_gmux_2_clk>, + <&usb4_2_phy_pcie_pipegmux_clk>, + <&usb4_2_phy_pipegmux_clk>, + <&usb4_2_phy_sys_pcie_pipegmux_clk>, + <&usb4_0_phy_rx_0_clk>, + <&usb4_0_phy_rx_1_clk>, + <&usb4_1_phy_rx_0_clk>, + <&usb4_1_phy_rx_1_clk>, + <&usb4_2_phy_rx_0_clk>, + <&usb4_2_phy_rx_1_clk>, + <&usb4_0_phy_pcie_pipe_clk>, + <&usb4_0_phy_max_pipe_clk>, + <&usb4_1_phy_pcie_pipe_clk>, + <&usb4_1_phy_max_pipe_clk>, + <&usb4_2_phy_pcie_pipe_clk>, + <&usb4_2_phy_max_pipe_clk>; power-domains = <&rpmhpd RPMHPD_CX>; #clock-cells = <1>; #reset-cells = <1>; diff --git a/include/dt-bindings/clock/qcom,x1e80100-gcc.h b/include/dt-bindings/clock/qcom,x1e80100-gcc.h index 710c340f24a57d799ac04650fbe9d4ea0f294bde..62aa1242559270dd3bd31cd10322ee265468b8e4 100644 --- a/include/dt-bindings/clock/qcom,x1e80100-gcc.h +++ b/include/dt-bindings/clock/qcom,x1e80100-gcc.h @@ -363,6 +363,30 @@ #define GCC_USB3_PRIM_PHY_PIPE_CLK_SRC 353 #define GCC_USB3_SEC_PHY_PIPE_CLK_SRC 354 #define GCC_USB3_TERT_PHY_PIPE_CLK_SRC 355 +#define GCC_USB34_PRIM_PHY_PIPE_CLK_SRC 356 +#define GCC_USB34_SEC_PHY_PIPE_CLK_SRC 357 +#define GCC_USB34_TERT_PHY_PIPE_CLK_SRC 358 +#define GCC_USB4_0_PHY_DP0_CLK_SRC 359 +#define GCC_USB4_0_PHY_DP1_CLK_SRC 360 +#define GCC_USB4_0_PHY_P2RR2P_PIPE_CLK_SRC 361 +#define GCC_USB4_0_PHY_PCIE_PIPE_MUX_CLK_SRC 362 +#define GCC_USB4_0_PHY_RX0_CLK_SRC 363 +#define GCC_USB4_0_PHY_RX1_CLK_SRC 364 +#define GCC_USB4_0_PHY_SYS_CLK_SRC 365 +#define GCC_USB4_1_PHY_DP0_CLK_SRC 366 +#define GCC_USB4_1_PHY_DP1_CLK_SRC 367 +#define GCC_USB4_1_PHY_P2RR2P_PIPE_CLK_SRC 368 +#define GCC_USB4_1_PHY_PCIE_PIPE_MUX_CLK_SRC 369 +#define GCC_USB4_1_PHY_RX0_CLK_SRC 370 +#define GCC_USB4_1_PHY_RX1_CLK_SRC 371 +#define GCC_USB4_1_PHY_SYS_CLK_SRC 372 +#define GCC_USB4_2_PHY_DP0_CLK_SRC 373 +#define GCC_USB4_2_PHY_DP1_CLK_SRC 374 +#define GCC_USB4_2_PHY_P2RR2P_PIPE_CLK_SRC 375 +#define GCC_USB4_2_PHY_PCIE_PIPE_MUX_CLK_SRC 376 +#define GCC_USB4_2_PHY_RX0_CLK_SRC 377 +#define GCC_USB4_2_PHY_RX1_CLK_SRC 378 +#define GCC_USB4_2_PHY_SYS_CLK_SRC 379 /* GCC power domains */ #define GCC_PCIE_0_TUNNEL_GDSC 0 @@ -484,4 +508,41 @@ #define GCC_VIDEO_BCR 87 #define GCC_VIDEO_AXI0_CLK_ARES 88 #define GCC_VIDEO_AXI1_CLK_ARES 89 +#define GCC_USB4_0_MISC_USB4_SYS_BCR 90 +#define GCC_USB4_0_MISC_RX_CLK_0_BCR 91 +#define GCC_USB4_0_MISC_RX_CLK_1_BCR 92 +#define GCC_USB4_0_MISC_USB_PIPE_BCR 93 +#define GCC_USB4_0_MISC_PCIE_PIPE_BCR 94 +#define GCC_USB4_0_MISC_TMU_BCR 95 +#define GCC_USB4_0_MISC_SB_IF_BCR 96 +#define GCC_USB4_0_MISC_HIA_MSTR_BCR 97 +#define GCC_USB4_0_MISC_AHB_BCR 98 +#define GCC_USB4_0_MISC_DP0_MAX_PCLK_BCR 99 +#define GCC_USB4_0_MISC_DP1_MAX_PCLK_BCR 100 +#define GCC_USB4_1_MISC_USB4_SYS_BCR 101 +#define GCC_USB4_1_MISC_RX_CLK_0_BCR 102 +#define GCC_USB4_1_MISC_RX_CLK_1_BCR 103 +#define GCC_USB4_1_MISC_USB_PIPE_BCR 104 +#define GCC_USB4_1_MISC_PCIE_PIPE_BCR 105 +#define GCC_USB4_1_MISC_TMU_BCR 106 +#define GCC_USB4_1_MISC_SB_IF_BCR 107 +#define GCC_USB4_1_MISC_HIA_MSTR_BCR 108 +#define GCC_USB4_1_MISC_AHB_BCR 109 +#define GCC_USB4_1_MISC_DP0_MAX_PCLK_BCR 110 +#define GCC_USB4_1_MISC_DP1_MAX_PCLK_BCR 111 +#define GCC_USB4_2_MISC_USB4_SYS_BCR 112 +#define GCC_USB4_2_MISC_RX_CLK_0_BCR 113 +#define GCC_USB4_2_MISC_RX_CLK_1_BCR 114 +#define GCC_USB4_2_MISC_USB_PIPE_BCR 115 +#define GCC_USB4_2_MISC_PCIE_PIPE_BCR 116 +#define GCC_USB4_2_MISC_TMU_BCR 117 +#define GCC_USB4_2_MISC_SB_IF_BCR 118 +#define GCC_USB4_2_MISC_HIA_MSTR_BCR 119 +#define GCC_USB4_2_MISC_AHB_BCR 120 +#define GCC_USB4_2_MISC_DP0_MAX_PCLK_BCR 121 +#define GCC_USB4_2_MISC_DP1_MAX_PCLK_BCR 122 +#define GCC_USB4PHY_PHY_PRIM_BCR 123 +#define GCC_USB4PHY_PHY_SEC_BCR 124 +#define GCC_USB4PHY_PHY_TERT_BCR 125 + #endif -- 2.51.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/3] dt-bindings: clock: qcom,x1e80100-gcc: Add missing USB4 clocks/resets 2025-09-26 12:03 ` [PATCH 1/3] dt-bindings: clock: qcom,x1e80100-gcc: Add missing USB4 clocks/resets Konrad Dybcio @ 2025-09-27 10:40 ` Bryan O'Donoghue 2025-10-02 2:26 ` Rob Herring (Arm) 1 sibling, 0 replies; 10+ messages in thread From: Bryan O'Donoghue @ 2025-09-27 10:40 UTC (permalink / raw) To: Konrad Dybcio, Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Rajendra Nayak, Wesley Cheng, Sibi Sankar, Abel Vesa Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Konrad Dybcio On 26/09/2025 13:03, Konrad Dybcio wrote: > From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > > Some of the USB4 muxes, RCGs and resets were not initially described. > > Add indices for them to allow extending the driver. > > Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > --- > .../bindings/clock/qcom,x1e80100-gcc.yaml | 62 ++++++++++++++++++++-- > include/dt-bindings/clock/qcom,x1e80100-gcc.h | 61 +++++++++++++++++++++ > 2 files changed, 119 insertions(+), 4 deletions(-) > > diff --git a/Documentation/devicetree/bindings/clock/qcom,x1e80100-gcc.yaml b/Documentation/devicetree/bindings/clock/qcom,x1e80100-gcc.yaml > index 68dde0720c711320aa0e7c74040cf3c4422dda72..1b15b507095455c93b1ba39404cafbb6f96be5a9 100644 > --- a/Documentation/devicetree/bindings/clock/qcom,x1e80100-gcc.yaml > +++ b/Documentation/devicetree/bindings/clock/qcom,x1e80100-gcc.yaml > @@ -32,9 +32,36 @@ properties: > - description: PCIe 5 pipe clock > - description: PCIe 6a pipe clock > - description: PCIe 6b pipe clock > - - description: USB QMP Phy 0 clock source > - - description: USB QMP Phy 1 clock source > - - description: USB QMP Phy 2 clock source > + - description: USB4_0 QMPPHY clock source > + - description: USB4_1 QMPPHY clock source > + - description: USB4_2 QMPPHY clock source > + - description: USB4_0 PHY DP0 GMUX clock source > + - description: USB4_0 PHY DP1 GMUX clock source > + - description: USB4_0 PHY PCIE PIPEGMUX clock source > + - description: USB4_0 PHY PIPEGMUX clock source > + - description: USB4_0 PHY SYS PCIE PIPEGMUX clock source > + - description: USB4_1 PHY DP0 GMUX 2 clock source > + - description: USB4_1 PHY DP1 GMUX 2 clock source > + - description: USB4_1 PHY PCIE PIPEGMUX clock source > + - description: USB4_1 PHY PIPEGMUX clock source > + - description: USB4_1 PHY SYS PCIE PIPEGMUX clock source > + - description: USB4_2 PHY DP0 GMUX 2 clock source > + - description: USB4_2 PHY DP1 GMUX 2 clock source > + - description: USB4_2 PHY PCIE PIPEGMUX clock source > + - description: USB4_2 PHY PIPEGMUX clock source > + - description: USB4_2 PHY SYS PCIE PIPEGMUX clock source > + - description: USB4_0 PHY RX 0 clock source > + - description: USB4_0 PHY RX 1 clock source > + - description: USB4_1 PHY RX 0 clock source > + - description: USB4_1 PHY RX 1 clock source > + - description: USB4_2 PHY RX 0 clock source > + - description: USB4_2 PHY RX 1 clock source > + - description: USB4_0 PHY PCIE PIPE clock source > + - description: USB4_0 PHY max PIPE clock source > + - description: USB4_1 PHY PCIE PIPE clock source > + - description: USB4_1 PHY max PIPE clock source > + - description: USB4_2 PHY PCIE PIPE clock source > + - description: USB4_2 PHY max PIPE clock source > > power-domains: > description: > @@ -67,7 +94,34 @@ examples: > <&pcie6b_phy>, > <&usb_1_ss0_qmpphy 0>, > <&usb_1_ss1_qmpphy 1>, > - <&usb_1_ss2_qmpphy 2>; > + <&usb_1_ss2_qmpphy 2>, > + <&usb4_0_phy_dp0_gmux_clk>, > + <&usb4_0_phy_dp1_gmux_clk>, > + <&usb4_0_phy_pcie_pipegmux_clk>, > + <&usb4_0_phy_pipegmux_clk>, > + <&usb4_0_phy_sys_pcie_pipegmux_clk>, > + <&usb4_1_phy_dp0_gmux_2_clk>, > + <&usb4_1_phy_dp1_gmux_2_clk>, > + <&usb4_1_phy_pcie_pipegmux_clk>, > + <&usb4_1_phy_pipegmux_clk>, > + <&usb4_1_phy_sys_pcie_pipegmux_clk>, > + <&usb4_2_phy_dp0_gmux_2_clk>, > + <&usb4_2_phy_dp1_gmux_2_clk>, > + <&usb4_2_phy_pcie_pipegmux_clk>, > + <&usb4_2_phy_pipegmux_clk>, > + <&usb4_2_phy_sys_pcie_pipegmux_clk>, > + <&usb4_0_phy_rx_0_clk>, > + <&usb4_0_phy_rx_1_clk>, > + <&usb4_1_phy_rx_0_clk>, > + <&usb4_1_phy_rx_1_clk>, > + <&usb4_2_phy_rx_0_clk>, > + <&usb4_2_phy_rx_1_clk>, > + <&usb4_0_phy_pcie_pipe_clk>, > + <&usb4_0_phy_max_pipe_clk>, > + <&usb4_1_phy_pcie_pipe_clk>, > + <&usb4_1_phy_max_pipe_clk>, > + <&usb4_2_phy_pcie_pipe_clk>, > + <&usb4_2_phy_max_pipe_clk>; > power-domains = <&rpmhpd RPMHPD_CX>; > #clock-cells = <1>; > #reset-cells = <1>; > diff --git a/include/dt-bindings/clock/qcom,x1e80100-gcc.h b/include/dt-bindings/clock/qcom,x1e80100-gcc.h > index 710c340f24a57d799ac04650fbe9d4ea0f294bde..62aa1242559270dd3bd31cd10322ee265468b8e4 100644 > --- a/include/dt-bindings/clock/qcom,x1e80100-gcc.h > +++ b/include/dt-bindings/clock/qcom,x1e80100-gcc.h > @@ -363,6 +363,30 @@ > #define GCC_USB3_PRIM_PHY_PIPE_CLK_SRC 353 > #define GCC_USB3_SEC_PHY_PIPE_CLK_SRC 354 > #define GCC_USB3_TERT_PHY_PIPE_CLK_SRC 355 > +#define GCC_USB34_PRIM_PHY_PIPE_CLK_SRC 356 > +#define GCC_USB34_SEC_PHY_PIPE_CLK_SRC 357 > +#define GCC_USB34_TERT_PHY_PIPE_CLK_SRC 358 > +#define GCC_USB4_0_PHY_DP0_CLK_SRC 359 > +#define GCC_USB4_0_PHY_DP1_CLK_SRC 360 > +#define GCC_USB4_0_PHY_P2RR2P_PIPE_CLK_SRC 361 > +#define GCC_USB4_0_PHY_PCIE_PIPE_MUX_CLK_SRC 362 > +#define GCC_USB4_0_PHY_RX0_CLK_SRC 363 > +#define GCC_USB4_0_PHY_RX1_CLK_SRC 364 > +#define GCC_USB4_0_PHY_SYS_CLK_SRC 365 > +#define GCC_USB4_1_PHY_DP0_CLK_SRC 366 > +#define GCC_USB4_1_PHY_DP1_CLK_SRC 367 > +#define GCC_USB4_1_PHY_P2RR2P_PIPE_CLK_SRC 368 > +#define GCC_USB4_1_PHY_PCIE_PIPE_MUX_CLK_SRC 369 > +#define GCC_USB4_1_PHY_RX0_CLK_SRC 370 > +#define GCC_USB4_1_PHY_RX1_CLK_SRC 371 > +#define GCC_USB4_1_PHY_SYS_CLK_SRC 372 > +#define GCC_USB4_2_PHY_DP0_CLK_SRC 373 > +#define GCC_USB4_2_PHY_DP1_CLK_SRC 374 > +#define GCC_USB4_2_PHY_P2RR2P_PIPE_CLK_SRC 375 > +#define GCC_USB4_2_PHY_PCIE_PIPE_MUX_CLK_SRC 376 > +#define GCC_USB4_2_PHY_RX0_CLK_SRC 377 > +#define GCC_USB4_2_PHY_RX1_CLK_SRC 378 > +#define GCC_USB4_2_PHY_SYS_CLK_SRC 379 > > /* GCC power domains */ > #define GCC_PCIE_0_TUNNEL_GDSC 0 > @@ -484,4 +508,41 @@ > #define GCC_VIDEO_BCR 87 > #define GCC_VIDEO_AXI0_CLK_ARES 88 > #define GCC_VIDEO_AXI1_CLK_ARES 89 > +#define GCC_USB4_0_MISC_USB4_SYS_BCR 90 > +#define GCC_USB4_0_MISC_RX_CLK_0_BCR 91 > +#define GCC_USB4_0_MISC_RX_CLK_1_BCR 92 > +#define GCC_USB4_0_MISC_USB_PIPE_BCR 93 > +#define GCC_USB4_0_MISC_PCIE_PIPE_BCR 94 > +#define GCC_USB4_0_MISC_TMU_BCR 95 > +#define GCC_USB4_0_MISC_SB_IF_BCR 96 > +#define GCC_USB4_0_MISC_HIA_MSTR_BCR 97 > +#define GCC_USB4_0_MISC_AHB_BCR 98 > +#define GCC_USB4_0_MISC_DP0_MAX_PCLK_BCR 99 > +#define GCC_USB4_0_MISC_DP1_MAX_PCLK_BCR 100 > +#define GCC_USB4_1_MISC_USB4_SYS_BCR 101 > +#define GCC_USB4_1_MISC_RX_CLK_0_BCR 102 > +#define GCC_USB4_1_MISC_RX_CLK_1_BCR 103 > +#define GCC_USB4_1_MISC_USB_PIPE_BCR 104 > +#define GCC_USB4_1_MISC_PCIE_PIPE_BCR 105 > +#define GCC_USB4_1_MISC_TMU_BCR 106 > +#define GCC_USB4_1_MISC_SB_IF_BCR 107 > +#define GCC_USB4_1_MISC_HIA_MSTR_BCR 108 > +#define GCC_USB4_1_MISC_AHB_BCR 109 > +#define GCC_USB4_1_MISC_DP0_MAX_PCLK_BCR 110 > +#define GCC_USB4_1_MISC_DP1_MAX_PCLK_BCR 111 > +#define GCC_USB4_2_MISC_USB4_SYS_BCR 112 > +#define GCC_USB4_2_MISC_RX_CLK_0_BCR 113 > +#define GCC_USB4_2_MISC_RX_CLK_1_BCR 114 > +#define GCC_USB4_2_MISC_USB_PIPE_BCR 115 > +#define GCC_USB4_2_MISC_PCIE_PIPE_BCR 116 > +#define GCC_USB4_2_MISC_TMU_BCR 117 > +#define GCC_USB4_2_MISC_SB_IF_BCR 118 > +#define GCC_USB4_2_MISC_HIA_MSTR_BCR 119 > +#define GCC_USB4_2_MISC_AHB_BCR 120 > +#define GCC_USB4_2_MISC_DP0_MAX_PCLK_BCR 121 > +#define GCC_USB4_2_MISC_DP1_MAX_PCLK_BCR 122 > +#define GCC_USB4PHY_PHY_PRIM_BCR 123 > +#define GCC_USB4PHY_PHY_SEC_BCR 124 > +#define GCC_USB4PHY_PHY_TERT_BCR 125 > + > #endif > Reviewed-by: Bryan O'Donoghue <bod@kernel.org> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/3] dt-bindings: clock: qcom,x1e80100-gcc: Add missing USB4 clocks/resets 2025-09-26 12:03 ` [PATCH 1/3] dt-bindings: clock: qcom,x1e80100-gcc: Add missing USB4 clocks/resets Konrad Dybcio 2025-09-27 10:40 ` Bryan O'Donoghue @ 2025-10-02 2:26 ` Rob Herring (Arm) 1 sibling, 0 replies; 10+ messages in thread From: Rob Herring (Arm) @ 2025-10-02 2:26 UTC (permalink / raw) To: Konrad Dybcio Cc: Stephen Boyd, linux-arm-msm, Michael Turquette, Bjorn Andersson, linux-kernel, linux-clk, Konrad Dybcio, Krzysztof Kozlowski, devicetree, Wesley Cheng, Sibi Sankar, Bryan O'Donoghue, Rajendra Nayak, Conor Dooley, Abel Vesa On Fri, 26 Sep 2025 14:03:45 +0200, Konrad Dybcio wrote: > From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > > Some of the USB4 muxes, RCGs and resets were not initially described. > > Add indices for them to allow extending the driver. > > Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > --- > .../bindings/clock/qcom,x1e80100-gcc.yaml | 62 ++++++++++++++++++++-- > include/dt-bindings/clock/qcom,x1e80100-gcc.h | 61 +++++++++++++++++++++ > 2 files changed, 119 insertions(+), 4 deletions(-) > Acked-by: Rob Herring (Arm) <robh@kernel.org> ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/3] clk: qcom: gcc-x1e80100: Add missing USB4 clocks/resets 2025-09-26 12:03 [PATCH 0/3] X1E GCC USB4 clock fix-ups Konrad Dybcio 2025-09-26 12:03 ` [PATCH 1/3] dt-bindings: clock: qcom,x1e80100-gcc: Add missing USB4 clocks/resets Konrad Dybcio @ 2025-09-26 12:03 ` Konrad Dybcio 2025-09-27 10:42 ` Bryan O'Donoghue 2025-09-27 14:01 ` kernel test robot 2025-09-26 12:03 ` [PATCH 3/3] arm64: dts: qcom: x1e80100: Extend the gcc input clock list Konrad Dybcio 2 siblings, 2 replies; 10+ messages in thread From: Konrad Dybcio @ 2025-09-26 12:03 UTC (permalink / raw) To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Rajendra Nayak, Konrad Dybcio, Wesley Cheng, Bryan O'Donoghue, Sibi Sankar, Abel Vesa Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Konrad Dybcio From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Currently, some of the USB4 clocks/resets are described, but not all of the back-end muxes are present. Configuring them properly is necessary for proper operation of the hardware. Add all the resets & muxes and wire up any unaccounted USB4 clock paths. Fixes: 161b7c401f4b ("clk: qcom: Add Global Clock controller (GCC) driver for X1E80100") Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> --- drivers/clk/qcom/gcc-x1e80100.c | 803 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 786 insertions(+), 17 deletions(-) diff --git a/drivers/clk/qcom/gcc-x1e80100.c b/drivers/clk/qcom/gcc-x1e80100.c index 301fc9fc32d8e6e1ddf59c1d3350d84f6c06e4b6..1f866fb4a53ad4cca51d586e92aa96acab58ef0b 100644 --- a/drivers/clk/qcom/gcc-x1e80100.c +++ b/drivers/clk/qcom/gcc-x1e80100.c @@ -32,6 +32,33 @@ enum { DT_USB3_PHY_0_WRAPPER_GCC_USB30_PIPE, DT_USB3_PHY_1_WRAPPER_GCC_USB30_PIPE, DT_USB3_PHY_2_WRAPPER_GCC_USB30_PIPE, + DT_GCC_USB4_0_PHY_DP0_GMUX_CLK_SRC, + DT_GCC_USB4_0_PHY_DP1_GMUX_CLK_SRC, + DT_GCC_USB4_0_PHY_PCIE_PIPEGMUX_CLK_SRC, + DT_GCC_USB4_0_PHY_PIPEGMUX_CLK_SRC, + DT_GCC_USB4_0_PHY_SYS_PIPEGMUX_CLK_SRC, + DT_GCC_USB4_1_PHY_DP0_GMUX_CLK_SRC, + DT_GCC_USB4_1_PHY_DP1_GMUX_CLK_SRC, + DT_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC, + DT_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC, + DT_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, + DT_GCC_USB4_2_PHY_DP0_GMUX_CLK_SRC, + DT_GCC_USB4_2_PHY_DP1_GMUX_CLK_SRC, + DT_GCC_USB4_2_PHY_PCIE_PIPEGMUX_CLK_SRC, + DT_GCC_USB4_2_PHY_PIPEGMUX_CLK_SRC, + DT_GCC_USB4_2_PHY_SYS_PIPEGMUX_CLK_SRC, + DT_QUSB4PHY_0_GCC_USB4_RX0_CLK, + DT_QUSB4PHY_0_GCC_USB4_RX1_CLK, + DT_QUSB4PHY_1_GCC_USB4_RX0_CLK, + DT_QUSB4PHY_1_GCC_USB4_RX1_CLK, + DT_QUSB4PHY_2_GCC_USB4_RX0_CLK, + DT_QUSB4PHY_2_GCC_USB4_RX1_CLK, + DT_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK, + DT_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK, + DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, + DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, + DT_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK, + DT_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK, }; enum { @@ -42,10 +69,40 @@ enum { P_GCC_GPLL7_OUT_MAIN, P_GCC_GPLL8_OUT_MAIN, P_GCC_GPLL9_OUT_MAIN, + P_GCC_USB3_PRIM_PHY_PIPE_CLK_SRC, + P_GCC_USB3_SEC_PHY_PIPE_CLK_SRC, + P_GCC_USB3_TERT_PHY_PIPE_CLK_SRC, + P_GCC_USB4_0_PHY_DP0_GMUX_CLK_SRC, + P_GCC_USB4_0_PHY_DP1_GMUX_CLK_SRC, + P_GCC_USB4_0_PHY_PCIE_PIPEGMUX_CLK_SRC, + P_GCC_USB4_0_PHY_PIPEGMUX_CLK_SRC, + P_GCC_USB4_0_PHY_SYS_PIPEGMUX_CLK_SRC, + P_GCC_USB4_1_PHY_DP0_GMUX_CLK_SRC, + P_GCC_USB4_1_PHY_DP1_GMUX_CLK_SRC, + P_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC, + P_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC, + P_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, + P_GCC_USB4_2_PHY_DP0_GMUX_CLK_SRC, + P_GCC_USB4_2_PHY_DP1_GMUX_CLK_SRC, + P_GCC_USB4_2_PHY_PCIE_PIPEGMUX_CLK_SRC, + P_GCC_USB4_2_PHY_PIPEGMUX_CLK_SRC, + P_GCC_USB4_2_PHY_SYS_PIPEGMUX_CLK_SRC, + P_QUSB4PHY_0_GCC_USB4_RX0_CLK, + P_QUSB4PHY_0_GCC_USB4_RX1_CLK, + P_QUSB4PHY_1_GCC_USB4_RX0_CLK, + P_QUSB4PHY_1_GCC_USB4_RX1_CLK, + P_QUSB4PHY_2_GCC_USB4_RX0_CLK, + P_QUSB4PHY_2_GCC_USB4_RX1_CLK, P_SLEEP_CLK, P_USB3_PHY_0_WRAPPER_GCC_USB30_PIPE_CLK, P_USB3_PHY_1_WRAPPER_GCC_USB30_PIPE_CLK, P_USB3_PHY_2_WRAPPER_GCC_USB30_PIPE_CLK, + P_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK, + P_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK, + P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, + P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, + P_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK, + P_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK, }; static struct clk_alpha_pll gcc_gpll0 = { @@ -320,6 +377,447 @@ static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = { { } }; +static const struct parent_map gcc_parent_map_13[] = { + { P_GCC_USB4_0_PHY_DP0_GMUX_CLK_SRC, 0 }, + { P_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_13[] = { + { .index = DT_GCC_USB4_0_PHY_DP0_GMUX_CLK_SRC }, + { .index = DT_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, +}; + +static const struct parent_map gcc_parent_map_14[] = { + { P_GCC_USB4_0_PHY_DP1_GMUX_CLK_SRC, 0 }, + { P_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_14[] = { + { .index = DT_GCC_USB4_0_PHY_DP1_GMUX_CLK_SRC }, + { .index = DT_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, +}; + +static const struct parent_map gcc_parent_map_15[] = { + { P_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 }, + { P_BI_TCXO, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_15[] = { + { .index = DT_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK }, + { .index = DT_BI_TCXO }, +}; + +static const struct parent_map gcc_parent_map_16[] = { + { P_GCC_USB4_0_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 }, + { P_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK, 1 }, +}; + +static const struct clk_parent_data gcc_parent_data_16[] = { + { .index = DT_GCC_USB4_0_PHY_PCIE_PIPEGMUX_CLK_SRC }, + { .index = DT_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK }, +}; + +static const struct parent_map gcc_parent_map_17[] = { + { P_QUSB4PHY_0_GCC_USB4_RX0_CLK, 0 }, + { P_BI_TCXO, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_17[] = { + { .index = DT_QUSB4PHY_0_GCC_USB4_RX0_CLK }, + { .index = DT_BI_TCXO }, +}; + +static const struct parent_map gcc_parent_map_18[] = { + { P_QUSB4PHY_0_GCC_USB4_RX1_CLK, 0 }, + { P_BI_TCXO, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_18[] = { + { .index = DT_QUSB4PHY_0_GCC_USB4_RX1_CLK }, + { .index = DT_BI_TCXO }, +}; + +static const struct parent_map gcc_parent_map_19[] = { + { P_GCC_USB4_0_PHY_SYS_PIPEGMUX_CLK_SRC, 0 }, + { P_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_19[] = { + { .index = DT_GCC_USB4_0_PHY_SYS_PIPEGMUX_CLK_SRC }, + { .index = DT_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK }, +}; + +static const struct parent_map gcc_parent_map_20[] = { + { P_GCC_USB4_1_PHY_DP0_GMUX_CLK_SRC, 0 }, + { P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_20[] = { + { .index = DT_GCC_USB4_1_PHY_DP0_GMUX_CLK_SRC }, + { .index = DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, +}; + +static const struct parent_map gcc_parent_map_21[] = { + { P_GCC_USB4_1_PHY_DP1_GMUX_CLK_SRC, 0 }, + { P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_21[] = { + { .index = DT_GCC_USB4_1_PHY_DP1_GMUX_CLK_SRC }, + { .index = DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, +}; + +static const struct parent_map gcc_parent_map_22[] = { + { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 }, + { P_BI_TCXO, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_22[] = { + { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK }, + { .index = DT_BI_TCXO }, +}; + +static const struct parent_map gcc_parent_map_23[] = { + { P_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 }, + { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 1 }, +}; + +static const struct clk_parent_data gcc_parent_data_23[] = { + { .index = DT_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC }, + { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK }, +}; + +static const struct parent_map gcc_parent_map_24[] = { + { P_QUSB4PHY_1_GCC_USB4_RX0_CLK, 0 }, + { P_BI_TCXO, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_24[] = { + { .index = DT_QUSB4PHY_1_GCC_USB4_RX0_CLK }, + { .index = DT_BI_TCXO }, +}; + +static const struct parent_map gcc_parent_map_25[] = { + { P_QUSB4PHY_1_GCC_USB4_RX1_CLK, 0 }, + { P_BI_TCXO, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_25[] = { + { .index = DT_QUSB4PHY_1_GCC_USB4_RX1_CLK }, + { .index = DT_BI_TCXO }, +}; + +static const struct parent_map gcc_parent_map_26[] = { + { P_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, 0 }, + { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_26[] = { + { .index = DT_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC }, + { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK }, +}; + +static const struct parent_map gcc_parent_map_27[] = { + { P_GCC_USB4_2_PHY_DP0_GMUX_CLK_SRC, 0 }, + { P_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_27[] = { + { .index = DT_GCC_USB4_2_PHY_DP0_GMUX_CLK_SRC }, + { .index = DT_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, +}; + +static const struct parent_map gcc_parent_map_28[] = { + { P_GCC_USB4_2_PHY_DP1_GMUX_CLK_SRC, 0 }, + { P_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_28[] = { + { .index = DT_GCC_USB4_2_PHY_DP1_GMUX_CLK_SRC }, + { .index = DT_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, +}; + +static const struct parent_map gcc_parent_map_29[] = { + { P_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 }, + { P_BI_TCXO, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_29[] = { + { .index = DT_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK }, + { .index = DT_BI_TCXO }, +}; + +static const struct parent_map gcc_parent_map_30[] = { + { P_GCC_USB4_2_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 }, + { P_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK, 1 }, +}; + +static const struct clk_parent_data gcc_parent_data_30[] = { + { .index = DT_GCC_USB4_2_PHY_PCIE_PIPEGMUX_CLK_SRC }, + { .index = DT_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK }, +}; + +static const struct parent_map gcc_parent_map_31[] = { + { P_QUSB4PHY_2_GCC_USB4_RX0_CLK, 0 }, + { P_BI_TCXO, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_31[] = { + { .index = DT_QUSB4PHY_2_GCC_USB4_RX0_CLK }, + { .index = DT_BI_TCXO }, +}; + +static const struct parent_map gcc_parent_map_32[] = { + { P_QUSB4PHY_2_GCC_USB4_RX1_CLK, 0 }, + { P_BI_TCXO, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_32[] = { + { .index = DT_QUSB4PHY_2_GCC_USB4_RX1_CLK }, + { .index = DT_BI_TCXO }, +}; + +static const struct parent_map gcc_parent_map_33[] = { + { P_GCC_USB4_2_PHY_SYS_PIPEGMUX_CLK_SRC, 0 }, + { P_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 }, +}; + +static const struct clk_parent_data gcc_parent_data_33[] = { + { .index = DT_GCC_USB4_2_PHY_SYS_PIPEGMUX_CLK_SRC }, + { .index = DT_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_0_phy_dp0_clk_src = { + .reg = 0x9f06c, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_0_phy_dp0_clk_src", + .parent_data = gcc_parent_data_13, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_0_phy_dp1_clk_src = { + .reg = 0x9f114, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_0_phy_dp1_clk_src", + .parent_data = gcc_parent_data_14, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_0_phy_p2rr2p_pipe_clk_src = { + .reg = 0x9f0d4, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_0_phy_p2rr2p_pipe_clk_src", + .parent_data = gcc_parent_data_15, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_0_phy_pcie_pipe_mux_clk_src = { + .reg = 0x9f104, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_0_phy_pcie_pipe_mux_clk_src", + .parent_data = gcc_parent_data_16, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_0_phy_rx0_clk_src = { + .reg = 0x9f0ac, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_0_phy_rx0_clk_src", + .parent_data = gcc_parent_data_17, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_0_phy_rx1_clk_src = { + .reg = 0x9f0bc, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_0_phy_rx1_clk_src", + .parent_data = gcc_parent_data_18, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_0_phy_sys_clk_src = { + .reg = 0x9f0e4, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_0_phy_sys_clk_src", + .parent_data = gcc_parent_data_19, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_1_phy_dp0_clk_src = { + .reg = 0x2b06c, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_1_phy_dp0_clk_src", + .parent_data = gcc_parent_data_20, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_1_phy_dp1_clk_src = { + .reg = 0x2b114, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_1_phy_dp1_clk_src", + .parent_data = gcc_parent_data_21, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_1_phy_p2rr2p_pipe_clk_src = { + .reg = 0x2b0d4, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_1_phy_p2rr2p_pipe_clk_src", + .parent_data = gcc_parent_data_22, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_1_phy_pcie_pipe_mux_clk_src = { + .reg = 0x2b104, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_1_phy_pcie_pipe_mux_clk_src", + .parent_data = gcc_parent_data_23, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_1_phy_rx0_clk_src = { + .reg = 0x2b0ac, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_1_phy_rx0_clk_src", + .parent_data = gcc_parent_data_24, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_1_phy_rx1_clk_src = { + .reg = 0x2b0bc, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_1_phy_rx1_clk_src", + .parent_data = gcc_parent_data_25, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_1_phy_sys_clk_src = { + .reg = 0x2b0e4, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_1_phy_sys_clk_src", + .parent_data = gcc_parent_data_26, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_2_phy_dp0_clk_src = { + .reg = 0x1106c, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_2_phy_dp0_clk_src", + .parent_data = gcc_parent_data_27, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_2_phy_dp1_clk_src = { + .reg = 0x11114, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_2_phy_dp1_clk_src", + .parent_data = gcc_parent_data_28, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_2_phy_p2rr2p_pipe_clk_src = { + .reg = 0x110d4, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_2_phy_p2rr2p_pipe_clk_src", + .parent_data = gcc_parent_data_29, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_2_phy_pcie_pipe_mux_clk_src = { + .reg = 0x11104, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_2_phy_pcie_pipe_mux_clk_src", + .parent_data = gcc_parent_data_30, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_2_phy_rx0_clk_src = { + .reg = 0x110ac, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_2_phy_rx0_clk_src", + .parent_data = gcc_parent_data_31, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_2_phy_rx1_clk_src = { + .reg = 0x110bc, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_2_phy_rx1_clk_src", + .parent_data = gcc_parent_data_32, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + +static struct clk_regmap_phy_mux gcc_usb4_2_phy_sys_clk_src = { + .reg = 0x110e4, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb4_2_phy_sys_clk_src", + .parent_data = gcc_parent_data_33, + .ops = &clk_regmap_phy_mux_ops, + }, + }, +}; + static struct clk_rcg2 gcc_gp1_clk_src = { .cmd_rcgr = 0x64004, .mnd_width = 16, @@ -2790,6 +3288,11 @@ static struct clk_branch gcc_pcie_0_pipe_clk = { .enable_mask = BIT(25), .hw.init = &(const struct clk_init_data) { .name = "gcc_pcie_0_pipe_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_0_phy_pcie_pipe_mux_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -2879,6 +3382,11 @@ static struct clk_branch gcc_pcie_1_pipe_clk = { .enable_mask = BIT(30), .hw.init = &(const struct clk_init_data) { .name = "gcc_pcie_1_pipe_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -2968,6 +3476,11 @@ static struct clk_branch gcc_pcie_2_pipe_clk = { .enable_mask = BIT(23), .hw.init = &(const struct clk_init_data) { .name = "gcc_pcie_2_pipe_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_2_phy_pcie_pipe_mux_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5156,6 +5669,33 @@ static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = { }, }; +static const struct parent_map gcc_parent_map_34[] = { + { P_GCC_USB3_PRIM_PHY_PIPE_CLK_SRC, 0 }, + { P_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 1 }, + { P_GCC_USB4_0_PHY_PIPEGMUX_CLK_SRC, 3 }, +}; + +static const struct clk_parent_data gcc_parent_data_34[] = { + { .hw = &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw }, + { .index = DT_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, + { .index = DT_GCC_USB4_0_PHY_PIPEGMUX_CLK_SRC }, +}; + +static struct clk_regmap_mux gcc_usb34_prim_phy_pipe_clk_src = { + .reg = 0x39070, + .shift = 0, + .width = 2, + .parent_map = gcc_parent_map_34, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb34_prim_phy_pipe_clk_src", + .parent_data = gcc_parent_data_34, + .num_parents = ARRAY_SIZE(gcc_parent_data_34), + .ops = &clk_regmap_mux_closest_ops, + }, + }, +}; + static struct clk_branch gcc_usb3_prim_phy_pipe_clk = { .halt_reg = 0x39068, .halt_check = BRANCH_HALT_SKIP, @@ -5167,7 +5707,7 @@ static struct clk_branch gcc_usb3_prim_phy_pipe_clk = { .hw.init = &(const struct clk_init_data) { .name = "gcc_usb3_prim_phy_pipe_clk", .parent_hws = (const struct clk_hw*[]) { - &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw, + &gcc_usb34_prim_phy_pipe_clk_src.clkr.hw, }, .num_parents = 1, .flags = CLK_SET_RATE_PARENT, @@ -5227,6 +5767,33 @@ static struct clk_regmap_mux gcc_usb3_sec_phy_pipe_clk_src = { }, }; +static const struct parent_map gcc_parent_map_35[] = { + { P_GCC_USB3_SEC_PHY_PIPE_CLK_SRC, 0 }, + { P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 1 }, + { P_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC, 3 }, +}; + +static const struct clk_parent_data gcc_parent_data_35[] = { + { .hw = &gcc_usb3_sec_phy_pipe_clk_src.clkr.hw }, + { .index = DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, + { .index = DT_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC }, +}; + +static struct clk_regmap_mux gcc_usb34_sec_phy_pipe_clk_src = { + .reg = 0xa1070, + .shift = 0, + .width = 2, + .parent_map = gcc_parent_map_35, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb34_sec_phy_pipe_clk_src", + .parent_data = gcc_parent_data_35, + .num_parents = ARRAY_SIZE(gcc_parent_data_35), + .ops = &clk_regmap_mux_closest_ops, + }, + }, +}; + static struct clk_branch gcc_usb3_sec_phy_pipe_clk = { .halt_reg = 0xa1068, .halt_check = BRANCH_HALT_SKIP, @@ -5238,7 +5805,7 @@ static struct clk_branch gcc_usb3_sec_phy_pipe_clk = { .hw.init = &(const struct clk_init_data) { .name = "gcc_usb3_sec_phy_pipe_clk", .parent_hws = (const struct clk_hw*[]) { - &gcc_usb3_sec_phy_pipe_clk_src.clkr.hw, + &gcc_usb34_sec_phy_pipe_clk_src.clkr.hw, }, .num_parents = 1, .flags = CLK_SET_RATE_PARENT, @@ -5298,6 +5865,33 @@ static struct clk_regmap_mux gcc_usb3_tert_phy_pipe_clk_src = { }, }; +static const struct parent_map gcc_parent_map_36[] = { + { P_GCC_USB3_TERT_PHY_PIPE_CLK_SRC, 0 }, + { P_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 1 }, + { P_GCC_USB4_2_PHY_PIPEGMUX_CLK_SRC, 3 }, +}; + +static const struct clk_parent_data gcc_parent_data_36[] = { + { .hw = &gcc_usb3_tert_phy_pipe_clk_src.clkr.hw }, + { .index = DT_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, + { .index = DT_GCC_USB4_2_PHY_PIPEGMUX_CLK_SRC }, +}; + +static struct clk_regmap_mux gcc_usb34_tert_phy_pipe_clk_src = { + .reg = 0xa2070, + .shift = 0, + .width = 2, + .parent_map = gcc_parent_map_36, + .clkr = { + .hw.init = &(const struct clk_init_data) { + .name = "gcc_usb34_tert_phy_pipe_clk_src", + .parent_data = gcc_parent_data_36, + .num_parents = ARRAY_SIZE(gcc_parent_data_36), + .ops = &clk_regmap_mux_closest_ops, + }, + }, +}; + static struct clk_branch gcc_usb3_tert_phy_pipe_clk = { .halt_reg = 0xa2068, .halt_check = BRANCH_HALT_SKIP, @@ -5309,7 +5903,7 @@ static struct clk_branch gcc_usb3_tert_phy_pipe_clk = { .hw.init = &(const struct clk_init_data) { .name = "gcc_usb3_tert_phy_pipe_clk", .parent_hws = (const struct clk_hw*[]) { - &gcc_usb3_tert_phy_pipe_clk_src.clkr.hw, + &gcc_usb34_tert_phy_pipe_clk_src.clkr.hw, }, .num_parents = 1, .flags = CLK_SET_RATE_PARENT, @@ -5335,12 +5929,17 @@ static struct clk_branch gcc_usb4_0_cfg_ahb_clk = { static struct clk_branch gcc_usb4_0_dp0_clk = { .halt_reg = 0x9f060, - .halt_check = BRANCH_HALT, + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x9f060, .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_0_dp0_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_0_phy_dp0_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5348,12 +5947,17 @@ static struct clk_branch gcc_usb4_0_dp0_clk = { static struct clk_branch gcc_usb4_0_dp1_clk = { .halt_reg = 0x9f108, - .halt_check = BRANCH_HALT, + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x9f108, .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_0_dp1_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_0_phy_dp1_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5385,6 +5989,11 @@ static struct clk_branch gcc_usb4_0_phy_p2rr2p_pipe_clk = { .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_0_phy_p2rr2p_pipe_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_0_phy_p2rr2p_pipe_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5398,6 +6007,11 @@ static struct clk_branch gcc_usb4_0_phy_pcie_pipe_clk = { .enable_mask = BIT(19), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_0_phy_pcie_pipe_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_0_phy_pcie_pipe_mux_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5405,12 +6019,17 @@ static struct clk_branch gcc_usb4_0_phy_pcie_pipe_clk = { static struct clk_branch gcc_usb4_0_phy_rx0_clk = { .halt_reg = 0x9f0b0, - .halt_check = BRANCH_HALT, + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x9f0b0, .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_0_phy_rx0_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_0_phy_rx0_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5418,12 +6037,17 @@ static struct clk_branch gcc_usb4_0_phy_rx0_clk = { static struct clk_branch gcc_usb4_0_phy_rx1_clk = { .halt_reg = 0x9f0c0, - .halt_check = BRANCH_HALT, + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x9f0c0, .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_0_phy_rx1_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_0_phy_rx1_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5439,6 +6063,11 @@ static struct clk_branch gcc_usb4_0_phy_usb_pipe_clk = { .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_0_phy_usb_pipe_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb34_prim_phy_pipe_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5470,6 +6099,11 @@ static struct clk_branch gcc_usb4_0_sys_clk = { .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_0_sys_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_0_phy_sys_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5512,12 +6146,17 @@ static struct clk_branch gcc_usb4_1_cfg_ahb_clk = { static struct clk_branch gcc_usb4_1_dp0_clk = { .halt_reg = 0x2b060, - .halt_check = BRANCH_HALT, + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x2b060, .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_1_dp0_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_1_phy_dp0_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5525,12 +6164,17 @@ static struct clk_branch gcc_usb4_1_dp0_clk = { static struct clk_branch gcc_usb4_1_dp1_clk = { .halt_reg = 0x2b108, - .halt_check = BRANCH_HALT, + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x2b108, .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_1_dp1_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_1_phy_dp1_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5562,6 +6206,11 @@ static struct clk_branch gcc_usb4_1_phy_p2rr2p_pipe_clk = { .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_1_phy_p2rr2p_pipe_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_1_phy_p2rr2p_pipe_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5575,6 +6224,11 @@ static struct clk_branch gcc_usb4_1_phy_pcie_pipe_clk = { .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_1_phy_pcie_pipe_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5582,12 +6236,17 @@ static struct clk_branch gcc_usb4_1_phy_pcie_pipe_clk = { static struct clk_branch gcc_usb4_1_phy_rx0_clk = { .halt_reg = 0x2b0b0, - .halt_check = BRANCH_HALT, + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x2b0b0, .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_1_phy_rx0_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_1_phy_rx0_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5595,12 +6254,17 @@ static struct clk_branch gcc_usb4_1_phy_rx0_clk = { static struct clk_branch gcc_usb4_1_phy_rx1_clk = { .halt_reg = 0x2b0c0, - .halt_check = BRANCH_HALT, + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x2b0c0, .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_1_phy_rx1_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_1_phy_rx1_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5616,6 +6280,11 @@ static struct clk_branch gcc_usb4_1_phy_usb_pipe_clk = { .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_1_phy_usb_pipe_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb34_sec_phy_pipe_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5647,6 +6316,11 @@ static struct clk_branch gcc_usb4_1_sys_clk = { .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_1_sys_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_1_phy_sys_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5689,12 +6363,17 @@ static struct clk_branch gcc_usb4_2_cfg_ahb_clk = { static struct clk_branch gcc_usb4_2_dp0_clk = { .halt_reg = 0x11060, - .halt_check = BRANCH_HALT, + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x11060, .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_2_dp0_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_2_phy_dp0_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5702,12 +6381,17 @@ static struct clk_branch gcc_usb4_2_dp0_clk = { static struct clk_branch gcc_usb4_2_dp1_clk = { .halt_reg = 0x11108, - .halt_check = BRANCH_HALT, + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x11108, .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_2_dp1_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_2_phy_dp1_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5739,6 +6423,11 @@ static struct clk_branch gcc_usb4_2_phy_p2rr2p_pipe_clk = { .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_2_phy_p2rr2p_pipe_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_2_phy_p2rr2p_pipe_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5752,6 +6441,11 @@ static struct clk_branch gcc_usb4_2_phy_pcie_pipe_clk = { .enable_mask = BIT(1), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_2_phy_pcie_pipe_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_2_phy_pcie_pipe_mux_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5759,12 +6453,17 @@ static struct clk_branch gcc_usb4_2_phy_pcie_pipe_clk = { static struct clk_branch gcc_usb4_2_phy_rx0_clk = { .halt_reg = 0x110b0, - .halt_check = BRANCH_HALT, + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x110b0, .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_2_phy_rx0_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_2_phy_rx0_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5772,12 +6471,17 @@ static struct clk_branch gcc_usb4_2_phy_rx0_clk = { static struct clk_branch gcc_usb4_2_phy_rx1_clk = { .halt_reg = 0x110c0, - .halt_check = BRANCH_HALT, + .halt_check = BRANCH_HALT_SKIP, .clkr = { .enable_reg = 0x110c0, .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_2_phy_rx1_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb4_2_phy_rx1_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -5793,6 +6497,11 @@ static struct clk_branch gcc_usb4_2_phy_usb_pipe_clk = { .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data) { .name = "gcc_usb4_2_phy_usb_pipe_clk", + .parent_hws = (const struct clk_hw*[]) { + &gcc_usb34_tert_phy_pipe_clk_src.clkr.hw, + }, + .num_parents = 1, + .flags = CLK_SET_RATE_PARENT, .ops = &clk_branch2_ops, }, }, @@ -6483,6 +7192,9 @@ static struct clk_regmap *gcc_x1e80100_clocks[] = { [GCC_USB30_TERT_MOCK_UTMI_CLK_SRC] = &gcc_usb30_tert_mock_utmi_clk_src.clkr, [GCC_USB30_TERT_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_tert_mock_utmi_postdiv_clk_src.clkr, [GCC_USB30_TERT_SLEEP_CLK] = &gcc_usb30_tert_sleep_clk.clkr, + [GCC_USB34_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb34_prim_phy_pipe_clk_src.clkr, + [GCC_USB34_SEC_PHY_PIPE_CLK_SRC] = &gcc_usb34_sec_phy_pipe_clk_src.clkr, + [GCC_USB34_TERT_PHY_PIPE_CLK_SRC] = &gcc_usb34_tert_phy_pipe_clk_src.clkr, [GCC_USB3_MP_PHY_AUX_CLK] = &gcc_usb3_mp_phy_aux_clk.clkr, [GCC_USB3_MP_PHY_AUX_CLK_SRC] = &gcc_usb3_mp_phy_aux_clk_src.clkr, [GCC_USB3_MP_PHY_COM_AUX_CLK] = &gcc_usb3_mp_phy_com_aux_clk.clkr, @@ -6508,11 +7220,18 @@ static struct clk_regmap *gcc_x1e80100_clocks[] = { [GCC_USB4_0_DP1_CLK] = &gcc_usb4_0_dp1_clk.clkr, [GCC_USB4_0_MASTER_CLK] = &gcc_usb4_0_master_clk.clkr, [GCC_USB4_0_MASTER_CLK_SRC] = &gcc_usb4_0_master_clk_src.clkr, + [GCC_USB4_0_PHY_DP0_CLK_SRC] = &gcc_usb4_0_phy_dp0_clk_src.clkr, + [GCC_USB4_0_PHY_DP1_CLK_SRC] = &gcc_usb4_0_phy_dp1_clk_src.clkr, [GCC_USB4_0_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_0_phy_p2rr2p_pipe_clk.clkr, + [GCC_USB4_0_PHY_P2RR2P_PIPE_CLK_SRC] = &gcc_usb4_0_phy_p2rr2p_pipe_clk_src.clkr, [GCC_USB4_0_PHY_PCIE_PIPE_CLK] = &gcc_usb4_0_phy_pcie_pipe_clk.clkr, [GCC_USB4_0_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_0_phy_pcie_pipe_clk_src.clkr, + [GCC_USB4_0_PHY_PCIE_PIPE_MUX_CLK_SRC] = &gcc_usb4_0_phy_pcie_pipe_mux_clk_src.clkr, [GCC_USB4_0_PHY_RX0_CLK] = &gcc_usb4_0_phy_rx0_clk.clkr, + [GCC_USB4_0_PHY_RX0_CLK_SRC] = &gcc_usb4_0_phy_rx0_clk_src.clkr, [GCC_USB4_0_PHY_RX1_CLK] = &gcc_usb4_0_phy_rx1_clk.clkr, + [GCC_USB4_0_PHY_RX1_CLK_SRC] = &gcc_usb4_0_phy_rx1_clk_src.clkr, + [GCC_USB4_0_PHY_SYS_CLK_SRC] = &gcc_usb4_0_phy_sys_clk_src.clkr, [GCC_USB4_0_PHY_USB_PIPE_CLK] = &gcc_usb4_0_phy_usb_pipe_clk.clkr, [GCC_USB4_0_SB_IF_CLK] = &gcc_usb4_0_sb_if_clk.clkr, [GCC_USB4_0_SB_IF_CLK_SRC] = &gcc_usb4_0_sb_if_clk_src.clkr, @@ -6524,11 +7243,18 @@ static struct clk_regmap *gcc_x1e80100_clocks[] = { [GCC_USB4_1_DP1_CLK] = &gcc_usb4_1_dp1_clk.clkr, [GCC_USB4_1_MASTER_CLK] = &gcc_usb4_1_master_clk.clkr, [GCC_USB4_1_MASTER_CLK_SRC] = &gcc_usb4_1_master_clk_src.clkr, + [GCC_USB4_1_PHY_DP0_CLK_SRC] = &gcc_usb4_1_phy_dp0_clk_src.clkr, + [GCC_USB4_1_PHY_DP1_CLK_SRC] = &gcc_usb4_1_phy_dp1_clk_src.clkr, [GCC_USB4_1_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_1_phy_p2rr2p_pipe_clk.clkr, + [GCC_USB4_1_PHY_P2RR2P_PIPE_CLK_SRC] = &gcc_usb4_1_phy_p2rr2p_pipe_clk_src.clkr, [GCC_USB4_1_PHY_PCIE_PIPE_CLK] = &gcc_usb4_1_phy_pcie_pipe_clk.clkr, [GCC_USB4_1_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_1_phy_pcie_pipe_clk_src.clkr, + [GCC_USB4_1_PHY_PCIE_PIPE_MUX_CLK_SRC] = &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr, [GCC_USB4_1_PHY_RX0_CLK] = &gcc_usb4_1_phy_rx0_clk.clkr, + [GCC_USB4_1_PHY_RX0_CLK_SRC] = &gcc_usb4_1_phy_rx0_clk_src.clkr, [GCC_USB4_1_PHY_RX1_CLK] = &gcc_usb4_1_phy_rx1_clk.clkr, + [GCC_USB4_1_PHY_RX1_CLK_SRC] = &gcc_usb4_1_phy_rx1_clk_src.clkr, + [GCC_USB4_1_PHY_SYS_CLK_SRC] = &gcc_usb4_1_phy_sys_clk_src.clkr, [GCC_USB4_1_PHY_USB_PIPE_CLK] = &gcc_usb4_1_phy_usb_pipe_clk.clkr, [GCC_USB4_1_SB_IF_CLK] = &gcc_usb4_1_sb_if_clk.clkr, [GCC_USB4_1_SB_IF_CLK_SRC] = &gcc_usb4_1_sb_if_clk_src.clkr, @@ -6540,11 +7266,18 @@ static struct clk_regmap *gcc_x1e80100_clocks[] = { [GCC_USB4_2_DP1_CLK] = &gcc_usb4_2_dp1_clk.clkr, [GCC_USB4_2_MASTER_CLK] = &gcc_usb4_2_master_clk.clkr, [GCC_USB4_2_MASTER_CLK_SRC] = &gcc_usb4_2_master_clk_src.clkr, + [GCC_USB4_2_PHY_DP0_CLK_SRC] = &gcc_usb4_2_phy_dp0_clk_src.clkr, + [GCC_USB4_2_PHY_DP1_CLK_SRC] = &gcc_usb4_2_phy_dp1_clk_src.clkr, [GCC_USB4_2_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_2_phy_p2rr2p_pipe_clk.clkr, + [GCC_USB4_2_PHY_P2RR2P_PIPE_CLK_SRC] = &gcc_usb4_2_phy_p2rr2p_pipe_clk_src.clkr, [GCC_USB4_2_PHY_PCIE_PIPE_CLK] = &gcc_usb4_2_phy_pcie_pipe_clk.clkr, [GCC_USB4_2_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_2_phy_pcie_pipe_clk_src.clkr, + [GCC_USB4_2_PHY_PCIE_PIPE_MUX_CLK_SRC] = &gcc_usb4_2_phy_pcie_pipe_mux_clk_src.clkr, [GCC_USB4_2_PHY_RX0_CLK] = &gcc_usb4_2_phy_rx0_clk.clkr, + [GCC_USB4_2_PHY_RX0_CLK_SRC] = &gcc_usb4_2_phy_rx0_clk_src.clkr, [GCC_USB4_2_PHY_RX1_CLK] = &gcc_usb4_2_phy_rx1_clk.clkr, + [GCC_USB4_2_PHY_RX1_CLK_SRC] = &gcc_usb4_2_phy_rx1_clk_src.clkr, + [GCC_USB4_2_PHY_SYS_CLK_SRC] = &gcc_usb4_2_phy_sys_clk_src.clkr, [GCC_USB4_2_PHY_USB_PIPE_CLK] = &gcc_usb4_2_phy_usb_pipe_clk.clkr, [GCC_USB4_2_SB_IF_CLK] = &gcc_usb4_2_sb_if_clk.clkr, [GCC_USB4_2_SB_IF_CLK_SRC] = &gcc_usb4_2_sb_if_clk_src.clkr, @@ -6660,16 +7393,52 @@ static const struct qcom_reset_map gcc_x1e80100_resets[] = { [GCC_USB3_UNIPHY_MP0_BCR] = { 0x19000 }, [GCC_USB3_UNIPHY_MP1_BCR] = { 0x54000 }, [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 }, + [GCC_USB4PHY_PHY_PRIM_BCR] = { 0x5000c }, [GCC_USB3PHY_PHY_SEC_BCR] = { 0x2a004 }, + [GCC_USB4PHY_PHY_SEC_BCR] = { 0x2a00c }, [GCC_USB3PHY_PHY_TERT_BCR] = { 0xa3004 }, + [GCC_USB4PHY_PHY_TERT_BCR] = { 0xa300c }, [GCC_USB3UNIPHY_PHY_MP0_BCR] = { 0x19004 }, [GCC_USB3UNIPHY_PHY_MP1_BCR] = { 0x54004 }, [GCC_USB4_0_BCR] = { 0x9f000 }, [GCC_USB4_0_DP0_PHY_PRIM_BCR] = { 0x50010 }, - [GCC_USB4_1_DP0_PHY_SEC_BCR] = { 0x2a010 }, - [GCC_USB4_2_DP0_PHY_TERT_BCR] = { 0xa3010 }, + [GCC_USB4_0_MISC_USB4_SYS_BCR] = { .reg = 0xad0f8, .bit = 0 }, + [GCC_USB4_0_MISC_RX_CLK_0_BCR] = { .reg = 0xad0f8, .bit = 1 }, + [GCC_USB4_0_MISC_RX_CLK_1_BCR] = { .reg = 0xad0f8, .bit = 2 }, + [GCC_USB4_0_MISC_USB_PIPE_BCR] = { .reg = 0xad0f8, .bit = 3 }, + [GCC_USB4_0_MISC_PCIE_PIPE_BCR] = { .reg = 0xad0f8, .bit = 4 }, + [GCC_USB4_0_MISC_TMU_BCR] = { .reg = 0xad0f8, .bit = 5 }, + [GCC_USB4_0_MISC_SB_IF_BCR] = { .reg = 0xad0f8, .bit = 6 }, + [GCC_USB4_0_MISC_HIA_MSTR_BCR] = { .reg = 0xad0f8, .bit = 7 }, + [GCC_USB4_0_MISC_AHB_BCR] = { .reg = 0xad0f8, .bit = 8 }, + [GCC_USB4_0_MISC_DP0_MAX_PCLK_BCR] = { .reg = 0xad0f8, .bit = 9 }, + [GCC_USB4_0_MISC_DP1_MAX_PCLK_BCR] = { .reg = 0xad0f8, .bit = 10 }, [GCC_USB4_1_BCR] = { 0x2b000 }, + [GCC_USB4_1_DP0_PHY_SEC_BCR] = { 0x2a010 }, + [GCC_USB4_1_MISC_USB4_SYS_BCR] = { .reg = 0xae0f8, .bit = 0 }, + [GCC_USB4_1_MISC_RX_CLK_0_BCR] = { .reg = 0xae0f8, .bit = 1 }, + [GCC_USB4_1_MISC_RX_CLK_1_BCR] = { .reg = 0xae0f8, .bit = 2 }, + [GCC_USB4_1_MISC_USB_PIPE_BCR] = { .reg = 0xae0f8, .bit = 3 }, + [GCC_USB4_1_MISC_PCIE_PIPE_BCR] = { .reg = 0xae0f8, .bit = 4 }, + [GCC_USB4_1_MISC_TMU_BCR] = { .reg = 0xae0f8, .bit = 5 }, + [GCC_USB4_1_MISC_SB_IF_BCR] = { .reg = 0xae0f8, .bit = 6 }, + [GCC_USB4_1_MISC_HIA_MSTR_BCR] = { .reg = 0xae0f8, .bit = 7 }, + [GCC_USB4_1_MISC_AHB_BCR] = { .reg = 0xae0f8, .bit = 8 }, + [GCC_USB4_1_MISC_DP0_MAX_PCLK_BCR] = { .reg = 0xae0f8, .bit = 9 }, + [GCC_USB4_1_MISC_DP1_MAX_PCLK_BCR] = { .reg = 0xae0f8, .bit = 10 }, [GCC_USB4_2_BCR] = { 0x11000 }, + [GCC_USB4_2_DP0_PHY_TERT_BCR] = { 0xa3010 }, + [GCC_USB4_2_MISC_USB4_SYS_BCR] = { .reg = 0xaf0f8, .bit = 0 }, + [GCC_USB4_2_MISC_RX_CLK_0_BCR] = { .reg = 0xaf0f8, .bit = 1 }, + [GCC_USB4_2_MISC_RX_CLK_1_BCR] = { .reg = 0xaf0f8, .bit = 2 }, + [GCC_USB4_2_MISC_USB_PIPE_BCR] = { .reg = 0xaf0f8, .bit = 3 }, + [GCC_USB4_2_MISC_PCIE_PIPE_BCR] = { .reg = 0xaf0f8, .bit = 4 }, + [GCC_USB4_2_MISC_TMU_BCR] = { .reg = 0xaf0f8, .bit = 5 }, + [GCC_USB4_2_MISC_SB_IF_BCR] = { .reg = 0xaf0f8, .bit = 6 }, + [GCC_USB4_2_MISC_HIA_MSTR_BCR] = { .reg = 0xaf0f8, .bit = 7 }, + [GCC_USB4_2_MISC_AHB_BCR] = { .reg = 0xaf0f8, .bit = 8 }, + [GCC_USB4_2_MISC_DP0_MAX_PCLK_BCR] = { .reg = 0xaf0f8, .bit = 9 }, + [GCC_USB4_2_MISC_DP1_MAX_PCLK_BCR] = { .reg = 0xaf0f8, .bit = 10 }, [GCC_USB_0_PHY_BCR] = { 0x50020 }, [GCC_USB_1_PHY_BCR] = { 0x2a020 }, [GCC_USB_2_PHY_BCR] = { 0xa3020 }, -- 2.51.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/3] clk: qcom: gcc-x1e80100: Add missing USB4 clocks/resets 2025-09-26 12:03 ` [PATCH 2/3] clk: qcom: gcc-x1e80100: " Konrad Dybcio @ 2025-09-27 10:42 ` Bryan O'Donoghue 2025-09-27 14:01 ` kernel test robot 1 sibling, 0 replies; 10+ messages in thread From: Bryan O'Donoghue @ 2025-09-27 10:42 UTC (permalink / raw) To: Konrad Dybcio, Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Rajendra Nayak, Wesley Cheng, Sibi Sankar, Abel Vesa Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Konrad Dybcio On 26/09/2025 13:03, Konrad Dybcio wrote: > From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > > Currently, some of the USB4 clocks/resets are described, but not all > of the back-end muxes are present. Configuring them properly is > necessary for proper operation of the hardware. > > Add all the resets & muxes and wire up any unaccounted USB4 clock paths. > > Fixes: 161b7c401f4b ("clk: qcom: Add Global Clock controller (GCC) driver for X1E80100") > Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > --- > drivers/clk/qcom/gcc-x1e80100.c | 803 +++++++++++++++++++++++++++++++++++++++- > 1 file changed, 786 insertions(+), 17 deletions(-) > > diff --git a/drivers/clk/qcom/gcc-x1e80100.c b/drivers/clk/qcom/gcc-x1e80100.c > index 301fc9fc32d8e6e1ddf59c1d3350d84f6c06e4b6..1f866fb4a53ad4cca51d586e92aa96acab58ef0b 100644 > --- a/drivers/clk/qcom/gcc-x1e80100.c > +++ b/drivers/clk/qcom/gcc-x1e80100.c > @@ -32,6 +32,33 @@ enum { > DT_USB3_PHY_0_WRAPPER_GCC_USB30_PIPE, > DT_USB3_PHY_1_WRAPPER_GCC_USB30_PIPE, > DT_USB3_PHY_2_WRAPPER_GCC_USB30_PIPE, > + DT_GCC_USB4_0_PHY_DP0_GMUX_CLK_SRC, > + DT_GCC_USB4_0_PHY_DP1_GMUX_CLK_SRC, > + DT_GCC_USB4_0_PHY_PCIE_PIPEGMUX_CLK_SRC, > + DT_GCC_USB4_0_PHY_PIPEGMUX_CLK_SRC, > + DT_GCC_USB4_0_PHY_SYS_PIPEGMUX_CLK_SRC, > + DT_GCC_USB4_1_PHY_DP0_GMUX_CLK_SRC, > + DT_GCC_USB4_1_PHY_DP1_GMUX_CLK_SRC, > + DT_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC, > + DT_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC, > + DT_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, > + DT_GCC_USB4_2_PHY_DP0_GMUX_CLK_SRC, > + DT_GCC_USB4_2_PHY_DP1_GMUX_CLK_SRC, > + DT_GCC_USB4_2_PHY_PCIE_PIPEGMUX_CLK_SRC, > + DT_GCC_USB4_2_PHY_PIPEGMUX_CLK_SRC, > + DT_GCC_USB4_2_PHY_SYS_PIPEGMUX_CLK_SRC, > + DT_QUSB4PHY_0_GCC_USB4_RX0_CLK, > + DT_QUSB4PHY_0_GCC_USB4_RX1_CLK, > + DT_QUSB4PHY_1_GCC_USB4_RX0_CLK, > + DT_QUSB4PHY_1_GCC_USB4_RX1_CLK, > + DT_QUSB4PHY_2_GCC_USB4_RX0_CLK, > + DT_QUSB4PHY_2_GCC_USB4_RX1_CLK, > + DT_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK, > + DT_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK, > + DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, > + DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, > + DT_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK, > + DT_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK, > }; > > enum { > @@ -42,10 +69,40 @@ enum { > P_GCC_GPLL7_OUT_MAIN, > P_GCC_GPLL8_OUT_MAIN, > P_GCC_GPLL9_OUT_MAIN, > + P_GCC_USB3_PRIM_PHY_PIPE_CLK_SRC, > + P_GCC_USB3_SEC_PHY_PIPE_CLK_SRC, > + P_GCC_USB3_TERT_PHY_PIPE_CLK_SRC, > + P_GCC_USB4_0_PHY_DP0_GMUX_CLK_SRC, > + P_GCC_USB4_0_PHY_DP1_GMUX_CLK_SRC, > + P_GCC_USB4_0_PHY_PCIE_PIPEGMUX_CLK_SRC, > + P_GCC_USB4_0_PHY_PIPEGMUX_CLK_SRC, > + P_GCC_USB4_0_PHY_SYS_PIPEGMUX_CLK_SRC, > + P_GCC_USB4_1_PHY_DP0_GMUX_CLK_SRC, > + P_GCC_USB4_1_PHY_DP1_GMUX_CLK_SRC, > + P_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC, > + P_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC, > + P_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, > + P_GCC_USB4_2_PHY_DP0_GMUX_CLK_SRC, > + P_GCC_USB4_2_PHY_DP1_GMUX_CLK_SRC, > + P_GCC_USB4_2_PHY_PCIE_PIPEGMUX_CLK_SRC, > + P_GCC_USB4_2_PHY_PIPEGMUX_CLK_SRC, > + P_GCC_USB4_2_PHY_SYS_PIPEGMUX_CLK_SRC, > + P_QUSB4PHY_0_GCC_USB4_RX0_CLK, > + P_QUSB4PHY_0_GCC_USB4_RX1_CLK, > + P_QUSB4PHY_1_GCC_USB4_RX0_CLK, > + P_QUSB4PHY_1_GCC_USB4_RX1_CLK, > + P_QUSB4PHY_2_GCC_USB4_RX0_CLK, > + P_QUSB4PHY_2_GCC_USB4_RX1_CLK, > P_SLEEP_CLK, > P_USB3_PHY_0_WRAPPER_GCC_USB30_PIPE_CLK, > P_USB3_PHY_1_WRAPPER_GCC_USB30_PIPE_CLK, > P_USB3_PHY_2_WRAPPER_GCC_USB30_PIPE_CLK, > + P_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK, > + P_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK, > + P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, > + P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, > + P_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK, > + P_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK, > }; > > static struct clk_alpha_pll gcc_gpll0 = { > @@ -320,6 +377,447 @@ static const struct freq_tbl ftbl_gcc_gp1_clk_src[] = { > { } > }; > > +static const struct parent_map gcc_parent_map_13[] = { > + { P_GCC_USB4_0_PHY_DP0_GMUX_CLK_SRC, 0 }, > + { P_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_13[] = { > + { .index = DT_GCC_USB4_0_PHY_DP0_GMUX_CLK_SRC }, > + { .index = DT_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, > +}; > + > +static const struct parent_map gcc_parent_map_14[] = { > + { P_GCC_USB4_0_PHY_DP1_GMUX_CLK_SRC, 0 }, > + { P_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_14[] = { > + { .index = DT_GCC_USB4_0_PHY_DP1_GMUX_CLK_SRC }, > + { .index = DT_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, > +}; > + > +static const struct parent_map gcc_parent_map_15[] = { > + { P_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 }, > + { P_BI_TCXO, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_15[] = { > + { .index = DT_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK }, > + { .index = DT_BI_TCXO }, > +}; > + > +static const struct parent_map gcc_parent_map_16[] = { > + { P_GCC_USB4_0_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 }, > + { P_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK, 1 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_16[] = { > + { .index = DT_GCC_USB4_0_PHY_PCIE_PIPEGMUX_CLK_SRC }, > + { .index = DT_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK }, > +}; > + > +static const struct parent_map gcc_parent_map_17[] = { > + { P_QUSB4PHY_0_GCC_USB4_RX0_CLK, 0 }, > + { P_BI_TCXO, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_17[] = { > + { .index = DT_QUSB4PHY_0_GCC_USB4_RX0_CLK }, > + { .index = DT_BI_TCXO }, > +}; > + > +static const struct parent_map gcc_parent_map_18[] = { > + { P_QUSB4PHY_0_GCC_USB4_RX1_CLK, 0 }, > + { P_BI_TCXO, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_18[] = { > + { .index = DT_QUSB4PHY_0_GCC_USB4_RX1_CLK }, > + { .index = DT_BI_TCXO }, > +}; > + > +static const struct parent_map gcc_parent_map_19[] = { > + { P_GCC_USB4_0_PHY_SYS_PIPEGMUX_CLK_SRC, 0 }, > + { P_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_19[] = { > + { .index = DT_GCC_USB4_0_PHY_SYS_PIPEGMUX_CLK_SRC }, > + { .index = DT_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK }, > +}; > + > +static const struct parent_map gcc_parent_map_20[] = { > + { P_GCC_USB4_1_PHY_DP0_GMUX_CLK_SRC, 0 }, > + { P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_20[] = { > + { .index = DT_GCC_USB4_1_PHY_DP0_GMUX_CLK_SRC }, > + { .index = DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, > +}; > + > +static const struct parent_map gcc_parent_map_21[] = { > + { P_GCC_USB4_1_PHY_DP1_GMUX_CLK_SRC, 0 }, > + { P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_21[] = { > + { .index = DT_GCC_USB4_1_PHY_DP1_GMUX_CLK_SRC }, > + { .index = DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, > +}; > + > +static const struct parent_map gcc_parent_map_22[] = { > + { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 }, > + { P_BI_TCXO, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_22[] = { > + { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK }, > + { .index = DT_BI_TCXO }, > +}; > + > +static const struct parent_map gcc_parent_map_23[] = { > + { P_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 }, > + { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 1 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_23[] = { > + { .index = DT_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC }, > + { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK }, > +}; > + > +static const struct parent_map gcc_parent_map_24[] = { > + { P_QUSB4PHY_1_GCC_USB4_RX0_CLK, 0 }, > + { P_BI_TCXO, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_24[] = { > + { .index = DT_QUSB4PHY_1_GCC_USB4_RX0_CLK }, > + { .index = DT_BI_TCXO }, > +}; > + > +static const struct parent_map gcc_parent_map_25[] = { > + { P_QUSB4PHY_1_GCC_USB4_RX1_CLK, 0 }, > + { P_BI_TCXO, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_25[] = { > + { .index = DT_QUSB4PHY_1_GCC_USB4_RX1_CLK }, > + { .index = DT_BI_TCXO }, > +}; > + > +static const struct parent_map gcc_parent_map_26[] = { > + { P_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, 0 }, > + { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_26[] = { > + { .index = DT_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC }, > + { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK }, > +}; > + > +static const struct parent_map gcc_parent_map_27[] = { > + { P_GCC_USB4_2_PHY_DP0_GMUX_CLK_SRC, 0 }, > + { P_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_27[] = { > + { .index = DT_GCC_USB4_2_PHY_DP0_GMUX_CLK_SRC }, > + { .index = DT_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, > +}; > + > +static const struct parent_map gcc_parent_map_28[] = { > + { P_GCC_USB4_2_PHY_DP1_GMUX_CLK_SRC, 0 }, > + { P_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_28[] = { > + { .index = DT_GCC_USB4_2_PHY_DP1_GMUX_CLK_SRC }, > + { .index = DT_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, > +}; > + > +static const struct parent_map gcc_parent_map_29[] = { > + { P_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 }, > + { P_BI_TCXO, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_29[] = { > + { .index = DT_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK }, > + { .index = DT_BI_TCXO }, > +}; > + > +static const struct parent_map gcc_parent_map_30[] = { > + { P_GCC_USB4_2_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 }, > + { P_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK, 1 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_30[] = { > + { .index = DT_GCC_USB4_2_PHY_PCIE_PIPEGMUX_CLK_SRC }, > + { .index = DT_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK }, > +}; > + > +static const struct parent_map gcc_parent_map_31[] = { > + { P_QUSB4PHY_2_GCC_USB4_RX0_CLK, 0 }, > + { P_BI_TCXO, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_31[] = { > + { .index = DT_QUSB4PHY_2_GCC_USB4_RX0_CLK }, > + { .index = DT_BI_TCXO }, > +}; > + > +static const struct parent_map gcc_parent_map_32[] = { > + { P_QUSB4PHY_2_GCC_USB4_RX1_CLK, 0 }, > + { P_BI_TCXO, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_32[] = { > + { .index = DT_QUSB4PHY_2_GCC_USB4_RX1_CLK }, > + { .index = DT_BI_TCXO }, > +}; > + > +static const struct parent_map gcc_parent_map_33[] = { > + { P_GCC_USB4_2_PHY_SYS_PIPEGMUX_CLK_SRC, 0 }, > + { P_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_33[] = { > + { .index = DT_GCC_USB4_2_PHY_SYS_PIPEGMUX_CLK_SRC }, > + { .index = DT_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_0_phy_dp0_clk_src = { > + .reg = 0x9f06c, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_0_phy_dp0_clk_src", > + .parent_data = gcc_parent_data_13, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_0_phy_dp1_clk_src = { > + .reg = 0x9f114, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_0_phy_dp1_clk_src", > + .parent_data = gcc_parent_data_14, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_0_phy_p2rr2p_pipe_clk_src = { > + .reg = 0x9f0d4, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_0_phy_p2rr2p_pipe_clk_src", > + .parent_data = gcc_parent_data_15, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_0_phy_pcie_pipe_mux_clk_src = { > + .reg = 0x9f104, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_0_phy_pcie_pipe_mux_clk_src", > + .parent_data = gcc_parent_data_16, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_0_phy_rx0_clk_src = { > + .reg = 0x9f0ac, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_0_phy_rx0_clk_src", > + .parent_data = gcc_parent_data_17, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_0_phy_rx1_clk_src = { > + .reg = 0x9f0bc, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_0_phy_rx1_clk_src", > + .parent_data = gcc_parent_data_18, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_0_phy_sys_clk_src = { > + .reg = 0x9f0e4, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_0_phy_sys_clk_src", > + .parent_data = gcc_parent_data_19, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_1_phy_dp0_clk_src = { > + .reg = 0x2b06c, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_1_phy_dp0_clk_src", > + .parent_data = gcc_parent_data_20, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_1_phy_dp1_clk_src = { > + .reg = 0x2b114, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_1_phy_dp1_clk_src", > + .parent_data = gcc_parent_data_21, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_1_phy_p2rr2p_pipe_clk_src = { > + .reg = 0x2b0d4, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_1_phy_p2rr2p_pipe_clk_src", > + .parent_data = gcc_parent_data_22, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_1_phy_pcie_pipe_mux_clk_src = { > + .reg = 0x2b104, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_1_phy_pcie_pipe_mux_clk_src", > + .parent_data = gcc_parent_data_23, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_1_phy_rx0_clk_src = { > + .reg = 0x2b0ac, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_1_phy_rx0_clk_src", > + .parent_data = gcc_parent_data_24, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_1_phy_rx1_clk_src = { > + .reg = 0x2b0bc, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_1_phy_rx1_clk_src", > + .parent_data = gcc_parent_data_25, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_1_phy_sys_clk_src = { > + .reg = 0x2b0e4, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_1_phy_sys_clk_src", > + .parent_data = gcc_parent_data_26, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_2_phy_dp0_clk_src = { > + .reg = 0x1106c, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_2_phy_dp0_clk_src", > + .parent_data = gcc_parent_data_27, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_2_phy_dp1_clk_src = { > + .reg = 0x11114, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_2_phy_dp1_clk_src", > + .parent_data = gcc_parent_data_28, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_2_phy_p2rr2p_pipe_clk_src = { > + .reg = 0x110d4, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_2_phy_p2rr2p_pipe_clk_src", > + .parent_data = gcc_parent_data_29, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_2_phy_pcie_pipe_mux_clk_src = { > + .reg = 0x11104, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_2_phy_pcie_pipe_mux_clk_src", > + .parent_data = gcc_parent_data_30, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_2_phy_rx0_clk_src = { > + .reg = 0x110ac, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_2_phy_rx0_clk_src", > + .parent_data = gcc_parent_data_31, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_2_phy_rx1_clk_src = { > + .reg = 0x110bc, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_2_phy_rx1_clk_src", > + .parent_data = gcc_parent_data_32, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > +static struct clk_regmap_phy_mux gcc_usb4_2_phy_sys_clk_src = { > + .reg = 0x110e4, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb4_2_phy_sys_clk_src", > + .parent_data = gcc_parent_data_33, > + .ops = &clk_regmap_phy_mux_ops, > + }, > + }, > +}; > + > static struct clk_rcg2 gcc_gp1_clk_src = { > .cmd_rcgr = 0x64004, > .mnd_width = 16, > @@ -2790,6 +3288,11 @@ static struct clk_branch gcc_pcie_0_pipe_clk = { > .enable_mask = BIT(25), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_pcie_0_pipe_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_0_phy_pcie_pipe_mux_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -2879,6 +3382,11 @@ static struct clk_branch gcc_pcie_1_pipe_clk = { > .enable_mask = BIT(30), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_pcie_1_pipe_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -2968,6 +3476,11 @@ static struct clk_branch gcc_pcie_2_pipe_clk = { > .enable_mask = BIT(23), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_pcie_2_pipe_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_2_phy_pcie_pipe_mux_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5156,6 +5669,33 @@ static struct clk_regmap_mux gcc_usb3_prim_phy_pipe_clk_src = { > }, > }; > > +static const struct parent_map gcc_parent_map_34[] = { > + { P_GCC_USB3_PRIM_PHY_PIPE_CLK_SRC, 0 }, > + { P_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 1 }, > + { P_GCC_USB4_0_PHY_PIPEGMUX_CLK_SRC, 3 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_34[] = { > + { .hw = &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw }, > + { .index = DT_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, > + { .index = DT_GCC_USB4_0_PHY_PIPEGMUX_CLK_SRC }, > +}; > + > +static struct clk_regmap_mux gcc_usb34_prim_phy_pipe_clk_src = { > + .reg = 0x39070, > + .shift = 0, > + .width = 2, > + .parent_map = gcc_parent_map_34, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb34_prim_phy_pipe_clk_src", > + .parent_data = gcc_parent_data_34, > + .num_parents = ARRAY_SIZE(gcc_parent_data_34), > + .ops = &clk_regmap_mux_closest_ops, > + }, > + }, > +}; > + > static struct clk_branch gcc_usb3_prim_phy_pipe_clk = { > .halt_reg = 0x39068, > .halt_check = BRANCH_HALT_SKIP, > @@ -5167,7 +5707,7 @@ static struct clk_branch gcc_usb3_prim_phy_pipe_clk = { > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb3_prim_phy_pipe_clk", > .parent_hws = (const struct clk_hw*[]) { > - &gcc_usb3_prim_phy_pipe_clk_src.clkr.hw, > + &gcc_usb34_prim_phy_pipe_clk_src.clkr.hw, > }, > .num_parents = 1, > .flags = CLK_SET_RATE_PARENT, > @@ -5227,6 +5767,33 @@ static struct clk_regmap_mux gcc_usb3_sec_phy_pipe_clk_src = { > }, > }; > > +static const struct parent_map gcc_parent_map_35[] = { > + { P_GCC_USB3_SEC_PHY_PIPE_CLK_SRC, 0 }, > + { P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 1 }, > + { P_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC, 3 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_35[] = { > + { .hw = &gcc_usb3_sec_phy_pipe_clk_src.clkr.hw }, > + { .index = DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, > + { .index = DT_GCC_USB4_1_PHY_PIPEGMUX_CLK_SRC }, > +}; > + > +static struct clk_regmap_mux gcc_usb34_sec_phy_pipe_clk_src = { > + .reg = 0xa1070, > + .shift = 0, > + .width = 2, > + .parent_map = gcc_parent_map_35, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb34_sec_phy_pipe_clk_src", > + .parent_data = gcc_parent_data_35, > + .num_parents = ARRAY_SIZE(gcc_parent_data_35), > + .ops = &clk_regmap_mux_closest_ops, > + }, > + }, > +}; > + > static struct clk_branch gcc_usb3_sec_phy_pipe_clk = { > .halt_reg = 0xa1068, > .halt_check = BRANCH_HALT_SKIP, > @@ -5238,7 +5805,7 @@ static struct clk_branch gcc_usb3_sec_phy_pipe_clk = { > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb3_sec_phy_pipe_clk", > .parent_hws = (const struct clk_hw*[]) { > - &gcc_usb3_sec_phy_pipe_clk_src.clkr.hw, > + &gcc_usb34_sec_phy_pipe_clk_src.clkr.hw, > }, > .num_parents = 1, > .flags = CLK_SET_RATE_PARENT, > @@ -5298,6 +5865,33 @@ static struct clk_regmap_mux gcc_usb3_tert_phy_pipe_clk_src = { > }, > }; > > +static const struct parent_map gcc_parent_map_36[] = { > + { P_GCC_USB3_TERT_PHY_PIPE_CLK_SRC, 0 }, > + { P_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 1 }, > + { P_GCC_USB4_2_PHY_PIPEGMUX_CLK_SRC, 3 }, > +}; > + > +static const struct clk_parent_data gcc_parent_data_36[] = { > + { .hw = &gcc_usb3_tert_phy_pipe_clk_src.clkr.hw }, > + { .index = DT_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, > + { .index = DT_GCC_USB4_2_PHY_PIPEGMUX_CLK_SRC }, > +}; > + > +static struct clk_regmap_mux gcc_usb34_tert_phy_pipe_clk_src = { > + .reg = 0xa2070, > + .shift = 0, > + .width = 2, > + .parent_map = gcc_parent_map_36, > + .clkr = { > + .hw.init = &(const struct clk_init_data) { > + .name = "gcc_usb34_tert_phy_pipe_clk_src", > + .parent_data = gcc_parent_data_36, > + .num_parents = ARRAY_SIZE(gcc_parent_data_36), > + .ops = &clk_regmap_mux_closest_ops, > + }, > + }, > +}; > + > static struct clk_branch gcc_usb3_tert_phy_pipe_clk = { > .halt_reg = 0xa2068, > .halt_check = BRANCH_HALT_SKIP, > @@ -5309,7 +5903,7 @@ static struct clk_branch gcc_usb3_tert_phy_pipe_clk = { > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb3_tert_phy_pipe_clk", > .parent_hws = (const struct clk_hw*[]) { > - &gcc_usb3_tert_phy_pipe_clk_src.clkr.hw, > + &gcc_usb34_tert_phy_pipe_clk_src.clkr.hw, > }, > .num_parents = 1, > .flags = CLK_SET_RATE_PARENT, > @@ -5335,12 +5929,17 @@ static struct clk_branch gcc_usb4_0_cfg_ahb_clk = { > > static struct clk_branch gcc_usb4_0_dp0_clk = { > .halt_reg = 0x9f060, > - .halt_check = BRANCH_HALT, > + .halt_check = BRANCH_HALT_SKIP, > .clkr = { > .enable_reg = 0x9f060, > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_0_dp0_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_0_phy_dp0_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5348,12 +5947,17 @@ static struct clk_branch gcc_usb4_0_dp0_clk = { > > static struct clk_branch gcc_usb4_0_dp1_clk = { > .halt_reg = 0x9f108, > - .halt_check = BRANCH_HALT, > + .halt_check = BRANCH_HALT_SKIP, > .clkr = { > .enable_reg = 0x9f108, > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_0_dp1_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_0_phy_dp1_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5385,6 +5989,11 @@ static struct clk_branch gcc_usb4_0_phy_p2rr2p_pipe_clk = { > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_0_phy_p2rr2p_pipe_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_0_phy_p2rr2p_pipe_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5398,6 +6007,11 @@ static struct clk_branch gcc_usb4_0_phy_pcie_pipe_clk = { > .enable_mask = BIT(19), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_0_phy_pcie_pipe_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_0_phy_pcie_pipe_mux_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5405,12 +6019,17 @@ static struct clk_branch gcc_usb4_0_phy_pcie_pipe_clk = { > > static struct clk_branch gcc_usb4_0_phy_rx0_clk = { > .halt_reg = 0x9f0b0, > - .halt_check = BRANCH_HALT, > + .halt_check = BRANCH_HALT_SKIP, > .clkr = { > .enable_reg = 0x9f0b0, > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_0_phy_rx0_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_0_phy_rx0_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5418,12 +6037,17 @@ static struct clk_branch gcc_usb4_0_phy_rx0_clk = { > > static struct clk_branch gcc_usb4_0_phy_rx1_clk = { > .halt_reg = 0x9f0c0, > - .halt_check = BRANCH_HALT, > + .halt_check = BRANCH_HALT_SKIP, > .clkr = { > .enable_reg = 0x9f0c0, > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_0_phy_rx1_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_0_phy_rx1_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5439,6 +6063,11 @@ static struct clk_branch gcc_usb4_0_phy_usb_pipe_clk = { > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_0_phy_usb_pipe_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb34_prim_phy_pipe_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5470,6 +6099,11 @@ static struct clk_branch gcc_usb4_0_sys_clk = { > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_0_sys_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_0_phy_sys_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5512,12 +6146,17 @@ static struct clk_branch gcc_usb4_1_cfg_ahb_clk = { > > static struct clk_branch gcc_usb4_1_dp0_clk = { > .halt_reg = 0x2b060, > - .halt_check = BRANCH_HALT, > + .halt_check = BRANCH_HALT_SKIP, > .clkr = { > .enable_reg = 0x2b060, > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_1_dp0_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_1_phy_dp0_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5525,12 +6164,17 @@ static struct clk_branch gcc_usb4_1_dp0_clk = { > > static struct clk_branch gcc_usb4_1_dp1_clk = { > .halt_reg = 0x2b108, > - .halt_check = BRANCH_HALT, > + .halt_check = BRANCH_HALT_SKIP, > .clkr = { > .enable_reg = 0x2b108, > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_1_dp1_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_1_phy_dp1_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5562,6 +6206,11 @@ static struct clk_branch gcc_usb4_1_phy_p2rr2p_pipe_clk = { > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_1_phy_p2rr2p_pipe_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_1_phy_p2rr2p_pipe_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5575,6 +6224,11 @@ static struct clk_branch gcc_usb4_1_phy_pcie_pipe_clk = { > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_1_phy_pcie_pipe_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5582,12 +6236,17 @@ static struct clk_branch gcc_usb4_1_phy_pcie_pipe_clk = { > > static struct clk_branch gcc_usb4_1_phy_rx0_clk = { > .halt_reg = 0x2b0b0, > - .halt_check = BRANCH_HALT, > + .halt_check = BRANCH_HALT_SKIP, > .clkr = { > .enable_reg = 0x2b0b0, > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_1_phy_rx0_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_1_phy_rx0_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5595,12 +6254,17 @@ static struct clk_branch gcc_usb4_1_phy_rx0_clk = { > > static struct clk_branch gcc_usb4_1_phy_rx1_clk = { > .halt_reg = 0x2b0c0, > - .halt_check = BRANCH_HALT, > + .halt_check = BRANCH_HALT_SKIP, > .clkr = { > .enable_reg = 0x2b0c0, > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_1_phy_rx1_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_1_phy_rx1_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5616,6 +6280,11 @@ static struct clk_branch gcc_usb4_1_phy_usb_pipe_clk = { > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_1_phy_usb_pipe_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb34_sec_phy_pipe_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5647,6 +6316,11 @@ static struct clk_branch gcc_usb4_1_sys_clk = { > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_1_sys_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_1_phy_sys_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5689,12 +6363,17 @@ static struct clk_branch gcc_usb4_2_cfg_ahb_clk = { > > static struct clk_branch gcc_usb4_2_dp0_clk = { > .halt_reg = 0x11060, > - .halt_check = BRANCH_HALT, > + .halt_check = BRANCH_HALT_SKIP, > .clkr = { > .enable_reg = 0x11060, > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_2_dp0_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_2_phy_dp0_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5702,12 +6381,17 @@ static struct clk_branch gcc_usb4_2_dp0_clk = { > > static struct clk_branch gcc_usb4_2_dp1_clk = { > .halt_reg = 0x11108, > - .halt_check = BRANCH_HALT, > + .halt_check = BRANCH_HALT_SKIP, > .clkr = { > .enable_reg = 0x11108, > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_2_dp1_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_2_phy_dp1_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5739,6 +6423,11 @@ static struct clk_branch gcc_usb4_2_phy_p2rr2p_pipe_clk = { > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_2_phy_p2rr2p_pipe_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_2_phy_p2rr2p_pipe_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5752,6 +6441,11 @@ static struct clk_branch gcc_usb4_2_phy_pcie_pipe_clk = { > .enable_mask = BIT(1), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_2_phy_pcie_pipe_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_2_phy_pcie_pipe_mux_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5759,12 +6453,17 @@ static struct clk_branch gcc_usb4_2_phy_pcie_pipe_clk = { > > static struct clk_branch gcc_usb4_2_phy_rx0_clk = { > .halt_reg = 0x110b0, > - .halt_check = BRANCH_HALT, > + .halt_check = BRANCH_HALT_SKIP, > .clkr = { > .enable_reg = 0x110b0, > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_2_phy_rx0_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_2_phy_rx0_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5772,12 +6471,17 @@ static struct clk_branch gcc_usb4_2_phy_rx0_clk = { > > static struct clk_branch gcc_usb4_2_phy_rx1_clk = { > .halt_reg = 0x110c0, > - .halt_check = BRANCH_HALT, > + .halt_check = BRANCH_HALT_SKIP, > .clkr = { > .enable_reg = 0x110c0, > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_2_phy_rx1_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb4_2_phy_rx1_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -5793,6 +6497,11 @@ static struct clk_branch gcc_usb4_2_phy_usb_pipe_clk = { > .enable_mask = BIT(0), > .hw.init = &(const struct clk_init_data) { > .name = "gcc_usb4_2_phy_usb_pipe_clk", > + .parent_hws = (const struct clk_hw*[]) { > + &gcc_usb34_tert_phy_pipe_clk_src.clkr.hw, > + }, > + .num_parents = 1, > + .flags = CLK_SET_RATE_PARENT, > .ops = &clk_branch2_ops, > }, > }, > @@ -6483,6 +7192,9 @@ static struct clk_regmap *gcc_x1e80100_clocks[] = { > [GCC_USB30_TERT_MOCK_UTMI_CLK_SRC] = &gcc_usb30_tert_mock_utmi_clk_src.clkr, > [GCC_USB30_TERT_MOCK_UTMI_POSTDIV_CLK_SRC] = &gcc_usb30_tert_mock_utmi_postdiv_clk_src.clkr, > [GCC_USB30_TERT_SLEEP_CLK] = &gcc_usb30_tert_sleep_clk.clkr, > + [GCC_USB34_PRIM_PHY_PIPE_CLK_SRC] = &gcc_usb34_prim_phy_pipe_clk_src.clkr, > + [GCC_USB34_SEC_PHY_PIPE_CLK_SRC] = &gcc_usb34_sec_phy_pipe_clk_src.clkr, > + [GCC_USB34_TERT_PHY_PIPE_CLK_SRC] = &gcc_usb34_tert_phy_pipe_clk_src.clkr, > [GCC_USB3_MP_PHY_AUX_CLK] = &gcc_usb3_mp_phy_aux_clk.clkr, > [GCC_USB3_MP_PHY_AUX_CLK_SRC] = &gcc_usb3_mp_phy_aux_clk_src.clkr, > [GCC_USB3_MP_PHY_COM_AUX_CLK] = &gcc_usb3_mp_phy_com_aux_clk.clkr, > @@ -6508,11 +7220,18 @@ static struct clk_regmap *gcc_x1e80100_clocks[] = { > [GCC_USB4_0_DP1_CLK] = &gcc_usb4_0_dp1_clk.clkr, > [GCC_USB4_0_MASTER_CLK] = &gcc_usb4_0_master_clk.clkr, > [GCC_USB4_0_MASTER_CLK_SRC] = &gcc_usb4_0_master_clk_src.clkr, > + [GCC_USB4_0_PHY_DP0_CLK_SRC] = &gcc_usb4_0_phy_dp0_clk_src.clkr, > + [GCC_USB4_0_PHY_DP1_CLK_SRC] = &gcc_usb4_0_phy_dp1_clk_src.clkr, > [GCC_USB4_0_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_0_phy_p2rr2p_pipe_clk.clkr, > + [GCC_USB4_0_PHY_P2RR2P_PIPE_CLK_SRC] = &gcc_usb4_0_phy_p2rr2p_pipe_clk_src.clkr, > [GCC_USB4_0_PHY_PCIE_PIPE_CLK] = &gcc_usb4_0_phy_pcie_pipe_clk.clkr, > [GCC_USB4_0_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_0_phy_pcie_pipe_clk_src.clkr, > + [GCC_USB4_0_PHY_PCIE_PIPE_MUX_CLK_SRC] = &gcc_usb4_0_phy_pcie_pipe_mux_clk_src.clkr, > [GCC_USB4_0_PHY_RX0_CLK] = &gcc_usb4_0_phy_rx0_clk.clkr, > + [GCC_USB4_0_PHY_RX0_CLK_SRC] = &gcc_usb4_0_phy_rx0_clk_src.clkr, > [GCC_USB4_0_PHY_RX1_CLK] = &gcc_usb4_0_phy_rx1_clk.clkr, > + [GCC_USB4_0_PHY_RX1_CLK_SRC] = &gcc_usb4_0_phy_rx1_clk_src.clkr, > + [GCC_USB4_0_PHY_SYS_CLK_SRC] = &gcc_usb4_0_phy_sys_clk_src.clkr, > [GCC_USB4_0_PHY_USB_PIPE_CLK] = &gcc_usb4_0_phy_usb_pipe_clk.clkr, > [GCC_USB4_0_SB_IF_CLK] = &gcc_usb4_0_sb_if_clk.clkr, > [GCC_USB4_0_SB_IF_CLK_SRC] = &gcc_usb4_0_sb_if_clk_src.clkr, > @@ -6524,11 +7243,18 @@ static struct clk_regmap *gcc_x1e80100_clocks[] = { > [GCC_USB4_1_DP1_CLK] = &gcc_usb4_1_dp1_clk.clkr, > [GCC_USB4_1_MASTER_CLK] = &gcc_usb4_1_master_clk.clkr, > [GCC_USB4_1_MASTER_CLK_SRC] = &gcc_usb4_1_master_clk_src.clkr, > + [GCC_USB4_1_PHY_DP0_CLK_SRC] = &gcc_usb4_1_phy_dp0_clk_src.clkr, > + [GCC_USB4_1_PHY_DP1_CLK_SRC] = &gcc_usb4_1_phy_dp1_clk_src.clkr, > [GCC_USB4_1_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_1_phy_p2rr2p_pipe_clk.clkr, > + [GCC_USB4_1_PHY_P2RR2P_PIPE_CLK_SRC] = &gcc_usb4_1_phy_p2rr2p_pipe_clk_src.clkr, > [GCC_USB4_1_PHY_PCIE_PIPE_CLK] = &gcc_usb4_1_phy_pcie_pipe_clk.clkr, > [GCC_USB4_1_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_1_phy_pcie_pipe_clk_src.clkr, > + [GCC_USB4_1_PHY_PCIE_PIPE_MUX_CLK_SRC] = &gcc_usb4_1_phy_pcie_pipe_mux_clk_src.clkr, > [GCC_USB4_1_PHY_RX0_CLK] = &gcc_usb4_1_phy_rx0_clk.clkr, > + [GCC_USB4_1_PHY_RX0_CLK_SRC] = &gcc_usb4_1_phy_rx0_clk_src.clkr, > [GCC_USB4_1_PHY_RX1_CLK] = &gcc_usb4_1_phy_rx1_clk.clkr, > + [GCC_USB4_1_PHY_RX1_CLK_SRC] = &gcc_usb4_1_phy_rx1_clk_src.clkr, > + [GCC_USB4_1_PHY_SYS_CLK_SRC] = &gcc_usb4_1_phy_sys_clk_src.clkr, > [GCC_USB4_1_PHY_USB_PIPE_CLK] = &gcc_usb4_1_phy_usb_pipe_clk.clkr, > [GCC_USB4_1_SB_IF_CLK] = &gcc_usb4_1_sb_if_clk.clkr, > [GCC_USB4_1_SB_IF_CLK_SRC] = &gcc_usb4_1_sb_if_clk_src.clkr, > @@ -6540,11 +7266,18 @@ static struct clk_regmap *gcc_x1e80100_clocks[] = { > [GCC_USB4_2_DP1_CLK] = &gcc_usb4_2_dp1_clk.clkr, > [GCC_USB4_2_MASTER_CLK] = &gcc_usb4_2_master_clk.clkr, > [GCC_USB4_2_MASTER_CLK_SRC] = &gcc_usb4_2_master_clk_src.clkr, > + [GCC_USB4_2_PHY_DP0_CLK_SRC] = &gcc_usb4_2_phy_dp0_clk_src.clkr, > + [GCC_USB4_2_PHY_DP1_CLK_SRC] = &gcc_usb4_2_phy_dp1_clk_src.clkr, > [GCC_USB4_2_PHY_P2RR2P_PIPE_CLK] = &gcc_usb4_2_phy_p2rr2p_pipe_clk.clkr, > + [GCC_USB4_2_PHY_P2RR2P_PIPE_CLK_SRC] = &gcc_usb4_2_phy_p2rr2p_pipe_clk_src.clkr, > [GCC_USB4_2_PHY_PCIE_PIPE_CLK] = &gcc_usb4_2_phy_pcie_pipe_clk.clkr, > [GCC_USB4_2_PHY_PCIE_PIPE_CLK_SRC] = &gcc_usb4_2_phy_pcie_pipe_clk_src.clkr, > + [GCC_USB4_2_PHY_PCIE_PIPE_MUX_CLK_SRC] = &gcc_usb4_2_phy_pcie_pipe_mux_clk_src.clkr, > [GCC_USB4_2_PHY_RX0_CLK] = &gcc_usb4_2_phy_rx0_clk.clkr, > + [GCC_USB4_2_PHY_RX0_CLK_SRC] = &gcc_usb4_2_phy_rx0_clk_src.clkr, > [GCC_USB4_2_PHY_RX1_CLK] = &gcc_usb4_2_phy_rx1_clk.clkr, > + [GCC_USB4_2_PHY_RX1_CLK_SRC] = &gcc_usb4_2_phy_rx1_clk_src.clkr, > + [GCC_USB4_2_PHY_SYS_CLK_SRC] = &gcc_usb4_2_phy_sys_clk_src.clkr, > [GCC_USB4_2_PHY_USB_PIPE_CLK] = &gcc_usb4_2_phy_usb_pipe_clk.clkr, > [GCC_USB4_2_SB_IF_CLK] = &gcc_usb4_2_sb_if_clk.clkr, > [GCC_USB4_2_SB_IF_CLK_SRC] = &gcc_usb4_2_sb_if_clk_src.clkr, > @@ -6660,16 +7393,52 @@ static const struct qcom_reset_map gcc_x1e80100_resets[] = { > [GCC_USB3_UNIPHY_MP0_BCR] = { 0x19000 }, > [GCC_USB3_UNIPHY_MP1_BCR] = { 0x54000 }, > [GCC_USB3PHY_PHY_PRIM_BCR] = { 0x50004 }, > + [GCC_USB4PHY_PHY_PRIM_BCR] = { 0x5000c }, > [GCC_USB3PHY_PHY_SEC_BCR] = { 0x2a004 }, > + [GCC_USB4PHY_PHY_SEC_BCR] = { 0x2a00c }, > [GCC_USB3PHY_PHY_TERT_BCR] = { 0xa3004 }, > + [GCC_USB4PHY_PHY_TERT_BCR] = { 0xa300c }, > [GCC_USB3UNIPHY_PHY_MP0_BCR] = { 0x19004 }, > [GCC_USB3UNIPHY_PHY_MP1_BCR] = { 0x54004 }, > [GCC_USB4_0_BCR] = { 0x9f000 }, > [GCC_USB4_0_DP0_PHY_PRIM_BCR] = { 0x50010 }, > - [GCC_USB4_1_DP0_PHY_SEC_BCR] = { 0x2a010 }, > - [GCC_USB4_2_DP0_PHY_TERT_BCR] = { 0xa3010 }, > + [GCC_USB4_0_MISC_USB4_SYS_BCR] = { .reg = 0xad0f8, .bit = 0 }, > + [GCC_USB4_0_MISC_RX_CLK_0_BCR] = { .reg = 0xad0f8, .bit = 1 }, > + [GCC_USB4_0_MISC_RX_CLK_1_BCR] = { .reg = 0xad0f8, .bit = 2 }, > + [GCC_USB4_0_MISC_USB_PIPE_BCR] = { .reg = 0xad0f8, .bit = 3 }, > + [GCC_USB4_0_MISC_PCIE_PIPE_BCR] = { .reg = 0xad0f8, .bit = 4 }, > + [GCC_USB4_0_MISC_TMU_BCR] = { .reg = 0xad0f8, .bit = 5 }, > + [GCC_USB4_0_MISC_SB_IF_BCR] = { .reg = 0xad0f8, .bit = 6 }, > + [GCC_USB4_0_MISC_HIA_MSTR_BCR] = { .reg = 0xad0f8, .bit = 7 }, > + [GCC_USB4_0_MISC_AHB_BCR] = { .reg = 0xad0f8, .bit = 8 }, > + [GCC_USB4_0_MISC_DP0_MAX_PCLK_BCR] = { .reg = 0xad0f8, .bit = 9 }, > + [GCC_USB4_0_MISC_DP1_MAX_PCLK_BCR] = { .reg = 0xad0f8, .bit = 10 }, > [GCC_USB4_1_BCR] = { 0x2b000 }, > + [GCC_USB4_1_DP0_PHY_SEC_BCR] = { 0x2a010 }, > + [GCC_USB4_1_MISC_USB4_SYS_BCR] = { .reg = 0xae0f8, .bit = 0 }, > + [GCC_USB4_1_MISC_RX_CLK_0_BCR] = { .reg = 0xae0f8, .bit = 1 }, > + [GCC_USB4_1_MISC_RX_CLK_1_BCR] = { .reg = 0xae0f8, .bit = 2 }, > + [GCC_USB4_1_MISC_USB_PIPE_BCR] = { .reg = 0xae0f8, .bit = 3 }, > + [GCC_USB4_1_MISC_PCIE_PIPE_BCR] = { .reg = 0xae0f8, .bit = 4 }, > + [GCC_USB4_1_MISC_TMU_BCR] = { .reg = 0xae0f8, .bit = 5 }, > + [GCC_USB4_1_MISC_SB_IF_BCR] = { .reg = 0xae0f8, .bit = 6 }, > + [GCC_USB4_1_MISC_HIA_MSTR_BCR] = { .reg = 0xae0f8, .bit = 7 }, > + [GCC_USB4_1_MISC_AHB_BCR] = { .reg = 0xae0f8, .bit = 8 }, > + [GCC_USB4_1_MISC_DP0_MAX_PCLK_BCR] = { .reg = 0xae0f8, .bit = 9 }, > + [GCC_USB4_1_MISC_DP1_MAX_PCLK_BCR] = { .reg = 0xae0f8, .bit = 10 }, > [GCC_USB4_2_BCR] = { 0x11000 }, > + [GCC_USB4_2_DP0_PHY_TERT_BCR] = { 0xa3010 }, > + [GCC_USB4_2_MISC_USB4_SYS_BCR] = { .reg = 0xaf0f8, .bit = 0 }, > + [GCC_USB4_2_MISC_RX_CLK_0_BCR] = { .reg = 0xaf0f8, .bit = 1 }, > + [GCC_USB4_2_MISC_RX_CLK_1_BCR] = { .reg = 0xaf0f8, .bit = 2 }, > + [GCC_USB4_2_MISC_USB_PIPE_BCR] = { .reg = 0xaf0f8, .bit = 3 }, > + [GCC_USB4_2_MISC_PCIE_PIPE_BCR] = { .reg = 0xaf0f8, .bit = 4 }, > + [GCC_USB4_2_MISC_TMU_BCR] = { .reg = 0xaf0f8, .bit = 5 }, > + [GCC_USB4_2_MISC_SB_IF_BCR] = { .reg = 0xaf0f8, .bit = 6 }, > + [GCC_USB4_2_MISC_HIA_MSTR_BCR] = { .reg = 0xaf0f8, .bit = 7 }, > + [GCC_USB4_2_MISC_AHB_BCR] = { .reg = 0xaf0f8, .bit = 8 }, > + [GCC_USB4_2_MISC_DP0_MAX_PCLK_BCR] = { .reg = 0xaf0f8, .bit = 9 }, > + [GCC_USB4_2_MISC_DP1_MAX_PCLK_BCR] = { .reg = 0xaf0f8, .bit = 10 }, > [GCC_USB_0_PHY_BCR] = { 0x50020 }, > [GCC_USB_1_PHY_BCR] = { 0x2a020 }, > [GCC_USB_2_PHY_BCR] = { 0xa3020 }, > LGTM Reviewed-by: Bryan O'Donoghue <bod@kernel.org> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/3] clk: qcom: gcc-x1e80100: Add missing USB4 clocks/resets 2025-09-26 12:03 ` [PATCH 2/3] clk: qcom: gcc-x1e80100: " Konrad Dybcio 2025-09-27 10:42 ` Bryan O'Donoghue @ 2025-09-27 14:01 ` kernel test robot 2025-10-02 9:40 ` Konrad Dybcio 1 sibling, 1 reply; 10+ messages in thread From: kernel test robot @ 2025-09-27 14:01 UTC (permalink / raw) To: Konrad Dybcio, Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Rajendra Nayak, Wesley Cheng, Bryan O'Donoghue, Sibi Sankar, Abel Vesa Cc: oe-kbuild-all, linux-arm-msm, linux-clk, devicetree, linux-kernel Hi Konrad, kernel test robot noticed the following build warnings: [auto build test WARNING on 8e2755d7779a95dd61d8997ebce33ff8b1efd3fb] url: https://github.com/intel-lab-lkp/linux/commits/Konrad-Dybcio/dt-bindings-clock-qcom-x1e80100-gcc-Add-missing-USB4-clocks-resets/20250926-200520 base: 8e2755d7779a95dd61d8997ebce33ff8b1efd3fb patch link: https://lore.kernel.org/r/20250926-topic-hamoa_gcc_usb4-v1-2-25cad1700829%40oss.qualcomm.com patch subject: [PATCH 2/3] clk: qcom: gcc-x1e80100: Add missing USB4 clocks/resets config: riscv-randconfig-002-20250927 (https://download.01.org/0day-ci/archive/20250927/202509272140.wYFpHZfD-lkp@intel.com/config) compiler: riscv64-linux-gcc (GCC) 15.1.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250927/202509272140.wYFpHZfD-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202509272140.wYFpHZfD-lkp@intel.com/ All warnings (new ones prefixed by >>): >> drivers/clk/qcom/gcc-x1e80100.c:580:32: warning: 'gcc_parent_map_33' defined but not used [-Wunused-const-variable=] 580 | static const struct parent_map gcc_parent_map_33[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:570:32: warning: 'gcc_parent_map_32' defined but not used [-Wunused-const-variable=] 570 | static const struct parent_map gcc_parent_map_32[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:560:32: warning: 'gcc_parent_map_31' defined but not used [-Wunused-const-variable=] 560 | static const struct parent_map gcc_parent_map_31[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:550:32: warning: 'gcc_parent_map_30' defined but not used [-Wunused-const-variable=] 550 | static const struct parent_map gcc_parent_map_30[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:540:32: warning: 'gcc_parent_map_29' defined but not used [-Wunused-const-variable=] 540 | static const struct parent_map gcc_parent_map_29[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:530:32: warning: 'gcc_parent_map_28' defined but not used [-Wunused-const-variable=] 530 | static const struct parent_map gcc_parent_map_28[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:520:32: warning: 'gcc_parent_map_27' defined but not used [-Wunused-const-variable=] 520 | static const struct parent_map gcc_parent_map_27[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:510:32: warning: 'gcc_parent_map_26' defined but not used [-Wunused-const-variable=] 510 | static const struct parent_map gcc_parent_map_26[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:500:32: warning: 'gcc_parent_map_25' defined but not used [-Wunused-const-variable=] 500 | static const struct parent_map gcc_parent_map_25[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:490:32: warning: 'gcc_parent_map_24' defined but not used [-Wunused-const-variable=] 490 | static const struct parent_map gcc_parent_map_24[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:480:32: warning: 'gcc_parent_map_23' defined but not used [-Wunused-const-variable=] 480 | static const struct parent_map gcc_parent_map_23[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:470:32: warning: 'gcc_parent_map_22' defined but not used [-Wunused-const-variable=] 470 | static const struct parent_map gcc_parent_map_22[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:460:32: warning: 'gcc_parent_map_21' defined but not used [-Wunused-const-variable=] 460 | static const struct parent_map gcc_parent_map_21[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:450:32: warning: 'gcc_parent_map_20' defined but not used [-Wunused-const-variable=] 450 | static const struct parent_map gcc_parent_map_20[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:440:32: warning: 'gcc_parent_map_19' defined but not used [-Wunused-const-variable=] 440 | static const struct parent_map gcc_parent_map_19[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:430:32: warning: 'gcc_parent_map_18' defined but not used [-Wunused-const-variable=] 430 | static const struct parent_map gcc_parent_map_18[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:420:32: warning: 'gcc_parent_map_17' defined but not used [-Wunused-const-variable=] 420 | static const struct parent_map gcc_parent_map_17[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:410:32: warning: 'gcc_parent_map_16' defined but not used [-Wunused-const-variable=] 410 | static const struct parent_map gcc_parent_map_16[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:400:32: warning: 'gcc_parent_map_15' defined but not used [-Wunused-const-variable=] 400 | static const struct parent_map gcc_parent_map_15[] = { | ^~~~~~~~~~~~~~~~~ >> drivers/clk/qcom/gcc-x1e80100.c:390:32: warning: 'gcc_parent_map_14' defined but not used [-Wunused-const-variable=] 390 | static const struct parent_map gcc_parent_map_14[] = { | ^~~~~~~~~~~~~~~~~ drivers/clk/qcom/gcc-x1e80100.c:380:32: warning: 'gcc_parent_map_13' defined but not used [-Wunused-const-variable=] 380 | static const struct parent_map gcc_parent_map_13[] = { | ^~~~~~~~~~~~~~~~~ Kconfig warnings: (for reference only) WARNING: unmet direct dependencies detected for ARCH_HAS_ELF_CORE_EFLAGS Depends on [n]: BINFMT_ELF [=n] && ELF_CORE [=y] Selected by [y]: - RISCV [=y] vim +/gcc_parent_map_33 +580 drivers/clk/qcom/gcc-x1e80100.c 389 > 390 static const struct parent_map gcc_parent_map_14[] = { 391 { P_GCC_USB4_0_PHY_DP1_GMUX_CLK_SRC, 0 }, 392 { P_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, 393 }; 394 395 static const struct clk_parent_data gcc_parent_data_14[] = { 396 { .index = DT_GCC_USB4_0_PHY_DP1_GMUX_CLK_SRC }, 397 { .index = DT_USB4_0_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, 398 }; 399 > 400 static const struct parent_map gcc_parent_map_15[] = { 401 { P_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 }, 402 { P_BI_TCXO, 2 }, 403 }; 404 405 static const struct clk_parent_data gcc_parent_data_15[] = { 406 { .index = DT_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK }, 407 { .index = DT_BI_TCXO }, 408 }; 409 > 410 static const struct parent_map gcc_parent_map_16[] = { 411 { P_GCC_USB4_0_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 }, 412 { P_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK, 1 }, 413 }; 414 415 static const struct clk_parent_data gcc_parent_data_16[] = { 416 { .index = DT_GCC_USB4_0_PHY_PCIE_PIPEGMUX_CLK_SRC }, 417 { .index = DT_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK }, 418 }; 419 > 420 static const struct parent_map gcc_parent_map_17[] = { 421 { P_QUSB4PHY_0_GCC_USB4_RX0_CLK, 0 }, 422 { P_BI_TCXO, 2 }, 423 }; 424 425 static const struct clk_parent_data gcc_parent_data_17[] = { 426 { .index = DT_QUSB4PHY_0_GCC_USB4_RX0_CLK }, 427 { .index = DT_BI_TCXO }, 428 }; 429 > 430 static const struct parent_map gcc_parent_map_18[] = { 431 { P_QUSB4PHY_0_GCC_USB4_RX1_CLK, 0 }, 432 { P_BI_TCXO, 2 }, 433 }; 434 435 static const struct clk_parent_data gcc_parent_data_18[] = { 436 { .index = DT_QUSB4PHY_0_GCC_USB4_RX1_CLK }, 437 { .index = DT_BI_TCXO }, 438 }; 439 > 440 static const struct parent_map gcc_parent_map_19[] = { 441 { P_GCC_USB4_0_PHY_SYS_PIPEGMUX_CLK_SRC, 0 }, 442 { P_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 }, 443 }; 444 445 static const struct clk_parent_data gcc_parent_data_19[] = { 446 { .index = DT_GCC_USB4_0_PHY_SYS_PIPEGMUX_CLK_SRC }, 447 { .index = DT_USB4_0_PHY_GCC_USB4_PCIE_PIPE_CLK }, 448 }; 449 > 450 static const struct parent_map gcc_parent_map_20[] = { 451 { P_GCC_USB4_1_PHY_DP0_GMUX_CLK_SRC, 0 }, 452 { P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, 453 }; 454 455 static const struct clk_parent_data gcc_parent_data_20[] = { 456 { .index = DT_GCC_USB4_1_PHY_DP0_GMUX_CLK_SRC }, 457 { .index = DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, 458 }; 459 > 460 static const struct parent_map gcc_parent_map_21[] = { 461 { P_GCC_USB4_1_PHY_DP1_GMUX_CLK_SRC, 0 }, 462 { P_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, 463 }; 464 465 static const struct clk_parent_data gcc_parent_data_21[] = { 466 { .index = DT_GCC_USB4_1_PHY_DP1_GMUX_CLK_SRC }, 467 { .index = DT_USB4_1_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, 468 }; 469 > 470 static const struct parent_map gcc_parent_map_22[] = { 471 { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 }, 472 { P_BI_TCXO, 2 }, 473 }; 474 475 static const struct clk_parent_data gcc_parent_data_22[] = { 476 { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK }, 477 { .index = DT_BI_TCXO }, 478 }; 479 > 480 static const struct parent_map gcc_parent_map_23[] = { 481 { P_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 }, 482 { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 1 }, 483 }; 484 485 static const struct clk_parent_data gcc_parent_data_23[] = { 486 { .index = DT_GCC_USB4_1_PHY_PCIE_PIPEGMUX_CLK_SRC }, 487 { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK }, 488 }; 489 > 490 static const struct parent_map gcc_parent_map_24[] = { 491 { P_QUSB4PHY_1_GCC_USB4_RX0_CLK, 0 }, 492 { P_BI_TCXO, 2 }, 493 }; 494 495 static const struct clk_parent_data gcc_parent_data_24[] = { 496 { .index = DT_QUSB4PHY_1_GCC_USB4_RX0_CLK }, 497 { .index = DT_BI_TCXO }, 498 }; 499 > 500 static const struct parent_map gcc_parent_map_25[] = { 501 { P_QUSB4PHY_1_GCC_USB4_RX1_CLK, 0 }, 502 { P_BI_TCXO, 2 }, 503 }; 504 505 static const struct clk_parent_data gcc_parent_data_25[] = { 506 { .index = DT_QUSB4PHY_1_GCC_USB4_RX1_CLK }, 507 { .index = DT_BI_TCXO }, 508 }; 509 > 510 static const struct parent_map gcc_parent_map_26[] = { 511 { P_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC, 0 }, 512 { P_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 }, 513 }; 514 515 static const struct clk_parent_data gcc_parent_data_26[] = { 516 { .index = DT_GCC_USB4_1_PHY_SYS_PIPEGMUX_CLK_SRC }, 517 { .index = DT_USB4_1_PHY_GCC_USB4_PCIE_PIPE_CLK }, 518 }; 519 > 520 static const struct parent_map gcc_parent_map_27[] = { 521 { P_GCC_USB4_2_PHY_DP0_GMUX_CLK_SRC, 0 }, 522 { P_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, 523 }; 524 525 static const struct clk_parent_data gcc_parent_data_27[] = { 526 { .index = DT_GCC_USB4_2_PHY_DP0_GMUX_CLK_SRC }, 527 { .index = DT_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, 528 }; 529 > 530 static const struct parent_map gcc_parent_map_28[] = { 531 { P_GCC_USB4_2_PHY_DP1_GMUX_CLK_SRC, 0 }, 532 { P_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK, 2 }, 533 }; 534 535 static const struct clk_parent_data gcc_parent_data_28[] = { 536 { .index = DT_GCC_USB4_2_PHY_DP1_GMUX_CLK_SRC }, 537 { .index = DT_USB4_2_PHY_GCC_USB4RTR_MAX_PIPE_CLK }, 538 }; 539 > 540 static const struct parent_map gcc_parent_map_29[] = { 541 { P_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK, 0 }, 542 { P_BI_TCXO, 2 }, 543 }; 544 545 static const struct clk_parent_data gcc_parent_data_29[] = { 546 { .index = DT_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK }, 547 { .index = DT_BI_TCXO }, 548 }; 549 > 550 static const struct parent_map gcc_parent_map_30[] = { 551 { P_GCC_USB4_2_PHY_PCIE_PIPEGMUX_CLK_SRC, 0 }, 552 { P_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK, 1 }, 553 }; 554 555 static const struct clk_parent_data gcc_parent_data_30[] = { 556 { .index = DT_GCC_USB4_2_PHY_PCIE_PIPEGMUX_CLK_SRC }, 557 { .index = DT_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK }, 558 }; 559 > 560 static const struct parent_map gcc_parent_map_31[] = { 561 { P_QUSB4PHY_2_GCC_USB4_RX0_CLK, 0 }, 562 { P_BI_TCXO, 2 }, 563 }; 564 565 static const struct clk_parent_data gcc_parent_data_31[] = { 566 { .index = DT_QUSB4PHY_2_GCC_USB4_RX0_CLK }, 567 { .index = DT_BI_TCXO }, 568 }; 569 > 570 static const struct parent_map gcc_parent_map_32[] = { 571 { P_QUSB4PHY_2_GCC_USB4_RX1_CLK, 0 }, 572 { P_BI_TCXO, 2 }, 573 }; 574 575 static const struct clk_parent_data gcc_parent_data_32[] = { 576 { .index = DT_QUSB4PHY_2_GCC_USB4_RX1_CLK }, 577 { .index = DT_BI_TCXO }, 578 }; 579 > 580 static const struct parent_map gcc_parent_map_33[] = { 581 { P_GCC_USB4_2_PHY_SYS_PIPEGMUX_CLK_SRC, 0 }, 582 { P_USB4_2_PHY_GCC_USB4_PCIE_PIPE_CLK, 2 }, 583 }; 584 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/3] clk: qcom: gcc-x1e80100: Add missing USB4 clocks/resets 2025-09-27 14:01 ` kernel test robot @ 2025-10-02 9:40 ` Konrad Dybcio 0 siblings, 0 replies; 10+ messages in thread From: Konrad Dybcio @ 2025-10-02 9:40 UTC (permalink / raw) To: kernel test robot, Konrad Dybcio, Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Rajendra Nayak, Wesley Cheng, Bryan O'Donoghue, Sibi Sankar, Abel Vesa Cc: oe-kbuild-all, linux-arm-msm, linux-clk, devicetree, linux-kernel On 9/27/25 4:01 PM, kernel test robot wrote: > Hi Konrad, > > kernel test robot noticed the following build warnings: > > [auto build test WARNING on 8e2755d7779a95dd61d8997ebce33ff8b1efd3fb] > > url: https://github.com/intel-lab-lkp/linux/commits/Konrad-Dybcio/dt-bindings-clock-qcom-x1e80100-gcc-Add-missing-USB4-clocks-resets/20250926-200520 > base: 8e2755d7779a95dd61d8997ebce33ff8b1efd3fb > patch link: https://lore.kernel.org/r/20250926-topic-hamoa_gcc_usb4-v1-2-25cad1700829%40oss.qualcomm.com > patch subject: [PATCH 2/3] clk: qcom: gcc-x1e80100: Add missing USB4 clocks/resets > config: riscv-randconfig-002-20250927 (https://download.01.org/0day-ci/archive/20250927/202509272140.wYFpHZfD-lkp@intel.com/config) > compiler: riscv64-linux-gcc (GCC) 15.1.0 > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250927/202509272140.wYFpHZfD-lkp@intel.com/reproduce) > > If you fix the issue in a separate patch/commit (i.e. not just a new version of > the same patch/commit), kindly add following tags > | Reported-by: kernel test robot <lkp@intel.com> > | Closes: https://lore.kernel.org/oe-kbuild-all/202509272140.wYFpHZfD-lkp@intel.com/ > > All warnings (new ones prefixed by >>): > >>> drivers/clk/qcom/gcc-x1e80100.c:580:32: warning: 'gcc_parent_map_33' defined but not used [-Wunused-const-variable=] > 580 | static const struct parent_map gcc_parent_map_33[] = { I initially used a different magic clock struct, but the current clk_regmap_phy_mux doesn't need it. I'll resend with that fixed. Konrad ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3/3] arm64: dts: qcom: x1e80100: Extend the gcc input clock list 2025-09-26 12:03 [PATCH 0/3] X1E GCC USB4 clock fix-ups Konrad Dybcio 2025-09-26 12:03 ` [PATCH 1/3] dt-bindings: clock: qcom,x1e80100-gcc: Add missing USB4 clocks/resets Konrad Dybcio 2025-09-26 12:03 ` [PATCH 2/3] clk: qcom: gcc-x1e80100: " Konrad Dybcio @ 2025-09-26 12:03 ` Konrad Dybcio 2025-09-27 10:52 ` Bryan O'Donoghue 2 siblings, 1 reply; 10+ messages in thread From: Konrad Dybcio @ 2025-09-26 12:03 UTC (permalink / raw) To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Rajendra Nayak, Konrad Dybcio, Wesley Cheng, Bryan O'Donoghue, Sibi Sankar, Abel Vesa Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Konrad Dybcio From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> With the recent dt-bindings update, the missing USB4 clocks have been added. Extend the existing list to make sure the DT contains the expected amount of 'clocks' entries. Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> --- arch/arm64/boot/dts/qcom/x1e80100.dtsi | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/x1e80100.dtsi b/arch/arm64/boot/dts/qcom/x1e80100.dtsi index 51576d9c935decbc61a8e4200de83e739f7da814..cc76b9933a9bbff396ec4739f4a1dd3d2cc81f0f 100644 --- a/arch/arm64/boot/dts/qcom/x1e80100.dtsi +++ b/arch/arm64/boot/dts/qcom/x1e80100.dtsi @@ -807,7 +807,34 @@ gcc: clock-controller@100000 { <0>, <&usb_1_ss0_qmpphy QMP_USB43DP_USB3_PIPE_CLK>, <&usb_1_ss1_qmpphy QMP_USB43DP_USB3_PIPE_CLK>, - <&usb_1_ss2_qmpphy QMP_USB43DP_USB3_PIPE_CLK>; + <&usb_1_ss2_qmpphy QMP_USB43DP_USB3_PIPE_CLK>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>, + <0>; power-domains = <&rpmhpd RPMHPD_CX>; #clock-cells = <1>; -- 2.51.0 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 3/3] arm64: dts: qcom: x1e80100: Extend the gcc input clock list 2025-09-26 12:03 ` [PATCH 3/3] arm64: dts: qcom: x1e80100: Extend the gcc input clock list Konrad Dybcio @ 2025-09-27 10:52 ` Bryan O'Donoghue 0 siblings, 0 replies; 10+ messages in thread From: Bryan O'Donoghue @ 2025-09-27 10:52 UTC (permalink / raw) To: Konrad Dybcio, Bjorn Andersson, Michael Turquette, Stephen Boyd, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Rajendra Nayak, Wesley Cheng, Sibi Sankar, Abel Vesa Cc: linux-arm-msm, linux-clk, devicetree, linux-kernel, Konrad Dybcio On 26/09/2025 13:03, Konrad Dybcio wrote: > From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > > With the recent dt-bindings update, the missing USB4 clocks have been > added. > > Extend the existing list to make sure the DT contains the expected > amount of 'clocks' entries. Small nit, "expected number" would be better. > Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > --- > arch/arm64/boot/dts/qcom/x1e80100.dtsi | 29 ++++++++++++++++++++++++++++- > 1 file changed, 28 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/boot/dts/qcom/x1e80100.dtsi b/arch/arm64/boot/dts/qcom/x1e80100.dtsi > index 51576d9c935decbc61a8e4200de83e739f7da814..cc76b9933a9bbff396ec4739f4a1dd3d2cc81f0f 100644 > --- a/arch/arm64/boot/dts/qcom/x1e80100.dtsi > +++ b/arch/arm64/boot/dts/qcom/x1e80100.dtsi > @@ -807,7 +807,34 @@ gcc: clock-controller@100000 { > <0>, > <&usb_1_ss0_qmpphy QMP_USB43DP_USB3_PIPE_CLK>, > <&usb_1_ss1_qmpphy QMP_USB43DP_USB3_PIPE_CLK>, > - <&usb_1_ss2_qmpphy QMP_USB43DP_USB3_PIPE_CLK>; > + <&usb_1_ss2_qmpphy QMP_USB43DP_USB3_PIPE_CLK>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>, > + <0>; > > power-domains = <&rpmhpd RPMHPD_CX>; > #clock-cells = <1>; > Reviewed-by: Bryan O'Donoghue <bod@kernel.org> ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-10-02 9:40 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-09-26 12:03 [PATCH 0/3] X1E GCC USB4 clock fix-ups Konrad Dybcio 2025-09-26 12:03 ` [PATCH 1/3] dt-bindings: clock: qcom,x1e80100-gcc: Add missing USB4 clocks/resets Konrad Dybcio 2025-09-27 10:40 ` Bryan O'Donoghue 2025-10-02 2:26 ` Rob Herring (Arm) 2025-09-26 12:03 ` [PATCH 2/3] clk: qcom: gcc-x1e80100: " Konrad Dybcio 2025-09-27 10:42 ` Bryan O'Donoghue 2025-09-27 14:01 ` kernel test robot 2025-10-02 9:40 ` Konrad Dybcio 2025-09-26 12:03 ` [PATCH 3/3] arm64: dts: qcom: x1e80100: Extend the gcc input clock list Konrad Dybcio 2025-09-27 10:52 ` Bryan O'Donoghue
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).