* [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
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ 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:59 ` sashiko-bot
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, 1 reply; 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
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply related [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:58 ` sashiko-bot
2026-10-08 1:50 ` [PATCH 3/3] phy: phy-snps-eusb2: Enable AHB2PHY bus clock on Nord Shawn Guo
2 siblings, 1 reply; 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
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply related [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
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 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
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/3] dt-bindings: phy: qcom,snps-eusb2-phy: Add Nord bus clock
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:58 ` sashiko-bot
0 siblings, 0 replies; 6+ messages in thread
From: sashiko-bot @ 2026-10-08 1:58 UTC (permalink / raw)
To: Shawn Guo
Cc: devicetree, vkoul, neil.armstrong, conor+dt, robh, olteanv,
linux-phy
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] dt-bindings: fallback incompatibility for qcom,nord-snps-eusb2-phy
--
commit fde27e15de912af2a37a383a23a0f964bc729bf2
Author: Shawn Guo <shengchao.guo@oss.qualcomm.com>
dt-bindings: phy: qcom,snps-eusb2-phy: Add Nord bus clock
This patch allows an optional second bus clock for the AHB2PHY bridge.
It requires this clock specifically for qcom,nord-snps-eusb2-phy, while
keeping other compatibles limited to the single ref clock.
> diff --git a/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
> index 931cd0e7d297e..67f2a587e65cc 100644
> --- a/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
> +++ b/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
[ ... ]
> @@ -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
[Severity: Medium]
Since Nord requires an additional bus clock for register access, is it
truly backward compatible with the sm8550 fallback?
Currently, properties:compatible requires Nord to use the sm8550 fallback:
properties:
compatible:
oneOf:
- items:
- enum:
- qcom,nord-snps-eusb2-phy
...
- const: qcom,sm8550-snps-eusb2-phy
If an older kernel uses the fallback driver to probe the Nord hardware, it
will only enable the ref clock. This will leave the AHB2PHY bridge clock
disabled, leading to register access timeouts (-110) during probe.
Should qcom,nord-snps-eusb2-phy be removed from the sm8550 fallback list
since it cannot be safely driven by the sm8550 driver?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261008015017.3359804-1-shengchao.guo@oss.qualcomm.com?part=2
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add Nord cfg_ahb clock
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:59 ` sashiko-bot
0 siblings, 0 replies; 6+ messages in thread
From: sashiko-bot @ 2026-10-08 1:59 UTC (permalink / raw)
To: Shawn Guo
Cc: neil.armstrong, devicetree, linux-phy, olteanv, robh, conor+dt,
vkoul
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] dt-bindings: phy: qmp-usb43dp: missing minItems constraint for cfg_ahb clock
--
commit 764bc6428baefa52be476d672ac87df285751a59
Author: Shawn Guo <shengchao.guo@oss.qualcomm.com>
dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add Nord cfg_ahb clock
This commit adds the Nord compatible string to the qmp-usb43dp PHY binding.
It includes Nord in the conditional blocks that require a fifth cfg_ahb clock.
> 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 13e64fe510b8f..809bd4e1090a7 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:
> properties:
> clocks:
> maxItems: 5
> clock-names:
> items:
> - const: aux
> - const: ref
> - const: com_aux
> - const: usb3_pipe
> - const: cfg_ahb
[Severity: Low]
The conditional block for platforms that require the fifth cfg_ahb clock
defines a 5-item list for clock-names, but it fails to specify minItems: 5
for clocks or clock-names.
Because the global schema allows minItems: 4, a device tree providing only
4 clocks will pass schema validation.
The driver uses devm_clk_bulk_get_optional() for these clocks, so it won't
fail to probe. However, as stated in the commit message, the cfg_ahb clock
is strictly required to gate the AHB2PHY bridge and access PHY registers.
Accessing unclocked registers will lead to a system hang or PHY failure.
Should this block include minItems: 5 to correctly enforce the presence of
the 5th clock? A follow-up check through the series ends shows this was not
corrected.
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261008015017.3359804-1-shengchao.guo@oss.qualcomm.com?part=1
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-10-08 2: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:59 ` sashiko-bot
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:58 ` sashiko-bot
2026-10-08 1:50 ` [PATCH 3/3] phy: phy-snps-eusb2: Enable AHB2PHY bus clock on Nord Shawn Guo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox