* [PATCH 0/3] phy: qcom: Describe the AHB2PHY bridge clock on Nord
@ 2026-10-08 1:50 Shawn Guo
2026-10-08 1:50 ` [PATCH 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add Nord cfg_ahb clock Shawn Guo
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Shawn Guo @ 2026-10-08 1:50 UTC (permalink / raw)
To: Vinod Koul
Cc: Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Abel Vesa,
Bartosz Golaszewski, Taniya Das, Krishna Kurapati, linux-arm-msm,
linux-phy, devicetree, linux-kernel, Shawn Guo
On Nord, the register space of all the USB PHYs (the two USB3-DP QMP
PHYs and the three eUSB2 PHYs) sits behind the AHB2PHY_0 bridge, which
is gated by NE_GCC_AHB2PHY_CLK. None of the PHYs currently describe or
enable that clock, so clk_disable_unused() gates it before the PHYs are
initialized. The PHY init sequences then never reach the hardware and
the controllers fail to come up:
dwc3-qcom a600000.usb: DWC3 controller soft reset failed.
dwc3-qcom a600000.usb: error -ETIMEDOUT: failed to initialize core
xhci-hcd xhci-hcd.2.auto: can't setup: -110
As a result, USB on Nord only works when booting with clk_ignore_unused.
An earlier attempt marked the clock always-on in the NE GCC driver [1].
This series instead makes the PHYs consumers of the bridge clock, so it
is only kept enabled while a PHY is in use:
- Patch 1 adds a fifth "cfg_ahb" clock to the Nord QMP USB3-DP PHY
binding. The qmp-combo driver already gets all clocks in bulk, so no
driver change is needed.
- Patches 2 and 3 add a "bus" clock to the Nord eUSB2 PHY binding, and
Nord-specific match data in the snps-eusb2 driver that enables it
alongside the "ref" clock.
[1] https://lore.kernel.org/r/20261007073146.3162478-1-shengchao.guo@oss.qualcomm.com
Shawn Guo (3):
dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add Nord cfg_ahb
clock
dt-bindings: phy: qcom,snps-eusb2-phy: Add Nord bus clock
phy: phy-snps-eusb2: Enable AHB2PHY bus clock on Nord
.../phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml | 2 ++
.../bindings/phy/qcom,snps-eusb2-phy.yaml | 22 +++++++++++++++++++
drivers/phy/phy-snps-eusb2.c | 13 +++++++++++
3 files changed, 37 insertions(+)
--
2.43.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add Nord cfg_ahb clock
2026-10-08 1:50 [PATCH 0/3] phy: qcom: Describe the AHB2PHY bridge clock on Nord Shawn Guo
@ 2026-10-08 1:50 ` Shawn Guo
2026-10-08 1:50 ` [PATCH 2/3] dt-bindings: phy: qcom,snps-eusb2-phy: Add Nord bus clock Shawn Guo
2026-10-08 1:50 ` [PATCH 3/3] phy: phy-snps-eusb2: Enable AHB2PHY bus clock on Nord Shawn Guo
2 siblings, 0 replies; 6+ messages in thread
From: Shawn Guo @ 2026-10-08 1:50 UTC (permalink / raw)
To: Vinod Koul
Cc: Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Abel Vesa,
Bartosz Golaszewski, Taniya Das, Krishna Kurapati, linux-arm-msm,
linux-phy, devicetree, linux-kernel, Shawn Guo
On Nord, the USB3-DP PHY registers are reached through the AHB2PHY_0
bridge, which is gated by NE_GCC_AHB2PHY_CLK. Describe the bridge clock
as a fifth "cfg_ahb" clock for Nord, using the same clock list as SC7180
and SDM845.
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
.../devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
index 13e64fe510b8..809bd4e1090a 100644
--- a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
@@ -209,6 +209,7 @@ allOf:
compatible:
contains:
enum:
+ - qcom,nord-qmp-usb3-dp-phy
- qcom,sc7180-qmp-usb3-dp-phy
- qcom,sdm845-qmp-usb3-dp-phy
then:
@@ -229,6 +230,7 @@ allOf:
compatible:
contains:
enum:
+ - qcom,nord-qmp-usb3-dp-phy
- qcom,x1e80100-qmp-usb3-dp-phy
- qcom,sc7180-qmp-usb3-dp-phy
- qcom,sdm845-qmp-usb3-dp-phy
--
2.43.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/3] dt-bindings: phy: qcom,snps-eusb2-phy: Add Nord bus clock
2026-10-08 1:50 [PATCH 0/3] phy: qcom: Describe the AHB2PHY bridge clock on Nord Shawn Guo
2026-10-08 1:50 ` [PATCH 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add Nord cfg_ahb clock Shawn Guo
@ 2026-10-08 1:50 ` Shawn Guo
2026-10-08 1:50 ` [PATCH 3/3] phy: phy-snps-eusb2: Enable AHB2PHY bus clock on Nord Shawn Guo
2 siblings, 0 replies; 6+ messages in thread
From: Shawn Guo @ 2026-10-08 1:50 UTC (permalink / raw)
To: Vinod Koul
Cc: Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Abel Vesa,
Bartosz Golaszewski, Taniya Das, Krishna Kurapati, linux-arm-msm,
linux-phy, devicetree, linux-kernel, Shawn Guo
On Nord, the eUSB2 PHY registers are reached through the AHB2PHY_0
bridge, which is gated by NE_GCC_AHB2PHY_CLK. Allow an optional
second "bus" clock for the AHB2PHY bridge, require it for
qcom,nord-snps-eusb2-phy, and keep other compatibles at the single
"ref" clock.
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
.../bindings/phy/qcom,snps-eusb2-phy.yaml | 22 +++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
index 931cd0e7d297..67f2a587e65c 100644
--- a/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
@@ -34,12 +34,16 @@ properties:
const: 0
clocks:
+ minItems: 1
items:
- description: ref
+ - description: AHB2PHY bridge clock for register access
clock-names:
+ minItems: 1
items:
- const: ref
+ - const: bus
resets:
maxItems: 1
@@ -77,6 +81,24 @@ allOf:
required:
- resets
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: qcom,nord-snps-eusb2-phy
+ then:
+ properties:
+ clocks:
+ minItems: 2
+ clock-names:
+ minItems: 2
+ else:
+ properties:
+ clocks:
+ maxItems: 1
+ clock-names:
+ maxItems: 1
+
additionalProperties: false
examples:
--
2.43.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 3/3] phy: phy-snps-eusb2: Enable AHB2PHY bus clock on Nord
2026-10-08 1:50 [PATCH 0/3] phy: qcom: Describe the AHB2PHY bridge clock on Nord Shawn Guo
2026-10-08 1:50 ` [PATCH 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add Nord cfg_ahb clock Shawn Guo
2026-10-08 1:50 ` [PATCH 2/3] dt-bindings: phy: qcom,snps-eusb2-phy: Add Nord bus clock Shawn Guo
@ 2026-10-08 1:50 ` Shawn Guo
2026-10-13 10:57 ` Konrad Dybcio
2026-10-13 13:00 ` Bartosz Golaszewski
2 siblings, 2 replies; 6+ messages in thread
From: Shawn Guo @ 2026-10-08 1:50 UTC (permalink / raw)
To: Vinod Koul
Cc: Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Abel Vesa,
Bartosz Golaszewski, Taniya Das, Krishna Kurapati, linux-arm-msm,
linux-phy, devicetree, linux-kernel, Shawn Guo
On Nord, the eUSB2 PHY registers sit behind the AHB2PHY_0 bridge, gated
by NE_GCC_AHB2PHY_CLK. The Nord PHY currently matches the sm8550
fallback, which only requests the "ref" clock, so the bridge clock is
never enabled by the PHY. When nothing else holds it, e.g. on boards
where only the USB20-only controller is in use, clk_disable_unused()
gates the bridge and PHY init accesses go nowhere:
xhci-hcd xhci-hcd.2.auto: can't setup: -110
Add Nord-specific match data that requests both "ref" and "bus" clocks,
reusing the existing Qualcomm init sequence. The bus clock is enabled
and disabled together with the ref clock in phy init/exit.
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
---
drivers/phy/phy-snps-eusb2.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/drivers/phy/phy-snps-eusb2.c b/drivers/phy/phy-snps-eusb2.c
index af4fa17ac6cb..8429599f428b 100644
--- a/drivers/phy/phy-snps-eusb2.c
+++ b/drivers/phy/phy-snps-eusb2.c
@@ -452,6 +452,16 @@ static const struct snps_eusb2_phy_drvdata sm8550_snps_eusb2_phy = {
.num_clks = ARRAY_SIZE(qcom_eusb2_hsphy_clock_names),
};
+static const char * const nord_eusb2_hsphy_clock_names[] = {
+ "ref", "bus",
+};
+
+static const struct snps_eusb2_phy_drvdata nord_snps_eusb2_phy = {
+ .phy_init = qcom_snps_eusb2_hsphy_init,
+ .clk_names = nord_eusb2_hsphy_clock_names,
+ .num_clks = ARRAY_SIZE(nord_eusb2_hsphy_clock_names),
+};
+
static int snps_eusb2_hsphy_init(struct phy *p)
{
struct snps_eusb2_hsphy *phy = phy_get_drvdata(p);
@@ -608,6 +618,9 @@ static int snps_eusb2_hsphy_probe(struct platform_device *pdev)
static const struct of_device_id snps_eusb2_hsphy_of_match_table[] = {
{
+ .compatible = "qcom,nord-snps-eusb2-phy",
+ .data = &nord_snps_eusb2_phy,
+ }, {
.compatible = "qcom,sm8550-snps-eusb2-phy",
.data = &sm8550_snps_eusb2_phy,
}, {
--
2.43.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/3] phy: phy-snps-eusb2: Enable AHB2PHY bus clock on Nord
2026-10-08 1:50 ` [PATCH 3/3] phy: phy-snps-eusb2: Enable AHB2PHY bus clock on Nord Shawn Guo
@ 2026-10-13 10:57 ` Konrad Dybcio
2026-10-13 13:00 ` Bartosz Golaszewski
1 sibling, 0 replies; 6+ messages in thread
From: Konrad Dybcio @ 2026-10-13 10:57 UTC (permalink / raw)
To: Shawn Guo, Vinod Koul
Cc: Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Abel Vesa,
Bartosz Golaszewski, Taniya Das, Krishna Kurapati, linux-arm-msm,
linux-phy, devicetree, linux-kernel
On 10/8/26 3:50 AM, Shawn Guo wrote:
> On Nord, the eUSB2 PHY registers sit behind the AHB2PHY_0 bridge, gated
> by NE_GCC_AHB2PHY_CLK. The Nord PHY currently matches the sm8550
> fallback, which only requests the "ref" clock, so the bridge clock is
> never enabled by the PHY. When nothing else holds it, e.g. on boards
> where only the USB20-only controller is in use, clk_disable_unused()
> gates the bridge and PHY init accesses go nowhere:
>
> xhci-hcd xhci-hcd.2.auto: can't setup: -110
>
> Add Nord-specific match data that requests both "ref" and "bus" clocks,
> reusing the existing Qualcomm init sequence. The bus clock is enabled
> and disabled together with the ref clock in phy init/exit.
>
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
> ---
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/3] phy: phy-snps-eusb2: Enable AHB2PHY bus clock on Nord
2026-10-08 1:50 ` [PATCH 3/3] phy: phy-snps-eusb2: Enable AHB2PHY bus clock on Nord Shawn Guo
2026-10-13 10:57 ` Konrad Dybcio
@ 2026-10-13 13:00 ` Bartosz Golaszewski
1 sibling, 0 replies; 6+ messages in thread
From: Bartosz Golaszewski @ 2026-10-13 13:00 UTC (permalink / raw)
To: Shawn Guo
Cc: Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Abel Vesa,
Bartosz Golaszewski, Taniya Das, Krishna Kurapati, linux-arm-msm,
linux-phy, devicetree, linux-kernel, Vinod Koul
On Thu, 8 Oct 2026 03:50:17 +0200, Shawn Guo
<shengchao.guo@oss.qualcomm.com> said:
> On Nord, the eUSB2 PHY registers sit behind the AHB2PHY_0 bridge, gated
> by NE_GCC_AHB2PHY_CLK. The Nord PHY currently matches the sm8550
> fallback, which only requests the "ref" clock, so the bridge clock is
> never enabled by the PHY. When nothing else holds it, e.g. on boards
> where only the USB20-only controller is in use, clk_disable_unused()
> gates the bridge and PHY init accesses go nowhere:
>
> xhci-hcd xhci-hcd.2.auto: can't setup: -110
>
> Add Nord-specific match data that requests both "ref" and "bus" clocks,
> reusing the existing Qualcomm init sequence. The bus clock is enabled
> and disabled together with the ref clock in phy init/exit.
>
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
> ---
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Tested-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-10-13 13:00 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-08 1:50 [PATCH 0/3] phy: qcom: Describe the AHB2PHY bridge clock on Nord Shawn Guo
2026-10-08 1:50 ` [PATCH 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add Nord cfg_ahb clock Shawn Guo
2026-10-08 1:50 ` [PATCH 2/3] dt-bindings: phy: qcom,snps-eusb2-phy: Add Nord bus clock Shawn Guo
2026-10-08 1:50 ` [PATCH 3/3] phy: phy-snps-eusb2: Enable AHB2PHY bus clock on Nord Shawn Guo
2026-10-13 10:57 ` Konrad Dybcio
2026-10-13 13:00 ` Bartosz Golaszewski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®