* [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