* [PATCH v2 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add the cfg_ahb clock for Nord
2026-11-12 15:36 [PATCH v2 0/3] phy: qcom: Describe the AHB2PHY bridge clock on Nord Bartosz Golaszewski
@ 2026-11-12 15:36 ` Bartosz Golaszewski
2026-11-13 10:07 ` Krzysztof Kozlowski
2026-11-12 15:36 ` [PATCH v2 2/3] dt-bindings: phy: qcom,snps-eusb2-phy: Add Nord bus clock Bartosz Golaszewski
2026-11-12 15:36 ` [PATCH v2 3/3] phy: phy-snps-eusb2: Enable AHB2PHY bus clock on Nord Bartosz Golaszewski
2 siblings, 1 reply; 8+ messages in thread
From: Bartosz Golaszewski @ 2026-11-12 15:36 UTC (permalink / raw)
To: Vinod Koul, Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Abel Vesa, Shawn Guo
Cc: linux-arm-msm, linux-phy, devicetree, linux-kernel, Bartosz Golaszewski
From: Shawn Guo <shengchao.guo@oss.qualcomm.com>
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.
While at it: make the constraints stricter than the global settings: set
minItems to 5 as all three architectures require the cfg_ahb clock.
Fixes: 674e602140a1 ("dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Document the Nord QMP PHY")
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
[Bartosz: fix constraints]
Co-developed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
.../devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml | 3 +++
1 file changed, 3 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 13e64fe510b8f..8d09e6937fef0 100644
--- a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
@@ -209,11 +209,13 @@ 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:
+ minItems: 5
maxItems: 5
clock-names:
items:
@@ -229,6 +231,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.47.3
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v2 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add the cfg_ahb clock for Nord
2026-11-12 15:36 ` [PATCH v2 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add the cfg_ahb clock for Nord Bartosz Golaszewski
@ 2026-11-13 10:07 ` Krzysztof Kozlowski
2026-11-13 10:45 ` Bartosz Golaszewski
0 siblings, 1 reply; 8+ messages in thread
From: Krzysztof Kozlowski @ 2026-11-13 10:07 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Vinod Koul, Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Abel Vesa, Shawn Guo,
linux-arm-msm, linux-phy, devicetree, linux-kernel
On Thu, Nov 12, 2026 at 04:36:38PM +0100, Bartosz Golaszewski wrote:
> .../devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml | 3 +++
> 1 file changed, 3 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 13e64fe510b8f..8d09e6937fef0 100644
> --- a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
> +++ b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
> @@ -209,11 +209,13 @@ 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:
> + minItems: 5
> maxItems: 5
> clock-names:
> items:
> @@ -229,6 +231,7 @@ allOf:
> compatible:
> contains:
> enum:
> + - qcom,nord-qmp-usb3-dp-phy
I don't understand why it is added to two blocks constraining clocks.
Does it even pass checks?
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add the cfg_ahb clock for Nord
2026-11-13 10:07 ` Krzysztof Kozlowski
@ 2026-11-13 10:45 ` Bartosz Golaszewski
2026-11-13 11:47 ` Krzysztof Kozlowski
0 siblings, 1 reply; 8+ messages in thread
From: Bartosz Golaszewski @ 2026-11-13 10:45 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Bartosz Golaszewski, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Abel Vesa, Shawn Guo, linux-arm-msm, linux-phy,
devicetree, linux-kernel
On Fri, Nov 13, 2026 at 11:07:38AM +0100, Krzysztof Kozlowski wrote:
> On Thu, Nov 12, 2026 at 04:36:38PM +0100, Bartosz Golaszewski wrote:
> > .../devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml | 3 +++
> > 1 file changed, 3 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 13e64fe510b8f..8d09e6937fef0 100644
> > --- a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
> > +++ b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
> > @@ -209,11 +209,13 @@ 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:
> > + minItems: 5
> > maxItems: 5
> > clock-names:
> > items:
> > @@ -229,6 +231,7 @@ allOf:
> > compatible:
> > contains:
> > enum:
> > + - qcom,nord-qmp-usb3-dp-phy
>
> I don't understand why it is added to two blocks constraining clocks.
> Does it even pass checks?
>
Yes, it passes dtbs_check in my WiP branch for USB nodes that will be
sent as v4 and takes the binding changes into account.
First we add the "qcom,nord-qmp-usb3-dp-phy" to the if block that sets
minItems to 5. Then we exclude that compatible in the block that does an
if not and sets minItems: 4 for all non-matching compatibles. This is in
line with what's being done for existing "qcom,sc7180-qmp-usb3-dp-phy"
and "qcom,sdm845-qmp-usb3-dp-phy" compatibles.
Bart
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add the cfg_ahb clock for Nord
2026-11-13 10:45 ` Bartosz Golaszewski
@ 2026-11-13 11:47 ` Krzysztof Kozlowski
0 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2026-11-13 11:47 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Bartosz Golaszewski, Vinod Koul, Neil Armstrong,
Manivannan Sadhasivam, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Abel Vesa, Shawn Guo, linux-arm-msm, linux-phy,
devicetree, linux-kernel
On 13/11/2026 11:45, Bartosz Golaszewski wrote:
> On Fri, Nov 13, 2026 at 11:07:38AM +0100, Krzysztof Kozlowski wrote:
>>> @@ -229,6 +231,7 @@ allOf:
>>> compatible:
>>> contains:
>>> enum:
>>> + - qcom,nord-qmp-usb3-dp-phy
>>
>> I don't understand why it is added to two blocks constraining clocks.
>> Does it even pass checks?
>>
>
> Yes, it passes dtbs_check in my WiP branch for USB nodes that will be
> sent as v4 and takes the binding changes into account.
>
> First we add the "qcom,nord-qmp-usb3-dp-phy" to the if block that sets
> minItems to 5. Then we exclude that compatible in the block that does an
> if not and sets minItems: 4 for all non-matching compatibles. This is in
> line with what's being done for existing "qcom,sc7180-qmp-usb3-dp-phy"
> and "qcom,sdm845-qmp-usb3-dp-phy" compatibles.
Oh my... what's with this binding :/
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 2/3] dt-bindings: phy: qcom,snps-eusb2-phy: Add Nord bus clock
2026-11-12 15:36 [PATCH v2 0/3] phy: qcom: Describe the AHB2PHY bridge clock on Nord Bartosz Golaszewski
2026-11-12 15:36 ` [PATCH v2 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add the cfg_ahb clock for Nord Bartosz Golaszewski
@ 2026-11-12 15:36 ` Bartosz Golaszewski
2026-11-13 10:08 ` Krzysztof Kozlowski
2026-11-12 15:36 ` [PATCH v2 3/3] phy: phy-snps-eusb2: Enable AHB2PHY bus clock on Nord Bartosz Golaszewski
2 siblings, 1 reply; 8+ messages in thread
From: Bartosz Golaszewski @ 2026-11-12 15:36 UTC (permalink / raw)
To: Vinod Koul, Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Abel Vesa, Shawn Guo
Cc: linux-arm-msm, linux-phy, devicetree, linux-kernel, Bartosz Golaszewski
From: Shawn Guo <shengchao.guo@oss.qualcomm.com>
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. Since the Nord PHY needs the second bus clock, it's not
really compatible with sm8550 so drop the fall-back. This is fine as no
DT source uses it yet.
Fixes: 4d1f3875f328 ("dt-bindings: phy: qcom,snps-eusb2-phy: Document the Nord eUSB2 PHY")
Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
[Bartosz: don't use the "qcom,sm8550-snps-eusb2-phy" fallback]
Co-developed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
.../bindings/phy/qcom,snps-eusb2-phy.yaml | 24 +++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
index 931cd0e7d297e..fbea2129939f9 100644
--- a/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
+++ b/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
@@ -19,13 +19,13 @@ properties:
- enum:
- qcom,eliza-snps-eusb2-phy
- qcom,milos-snps-eusb2-phy
- - qcom,nord-snps-eusb2-phy
- qcom,sar2130p-snps-eusb2-phy
- qcom,sdx75-snps-eusb2-phy
- qcom,sm8650-snps-eusb2-phy
- qcom,x1e80100-snps-eusb2-phy
- const: qcom,sm8550-snps-eusb2-phy
- const: qcom,sm8550-snps-eusb2-phy
+ - const: qcom,nord-snps-eusb2-phy
reg:
maxItems: 1
@@ -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.47.3
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v2 2/3] dt-bindings: phy: qcom,snps-eusb2-phy: Add Nord bus clock
2026-11-12 15:36 ` [PATCH v2 2/3] dt-bindings: phy: qcom,snps-eusb2-phy: Add Nord bus clock Bartosz Golaszewski
@ 2026-11-13 10:08 ` Krzysztof Kozlowski
0 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2026-11-13 10:08 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Vinod Koul, Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Abel Vesa, Shawn Guo,
linux-arm-msm, linux-phy, devicetree, linux-kernel
On Thu, Nov 12, 2026 at 04:36:39PM +0100, Bartosz Golaszewski wrote:
> From: Shawn Guo <shengchao.guo@oss.qualcomm.com>
>
> 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. Since the Nord PHY needs the second bus clock, it's not
> really compatible with sm8550 so drop the fall-back. This is fine as no
> DT source uses it yet.
>
> Fixes: 4d1f3875f328 ("dt-bindings: phy: qcom,snps-eusb2-phy: Document the Nord eUSB2 PHY")
> Signed-off-by: Shawn Guo <shengchao.guo@oss.qualcomm.com>
> [Bartosz: don't use the "qcom,sm8550-snps-eusb2-phy" fallback]
> Co-developed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
> ---
> .../bindings/phy/qcom,snps-eusb2-phy.yaml | 24 +++++++++++++++++++++-
> 1 file changed, 23 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
> index 931cd0e7d297e..fbea2129939f9 100644
> --- a/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
> +++ b/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-phy.yaml
> @@ -19,13 +19,13 @@ properties:
> - enum:
> - qcom,eliza-snps-eusb2-phy
> - qcom,milos-snps-eusb2-phy
> - - qcom,nord-snps-eusb2-phy
> - qcom,sar2130p-snps-eusb2-phy
> - qcom,sdx75-snps-eusb2-phy
> - qcom,sm8650-snps-eusb2-phy
> - qcom,x1e80100-snps-eusb2-phy
> - const: qcom,sm8550-snps-eusb2-phy
> - const: qcom,sm8550-snps-eusb2-phy
> + - const: qcom,nord-snps-eusb2-phy
These two should be an enum (and enum entries alphabetically sorted).
With this:
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 3/3] phy: phy-snps-eusb2: Enable AHB2PHY bus clock on Nord
2026-11-12 15:36 [PATCH v2 0/3] phy: qcom: Describe the AHB2PHY bridge clock on Nord Bartosz Golaszewski
2026-11-12 15:36 ` [PATCH v2 1/3] dt-bindings: phy: qcom,sc8280xp-qmp-usb43dp-phy: Add the cfg_ahb clock for Nord Bartosz Golaszewski
2026-11-12 15:36 ` [PATCH v2 2/3] dt-bindings: phy: qcom,snps-eusb2-phy: Add Nord bus clock Bartosz Golaszewski
@ 2026-11-12 15:36 ` Bartosz Golaszewski
2 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2026-11-12 15:36 UTC (permalink / raw)
To: Vinod Koul, Neil Armstrong, Manivannan Sadhasivam, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Abel Vesa, Shawn Guo
Cc: linux-arm-msm, linux-phy, devicetree, linux-kernel,
Bartosz Golaszewski, Manivannan Sadhasivam, Konrad Dybcio
From: Shawn Guo <shengchao.guo@oss.qualcomm.com>
On Nord, the eUSB2 PHY registers sit behind the AHB2PHY_0 bridge, gated
by NE_GCC_AHB2PHY_CLK. 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: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Tested-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@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 ee473b32f116d..4c70d15210c68 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);
@@ -607,6 +617,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.47.3
^ permalink raw reply [flat|nested] 8+ messages in thread