* [PATCH] arm64: dts: qcom: sc8280xp: Flatten usb controller nodes
@ 2026-05-07 14:29 Xilin Wu
2026-05-07 14:31 ` Bjorn Andersson
2026-07-01 15:10 ` Konrad Dybcio
0 siblings, 2 replies; 8+ messages in thread
From: Xilin Wu @ 2026-05-07 14:29 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, Xilin Wu
Flatten usb controller nodes and update to using latest bindings
and flattened driver approach.
Signed-off-by: Xilin Wu <sophon@radxa.com>
---
arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 12 +-
arch/arm64/boot/dts/qcom/sa8540p-ride.dts | 6 +-
arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 12 +-
.../boot/dts/qcom/sc8280xp-huawei-gaokun3.dts | 12 +-
.../dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 12 +-
.../boot/dts/qcom/sc8280xp-microsoft-arcata.dts | 12 +-
.../boot/dts/qcom/sc8280xp-microsoft-blackrock.dts | 18 +--
arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 156 +++++++++------------
8 files changed, 97 insertions(+), 143 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts
index d28d69162427..abd0f6a64b11 100644
--- a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts
+++ b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts
@@ -587,12 +587,10 @@ &ufs_card_phy {
};
&usb_0 {
- status = "okay";
-};
-
-&usb_0_dwc3 {
/* TODO: Define USB-C connector properly */
dr_mode = "peripheral";
+
+ status = "okay";
};
&usb_0_hsphy {
@@ -611,12 +609,10 @@ &usb_0_qmpphy {
};
&usb_1 {
- status = "okay";
-};
-
-&usb_1_dwc3 {
/* TODO: Define USB-C connector properly */
dr_mode = "host";
+
+ status = "okay";
};
&usb_1_hsphy {
diff --git a/arch/arm64/boot/dts/qcom/sa8540p-ride.dts b/arch/arm64/boot/dts/qcom/sa8540p-ride.dts
index 44177e9b64b5..e794689f0777 100644
--- a/arch/arm64/boot/dts/qcom/sa8540p-ride.dts
+++ b/arch/arm64/boot/dts/qcom/sa8540p-ride.dts
@@ -462,11 +462,9 @@ &ufs_mem_phy {
};
&usb_0 {
- status = "okay";
-};
-
-&usb_0_dwc3 {
dr_mode = "peripheral";
+
+ status = "okay";
};
&usb_0_hsphy {
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
index c53e00cae465..3b624544b676 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
@@ -816,11 +816,9 @@ &ufs_mem_phy {
};
&usb_0 {
- status = "okay";
-};
-
-&usb_0_dwc3 {
dr_mode = "host";
+
+ status = "okay";
};
&usb_0_dwc3_hs {
@@ -853,11 +851,9 @@ &usb_0_qmpphy_out {
};
&usb_1 {
- status = "okay";
-};
-
-&usb_1_dwc3 {
dr_mode = "host";
+
+ status = "okay";
};
&usb_1_dwc3_hs {
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts b/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts
index 9819454abe13..dfc1341ccc5d 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts
@@ -1129,11 +1129,9 @@ bluetooth {
};
&usb_0 {
- status = "okay";
-};
-
-&usb_0_dwc3 {
dr_mode = "host";
+
+ status = "okay";
};
&usb_0_dwc3_hs {
@@ -1166,11 +1164,9 @@ &usb_0_qmpphy_out {
};
&usb_1 {
- status = "okay";
-};
-
-&usb_1_dwc3 {
dr_mode = "host";
+
+ status = "okay";
};
&usb_1_dwc3_hs {
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
index d84ca010ab9d..a1e8e75fc553 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
@@ -1338,11 +1338,9 @@ bluetooth {
};
&usb_0 {
- status = "okay";
-};
-
-&usb_0_dwc3 {
dr_mode = "host";
+
+ status = "okay";
};
&usb_0_dwc3_hs {
@@ -1376,11 +1374,9 @@ &usb_0_qmpphy_out {
};
&usb_1 {
- status = "okay";
-};
-
-&usb_1_dwc3 {
dr_mode = "host";
+
+ status = "okay";
};
&usb_1_dwc3_hs {
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts
index f2b4470d4407..207c13adcb9d 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts
@@ -755,11 +755,9 @@ embedded-controller {
};
&usb_0 {
- status = "okay";
-};
-
-&usb_0_dwc3 {
dr_mode = "host";
+
+ status = "okay";
};
&usb_0_dwc3_hs {
@@ -792,11 +790,9 @@ &usb_0_qmpphy_out {
};
&usb_1 {
- status = "okay";
-};
-
-&usb_1_dwc3 {
dr_mode = "host";
+
+ status = "okay";
};
&usb_1_dwc3_hs {
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts
index 00bbeeef6f14..0cfd69201cae 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts
@@ -983,11 +983,9 @@ bluetooth {
};
&usb_0 {
- status = "okay";
-};
-
-&usb_0_dwc3 {
dr_mode = "host";
+
+ status = "okay";
};
&usb_0_dwc3_hs {
@@ -1020,11 +1018,9 @@ &usb_0_qmpphy_out {
};
&usb_1 {
- status = "okay";
-};
-
-&usb_1_dwc3 {
dr_mode = "host";
+
+ status = "okay";
};
&usb_1_dwc3_hs {
@@ -1060,12 +1056,10 @@ &usb_2 {
pinctrl-0 = <&usb2_en_state>;
pinctrl-names = "default";
- status = "okay";
-};
-
-&usb_2_dwc3 {
phys = <&usb_2_hsphy0>, <&usb_2_qmpphy0>;
phy-names = "usb2-0", "usb3-0";
+
+ status = "okay";
};
&usb_2_hsphy0 {
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi
index 761f229e8f47..ecfc64d864fc 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi
@@ -3940,12 +3940,9 @@ system-cache-controller@9200000 {
interrupts = <GIC_SPI 582 IRQ_TYPE_LEVEL_HIGH>;
};
- usb_2: usb@a4f8800 {
- compatible = "qcom,sc8280xp-dwc3-mp", "qcom,dwc3";
- reg = <0 0x0a4f8800 0 0x400>;
- #address-cells = <2>;
- #size-cells = <2>;
- ranges;
+ usb_2: usb@a400000 {
+ compatible = "qcom,sc8280xp-dwc3-mp", "qcom,snps-dwc3";
+ reg = <0 0x0a400000 0 0xfc100>;
clocks = <&gcc GCC_CFG_NOC_USB3_MP_AXI_CLK>,
<&gcc GCC_USB30_MP_MASTER_CLK>,
@@ -3963,7 +3960,8 @@ usb_2: usb@a4f8800 {
<&gcc GCC_USB30_MP_MASTER_CLK>;
assigned-clock-rates = <19200000>, <200000000>;
- interrupts-extended = <&intc GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
+ interrupts-extended = <&intc GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>,
+ <&intc GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
<&intc GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
<&intc GIC_SPI 857 IRQ_TYPE_LEVEL_HIGH>,
<&intc GIC_SPI 856 IRQ_TYPE_LEVEL_HIGH>,
@@ -3982,7 +3980,8 @@ usb_2: usb@a4f8800 {
<&pdc 16 IRQ_TYPE_LEVEL_HIGH>,
<&pdc 17 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-names = "pwr_event_1", "pwr_event_2",
+ interrupt-names = "dwc_usb3",
+ "pwr_event_1", "pwr_event_2",
"pwr_event_3", "pwr_event_4",
"hs_phy_1", "hs_phy_2",
"hs_phy_3", "hs_phy_4",
@@ -4003,33 +4002,25 @@ usb_2: usb@a4f8800 {
wakeup-source;
+ iommus = <&apps_smmu 0x800 0x0>;
+ phys = <&usb_2_hsphy0>, <&usb_2_qmpphy0>,
+ <&usb_2_hsphy1>, <&usb_2_qmpphy1>,
+ <&usb_2_hsphy2>,
+ <&usb_2_hsphy3>;
+ phy-names = "usb2-0", "usb3-0",
+ "usb2-1", "usb3-1",
+ "usb2-2",
+ "usb2-3";
+ dr_mode = "host";
+ snps,dis-u1-entry-quirk;
+ snps,dis-u2-entry-quirk;
+
status = "disabled";
+ };
- usb_2_dwc3: usb@a400000 {
- compatible = "snps,dwc3";
- reg = <0 0x0a400000 0 0xcd00>;
- interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
- iommus = <&apps_smmu 0x800 0x0>;
- phys = <&usb_2_hsphy0>, <&usb_2_qmpphy0>,
- <&usb_2_hsphy1>, <&usb_2_qmpphy1>,
- <&usb_2_hsphy2>,
- <&usb_2_hsphy3>;
- phy-names = "usb2-0", "usb3-0",
- "usb2-1", "usb3-1",
- "usb2-2",
- "usb2-3";
- dr_mode = "host";
- snps,dis-u1-entry-quirk;
- snps,dis-u2-entry-quirk;
- };
- };
-
- usb_0: usb@a6f8800 {
- compatible = "qcom,sc8280xp-dwc3", "qcom,dwc3";
- reg = <0 0x0a6f8800 0 0x400>;
- #address-cells = <2>;
- #size-cells = <2>;
- ranges;
+ usb_0: usb@a600000 {
+ compatible = "qcom,sc8280xp-dwc3", "qcom,snps-dwc3";
+ reg = <0 0x0a600000 0 0xfc100>;
clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
<&gcc GCC_USB30_PRIM_MASTER_CLK>,
@@ -4047,12 +4038,14 @@ usb_0: usb@a6f8800 {
<&gcc GCC_USB30_PRIM_MASTER_CLK>;
assigned-clock-rates = <19200000>, <200000000>;
- interrupts-extended = <&intc GIC_SPI 804 IRQ_TYPE_LEVEL_HIGH>,
+ interrupts-extended = <&intc GIC_SPI 803 IRQ_TYPE_LEVEL_HIGH>,
+ <&intc GIC_SPI 804 IRQ_TYPE_LEVEL_HIGH>,
<&intc GIC_SPI 805 IRQ_TYPE_LEVEL_HIGH>,
<&pdc 14 IRQ_TYPE_EDGE_BOTH>,
<&pdc 15 IRQ_TYPE_EDGE_BOTH>,
<&pdc 138 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-names = "pwr_event",
+ interrupt-names = "dwc_usb3",
+ "pwr_event",
"hs_phy_irq",
"dp_hs_phy_irq",
"dm_hs_phy_irq",
@@ -4069,46 +4062,38 @@ usb_0: usb@a6f8800 {
wakeup-source;
- status = "disabled";
+ iommus = <&apps_smmu 0x820 0x0>;
+ phys = <&usb_0_hsphy>, <&usb_0_qmpphy QMP_USB43DP_USB3_PHY>;
+ phy-names = "usb2-phy", "usb3-phy";
+ snps,dis-u1-entry-quirk;
+ snps,dis-u2-entry-quirk;
- usb_0_dwc3: usb@a600000 {
- compatible = "snps,dwc3";
- reg = <0 0x0a600000 0 0xcd00>;
- interrupts = <GIC_SPI 803 IRQ_TYPE_LEVEL_HIGH>;
- iommus = <&apps_smmu 0x820 0x0>;
- phys = <&usb_0_hsphy>, <&usb_0_qmpphy QMP_USB43DP_USB3_PHY>;
- phy-names = "usb2-phy", "usb3-phy";
- snps,dis-u1-entry-quirk;
- snps,dis-u2-entry-quirk;
+ status = "disabled";
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
- port@0 {
- reg = <0>;
+ port@0 {
+ reg = <0>;
- usb_0_dwc3_hs: endpoint {
- };
+ usb_0_dwc3_hs: endpoint {
};
+ };
- port@1 {
- reg = <1>;
+ port@1 {
+ reg = <1>;
- usb_0_dwc3_ss: endpoint {
- remote-endpoint = <&usb_0_qmpphy_usb_ss_in>;
- };
+ usb_0_dwc3_ss: endpoint {
+ remote-endpoint = <&usb_0_qmpphy_usb_ss_in>;
};
};
};
};
- usb_1: usb@a8f8800 {
- compatible = "qcom,sc8280xp-dwc3", "qcom,dwc3";
- reg = <0 0x0a8f8800 0 0x400>;
- #address-cells = <2>;
- #size-cells = <2>;
- ranges;
+ usb_1: usb@a800000 {
+ compatible = "qcom,sc8280xp-dwc3", "qcom,snps-dwc3";
+ reg = <0 0x0a800000 0 0xfc100>;
clocks = <&gcc GCC_CFG_NOC_USB3_SEC_AXI_CLK>,
<&gcc GCC_USB30_SEC_MASTER_CLK>,
@@ -4126,12 +4111,14 @@ usb_1: usb@a8f8800 {
<&gcc GCC_USB30_SEC_MASTER_CLK>;
assigned-clock-rates = <19200000>, <200000000>;
- interrupts-extended = <&intc GIC_SPI 811 IRQ_TYPE_LEVEL_HIGH>,
+ interrupts-extended = <&intc GIC_SPI 810 IRQ_TYPE_LEVEL_HIGH>,
+ <&intc GIC_SPI 811 IRQ_TYPE_LEVEL_HIGH>,
<&intc GIC_SPI 790 IRQ_TYPE_LEVEL_HIGH>,
<&pdc 12 IRQ_TYPE_EDGE_BOTH>,
<&pdc 13 IRQ_TYPE_EDGE_BOTH>,
<&pdc 136 IRQ_TYPE_LEVEL_HIGH>;
- interrupt-names = "pwr_event",
+ interrupt-names = "dwc_usb3",
+ "pwr_event",
"hs_phy_irq",
"dp_hs_phy_irq",
"dm_hs_phy_irq",
@@ -4148,35 +4135,30 @@ usb_1: usb@a8f8800 {
wakeup-source;
- status = "disabled";
+ iommus = <&apps_smmu 0x860 0x0>;
+ phys = <&usb_1_hsphy>, <&usb_1_qmpphy QMP_USB43DP_USB3_PHY>;
+ phy-names = "usb2-phy", "usb3-phy";
+ snps,dis-u1-entry-quirk;
+ snps,dis-u2-entry-quirk;
- usb_1_dwc3: usb@a800000 {
- compatible = "snps,dwc3";
- reg = <0 0x0a800000 0 0xcd00>;
- interrupts = <GIC_SPI 810 IRQ_TYPE_LEVEL_HIGH>;
- iommus = <&apps_smmu 0x860 0x0>;
- phys = <&usb_1_hsphy>, <&usb_1_qmpphy QMP_USB43DP_USB3_PHY>;
- phy-names = "usb2-phy", "usb3-phy";
- snps,dis-u1-entry-quirk;
- snps,dis-u2-entry-quirk;
+ status = "disabled";
- ports {
- #address-cells = <1>;
- #size-cells = <0>;
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
- port@0 {
- reg = <0>;
+ port@0 {
+ reg = <0>;
- usb_1_dwc3_hs: endpoint {
- };
+ usb_1_dwc3_hs: endpoint {
};
+ };
- port@1 {
- reg = <1>;
+ port@1 {
+ reg = <1>;
- usb_1_dwc3_ss: endpoint {
- remote-endpoint = <&usb_1_qmpphy_usb_ss_in>;
- };
+ usb_1_dwc3_ss: endpoint {
+ remote-endpoint = <&usb_1_qmpphy_usb_ss_in>;
};
};
};
---
base-commit: 735d2f48cadaa9a87e7c7601667878de70c771c5
change-id: 20260507-sc8280xp-flatten-dwc3-2151039b64ba
Best regards,
--
Xilin Wu <sophon@radxa.com>
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] arm64: dts: qcom: sc8280xp: Flatten usb controller nodes
2026-05-07 14:29 [PATCH] arm64: dts: qcom: sc8280xp: Flatten usb controller nodes Xilin Wu
@ 2026-05-07 14:31 ` Bjorn Andersson
2026-05-07 14:41 ` Xilin Wu
2026-07-01 15:10 ` Konrad Dybcio
1 sibling, 1 reply; 8+ messages in thread
From: Bjorn Andersson @ 2026-05-07 14:31 UTC (permalink / raw)
To: Xilin Wu
Cc: Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-arm-msm, devicetree, linux-kernel
On Thu, May 07, 2026 at 10:29:24PM +0800, Xilin Wu wrote:
> Flatten usb controller nodes and update to using latest bindings
> and flattened driver approach.
>
Can you please confirm that we survive a system suspend cycle with this?
Also, start your commit message with describing the problem you're
solving, not by describing an action.
Regards,
Bjorn
> Signed-off-by: Xilin Wu <sophon@radxa.com>
> ---
> arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 12 +-
> arch/arm64/boot/dts/qcom/sa8540p-ride.dts | 6 +-
> arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 12 +-
> .../boot/dts/qcom/sc8280xp-huawei-gaokun3.dts | 12 +-
> .../dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 12 +-
> .../boot/dts/qcom/sc8280xp-microsoft-arcata.dts | 12 +-
> .../boot/dts/qcom/sc8280xp-microsoft-blackrock.dts | 18 +--
> arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 156 +++++++++------------
> 8 files changed, 97 insertions(+), 143 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts
> index d28d69162427..abd0f6a64b11 100644
> --- a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts
> +++ b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts
> @@ -587,12 +587,10 @@ &ufs_card_phy {
> };
>
> &usb_0 {
> - status = "okay";
> -};
> -
> -&usb_0_dwc3 {
> /* TODO: Define USB-C connector properly */
> dr_mode = "peripheral";
> +
> + status = "okay";
> };
>
> &usb_0_hsphy {
> @@ -611,12 +609,10 @@ &usb_0_qmpphy {
> };
>
> &usb_1 {
> - status = "okay";
> -};
> -
> -&usb_1_dwc3 {
> /* TODO: Define USB-C connector properly */
> dr_mode = "host";
> +
> + status = "okay";
> };
>
> &usb_1_hsphy {
> diff --git a/arch/arm64/boot/dts/qcom/sa8540p-ride.dts b/arch/arm64/boot/dts/qcom/sa8540p-ride.dts
> index 44177e9b64b5..e794689f0777 100644
> --- a/arch/arm64/boot/dts/qcom/sa8540p-ride.dts
> +++ b/arch/arm64/boot/dts/qcom/sa8540p-ride.dts
> @@ -462,11 +462,9 @@ &ufs_mem_phy {
> };
>
> &usb_0 {
> - status = "okay";
> -};
> -
> -&usb_0_dwc3 {
> dr_mode = "peripheral";
> +
> + status = "okay";
> };
>
> &usb_0_hsphy {
> diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
> index c53e00cae465..3b624544b676 100644
> --- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
> +++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
> @@ -816,11 +816,9 @@ &ufs_mem_phy {
> };
>
> &usb_0 {
> - status = "okay";
> -};
> -
> -&usb_0_dwc3 {
> dr_mode = "host";
> +
> + status = "okay";
> };
>
> &usb_0_dwc3_hs {
> @@ -853,11 +851,9 @@ &usb_0_qmpphy_out {
> };
>
> &usb_1 {
> - status = "okay";
> -};
> -
> -&usb_1_dwc3 {
> dr_mode = "host";
> +
> + status = "okay";
> };
>
> &usb_1_dwc3_hs {
> diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts b/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts
> index 9819454abe13..dfc1341ccc5d 100644
> --- a/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts
> +++ b/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts
> @@ -1129,11 +1129,9 @@ bluetooth {
> };
>
> &usb_0 {
> - status = "okay";
> -};
> -
> -&usb_0_dwc3 {
> dr_mode = "host";
> +
> + status = "okay";
> };
>
> &usb_0_dwc3_hs {
> @@ -1166,11 +1164,9 @@ &usb_0_qmpphy_out {
> };
>
> &usb_1 {
> - status = "okay";
> -};
> -
> -&usb_1_dwc3 {
> dr_mode = "host";
> +
> + status = "okay";
> };
>
> &usb_1_dwc3_hs {
> diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
> index d84ca010ab9d..a1e8e75fc553 100644
> --- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
> +++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
> @@ -1338,11 +1338,9 @@ bluetooth {
> };
>
> &usb_0 {
> - status = "okay";
> -};
> -
> -&usb_0_dwc3 {
> dr_mode = "host";
> +
> + status = "okay";
> };
>
> &usb_0_dwc3_hs {
> @@ -1376,11 +1374,9 @@ &usb_0_qmpphy_out {
> };
>
> &usb_1 {
> - status = "okay";
> -};
> -
> -&usb_1_dwc3 {
> dr_mode = "host";
> +
> + status = "okay";
> };
>
> &usb_1_dwc3_hs {
> diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts
> index f2b4470d4407..207c13adcb9d 100644
> --- a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts
> +++ b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts
> @@ -755,11 +755,9 @@ embedded-controller {
> };
>
> &usb_0 {
> - status = "okay";
> -};
> -
> -&usb_0_dwc3 {
> dr_mode = "host";
> +
> + status = "okay";
> };
>
> &usb_0_dwc3_hs {
> @@ -792,11 +790,9 @@ &usb_0_qmpphy_out {
> };
>
> &usb_1 {
> - status = "okay";
> -};
> -
> -&usb_1_dwc3 {
> dr_mode = "host";
> +
> + status = "okay";
> };
>
> &usb_1_dwc3_hs {
> diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts
> index 00bbeeef6f14..0cfd69201cae 100644
> --- a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts
> +++ b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts
> @@ -983,11 +983,9 @@ bluetooth {
> };
>
> &usb_0 {
> - status = "okay";
> -};
> -
> -&usb_0_dwc3 {
> dr_mode = "host";
> +
> + status = "okay";
> };
>
> &usb_0_dwc3_hs {
> @@ -1020,11 +1018,9 @@ &usb_0_qmpphy_out {
> };
>
> &usb_1 {
> - status = "okay";
> -};
> -
> -&usb_1_dwc3 {
> dr_mode = "host";
> +
> + status = "okay";
> };
>
> &usb_1_dwc3_hs {
> @@ -1060,12 +1056,10 @@ &usb_2 {
> pinctrl-0 = <&usb2_en_state>;
> pinctrl-names = "default";
>
> - status = "okay";
> -};
> -
> -&usb_2_dwc3 {
> phys = <&usb_2_hsphy0>, <&usb_2_qmpphy0>;
> phy-names = "usb2-0", "usb3-0";
> +
> + status = "okay";
> };
>
> &usb_2_hsphy0 {
> diff --git a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi
> index 761f229e8f47..ecfc64d864fc 100644
> --- a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi
> @@ -3940,12 +3940,9 @@ system-cache-controller@9200000 {
> interrupts = <GIC_SPI 582 IRQ_TYPE_LEVEL_HIGH>;
> };
>
> - usb_2: usb@a4f8800 {
> - compatible = "qcom,sc8280xp-dwc3-mp", "qcom,dwc3";
> - reg = <0 0x0a4f8800 0 0x400>;
> - #address-cells = <2>;
> - #size-cells = <2>;
> - ranges;
> + usb_2: usb@a400000 {
> + compatible = "qcom,sc8280xp-dwc3-mp", "qcom,snps-dwc3";
> + reg = <0 0x0a400000 0 0xfc100>;
>
> clocks = <&gcc GCC_CFG_NOC_USB3_MP_AXI_CLK>,
> <&gcc GCC_USB30_MP_MASTER_CLK>,
> @@ -3963,7 +3960,8 @@ usb_2: usb@a4f8800 {
> <&gcc GCC_USB30_MP_MASTER_CLK>;
> assigned-clock-rates = <19200000>, <200000000>;
>
> - interrupts-extended = <&intc GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
> + interrupts-extended = <&intc GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>,
> + <&intc GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
> <&intc GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
> <&intc GIC_SPI 857 IRQ_TYPE_LEVEL_HIGH>,
> <&intc GIC_SPI 856 IRQ_TYPE_LEVEL_HIGH>,
> @@ -3982,7 +3980,8 @@ usb_2: usb@a4f8800 {
> <&pdc 16 IRQ_TYPE_LEVEL_HIGH>,
> <&pdc 17 IRQ_TYPE_LEVEL_HIGH>;
>
> - interrupt-names = "pwr_event_1", "pwr_event_2",
> + interrupt-names = "dwc_usb3",
> + "pwr_event_1", "pwr_event_2",
> "pwr_event_3", "pwr_event_4",
> "hs_phy_1", "hs_phy_2",
> "hs_phy_3", "hs_phy_4",
> @@ -4003,33 +4002,25 @@ usb_2: usb@a4f8800 {
>
> wakeup-source;
>
> + iommus = <&apps_smmu 0x800 0x0>;
> + phys = <&usb_2_hsphy0>, <&usb_2_qmpphy0>,
> + <&usb_2_hsphy1>, <&usb_2_qmpphy1>,
> + <&usb_2_hsphy2>,
> + <&usb_2_hsphy3>;
> + phy-names = "usb2-0", "usb3-0",
> + "usb2-1", "usb3-1",
> + "usb2-2",
> + "usb2-3";
> + dr_mode = "host";
> + snps,dis-u1-entry-quirk;
> + snps,dis-u2-entry-quirk;
> +
> status = "disabled";
> + };
>
> - usb_2_dwc3: usb@a400000 {
> - compatible = "snps,dwc3";
> - reg = <0 0x0a400000 0 0xcd00>;
> - interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
> - iommus = <&apps_smmu 0x800 0x0>;
> - phys = <&usb_2_hsphy0>, <&usb_2_qmpphy0>,
> - <&usb_2_hsphy1>, <&usb_2_qmpphy1>,
> - <&usb_2_hsphy2>,
> - <&usb_2_hsphy3>;
> - phy-names = "usb2-0", "usb3-0",
> - "usb2-1", "usb3-1",
> - "usb2-2",
> - "usb2-3";
> - dr_mode = "host";
> - snps,dis-u1-entry-quirk;
> - snps,dis-u2-entry-quirk;
> - };
> - };
> -
> - usb_0: usb@a6f8800 {
> - compatible = "qcom,sc8280xp-dwc3", "qcom,dwc3";
> - reg = <0 0x0a6f8800 0 0x400>;
> - #address-cells = <2>;
> - #size-cells = <2>;
> - ranges;
> + usb_0: usb@a600000 {
> + compatible = "qcom,sc8280xp-dwc3", "qcom,snps-dwc3";
> + reg = <0 0x0a600000 0 0xfc100>;
>
> clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
> <&gcc GCC_USB30_PRIM_MASTER_CLK>,
> @@ -4047,12 +4038,14 @@ usb_0: usb@a6f8800 {
> <&gcc GCC_USB30_PRIM_MASTER_CLK>;
> assigned-clock-rates = <19200000>, <200000000>;
>
> - interrupts-extended = <&intc GIC_SPI 804 IRQ_TYPE_LEVEL_HIGH>,
> + interrupts-extended = <&intc GIC_SPI 803 IRQ_TYPE_LEVEL_HIGH>,
> + <&intc GIC_SPI 804 IRQ_TYPE_LEVEL_HIGH>,
> <&intc GIC_SPI 805 IRQ_TYPE_LEVEL_HIGH>,
> <&pdc 14 IRQ_TYPE_EDGE_BOTH>,
> <&pdc 15 IRQ_TYPE_EDGE_BOTH>,
> <&pdc 138 IRQ_TYPE_LEVEL_HIGH>;
> - interrupt-names = "pwr_event",
> + interrupt-names = "dwc_usb3",
> + "pwr_event",
> "hs_phy_irq",
> "dp_hs_phy_irq",
> "dm_hs_phy_irq",
> @@ -4069,46 +4062,38 @@ usb_0: usb@a6f8800 {
>
> wakeup-source;
>
> - status = "disabled";
> + iommus = <&apps_smmu 0x820 0x0>;
> + phys = <&usb_0_hsphy>, <&usb_0_qmpphy QMP_USB43DP_USB3_PHY>;
> + phy-names = "usb2-phy", "usb3-phy";
> + snps,dis-u1-entry-quirk;
> + snps,dis-u2-entry-quirk;
>
> - usb_0_dwc3: usb@a600000 {
> - compatible = "snps,dwc3";
> - reg = <0 0x0a600000 0 0xcd00>;
> - interrupts = <GIC_SPI 803 IRQ_TYPE_LEVEL_HIGH>;
> - iommus = <&apps_smmu 0x820 0x0>;
> - phys = <&usb_0_hsphy>, <&usb_0_qmpphy QMP_USB43DP_USB3_PHY>;
> - phy-names = "usb2-phy", "usb3-phy";
> - snps,dis-u1-entry-quirk;
> - snps,dis-u2-entry-quirk;
> + status = "disabled";
>
> - ports {
> - #address-cells = <1>;
> - #size-cells = <0>;
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
>
> - port@0 {
> - reg = <0>;
> + port@0 {
> + reg = <0>;
>
> - usb_0_dwc3_hs: endpoint {
> - };
> + usb_0_dwc3_hs: endpoint {
> };
> + };
>
> - port@1 {
> - reg = <1>;
> + port@1 {
> + reg = <1>;
>
> - usb_0_dwc3_ss: endpoint {
> - remote-endpoint = <&usb_0_qmpphy_usb_ss_in>;
> - };
> + usb_0_dwc3_ss: endpoint {
> + remote-endpoint = <&usb_0_qmpphy_usb_ss_in>;
> };
> };
> };
> };
>
> - usb_1: usb@a8f8800 {
> - compatible = "qcom,sc8280xp-dwc3", "qcom,dwc3";
> - reg = <0 0x0a8f8800 0 0x400>;
> - #address-cells = <2>;
> - #size-cells = <2>;
> - ranges;
> + usb_1: usb@a800000 {
> + compatible = "qcom,sc8280xp-dwc3", "qcom,snps-dwc3";
> + reg = <0 0x0a800000 0 0xfc100>;
>
> clocks = <&gcc GCC_CFG_NOC_USB3_SEC_AXI_CLK>,
> <&gcc GCC_USB30_SEC_MASTER_CLK>,
> @@ -4126,12 +4111,14 @@ usb_1: usb@a8f8800 {
> <&gcc GCC_USB30_SEC_MASTER_CLK>;
> assigned-clock-rates = <19200000>, <200000000>;
>
> - interrupts-extended = <&intc GIC_SPI 811 IRQ_TYPE_LEVEL_HIGH>,
> + interrupts-extended = <&intc GIC_SPI 810 IRQ_TYPE_LEVEL_HIGH>,
> + <&intc GIC_SPI 811 IRQ_TYPE_LEVEL_HIGH>,
> <&intc GIC_SPI 790 IRQ_TYPE_LEVEL_HIGH>,
> <&pdc 12 IRQ_TYPE_EDGE_BOTH>,
> <&pdc 13 IRQ_TYPE_EDGE_BOTH>,
> <&pdc 136 IRQ_TYPE_LEVEL_HIGH>;
> - interrupt-names = "pwr_event",
> + interrupt-names = "dwc_usb3",
> + "pwr_event",
> "hs_phy_irq",
> "dp_hs_phy_irq",
> "dm_hs_phy_irq",
> @@ -4148,35 +4135,30 @@ usb_1: usb@a8f8800 {
>
> wakeup-source;
>
> - status = "disabled";
> + iommus = <&apps_smmu 0x860 0x0>;
> + phys = <&usb_1_hsphy>, <&usb_1_qmpphy QMP_USB43DP_USB3_PHY>;
> + phy-names = "usb2-phy", "usb3-phy";
> + snps,dis-u1-entry-quirk;
> + snps,dis-u2-entry-quirk;
>
> - usb_1_dwc3: usb@a800000 {
> - compatible = "snps,dwc3";
> - reg = <0 0x0a800000 0 0xcd00>;
> - interrupts = <GIC_SPI 810 IRQ_TYPE_LEVEL_HIGH>;
> - iommus = <&apps_smmu 0x860 0x0>;
> - phys = <&usb_1_hsphy>, <&usb_1_qmpphy QMP_USB43DP_USB3_PHY>;
> - phy-names = "usb2-phy", "usb3-phy";
> - snps,dis-u1-entry-quirk;
> - snps,dis-u2-entry-quirk;
> + status = "disabled";
>
> - ports {
> - #address-cells = <1>;
> - #size-cells = <0>;
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
>
> - port@0 {
> - reg = <0>;
> + port@0 {
> + reg = <0>;
>
> - usb_1_dwc3_hs: endpoint {
> - };
> + usb_1_dwc3_hs: endpoint {
> };
> + };
>
> - port@1 {
> - reg = <1>;
> + port@1 {
> + reg = <1>;
>
> - usb_1_dwc3_ss: endpoint {
> - remote-endpoint = <&usb_1_qmpphy_usb_ss_in>;
> - };
> + usb_1_dwc3_ss: endpoint {
> + remote-endpoint = <&usb_1_qmpphy_usb_ss_in>;
> };
> };
> };
>
> ---
> base-commit: 735d2f48cadaa9a87e7c7601667878de70c771c5
> change-id: 20260507-sc8280xp-flatten-dwc3-2151039b64ba
>
> Best regards,
> --
> Xilin Wu <sophon@radxa.com>
>
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] arm64: dts: qcom: sc8280xp: Flatten usb controller nodes
2026-05-07 14:31 ` Bjorn Andersson
@ 2026-05-07 14:41 ` Xilin Wu
0 siblings, 0 replies; 8+ messages in thread
From: Xilin Wu @ 2026-05-07 14:41 UTC (permalink / raw)
To: Bjorn Andersson
Cc: Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
linux-arm-msm, devicetree, linux-kernel
On 5/7/2026 10:31 PM, Bjorn Andersson wrote:
> On Thu, May 07, 2026 at 10:29:24PM +0800, Xilin Wu wrote:
>> Flatten usb controller nodes and update to using latest bindings
>> and flattened driver approach.
>>
>
> Can you please confirm that we survive a system suspend cycle with this?
>
In my testing, s2idle works fine. The testing is being done with
clk_ignore_unused though.
> Also, start your commit message with describing the problem you're
> solving, not by describing an action.
>
Thanks for reminding me. I will fix the commit message in the next revision.
> Regards,
> Bjorn
>
--
Best regards,
Xilin Wu <sophon@radxa.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] arm64: dts: qcom: sc8280xp: Flatten usb controller nodes
2026-05-07 14:29 [PATCH] arm64: dts: qcom: sc8280xp: Flatten usb controller nodes Xilin Wu
2026-05-07 14:31 ` Bjorn Andersson
@ 2026-07-01 15:10 ` Konrad Dybcio
2026-07-01 16:04 ` Xilin Wu
1 sibling, 1 reply; 8+ messages in thread
From: Konrad Dybcio @ 2026-07-01 15:10 UTC (permalink / raw)
To: Xilin Wu, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel
On 5/7/26 4:29 PM, Xilin Wu wrote:
> Flatten usb controller nodes and update to using latest bindings
> and flattened driver approach.
>
> Signed-off-by: Xilin Wu <sophon@radxa.com>
> ---
I tested this on a CRD and an x13s, both work fine across suspend.
Turned out in my local experiments I made a typo in the name of the
interrupt that was carried over to the big node..
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Tested-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> # X13s, CRD8280
Konrad
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] arm64: dts: qcom: sc8280xp: Flatten usb controller nodes
2026-07-01 15:10 ` Konrad Dybcio
@ 2026-07-01 16:04 ` Xilin Wu
2026-07-01 16:12 ` Konrad Dybcio
0 siblings, 1 reply; 8+ messages in thread
From: Xilin Wu @ 2026-07-01 16:04 UTC (permalink / raw)
To: Konrad Dybcio, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel
On 7/1/2026 11:10 PM, Konrad Dybcio wrote:
> On 5/7/26 4:29 PM, Xilin Wu wrote:
>> Flatten usb controller nodes and update to using latest bindings
>> and flattened driver approach.
>>
>> Signed-off-by: Xilin Wu <sophon@radxa.com>
>> ---
>
> I tested this on a CRD and an x13s, both work fine across suspend.
>
> Turned out in my local experiments I made a typo in the name of the
> interrupt that was carried over to the big node..
>
> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
> Tested-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> # X13s, CRD8280
>
> Konrad
>
Unfortunately as I mentioned on IRC [1], this actually causes random NoC
timeout on reboot, which seems to be related to pcie.
[1] https://oftc.catirclogs.org/linux-msm/2026-06-11#35405057;
--
Best regards,
Xilin Wu <sophon@radxa.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] arm64: dts: qcom: sc8280xp: Flatten usb controller nodes
2026-07-01 16:04 ` Xilin Wu
@ 2026-07-01 16:12 ` Konrad Dybcio
2026-07-20 10:07 ` Konrad Dybcio
0 siblings, 1 reply; 8+ messages in thread
From: Konrad Dybcio @ 2026-07-01 16:12 UTC (permalink / raw)
To: Xilin Wu, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
Qiang Yu
Cc: linux-arm-msm, devicetree, linux-kernel
On 7/1/26 6:04 PM, Xilin Wu wrote:
> On 7/1/2026 11:10 PM, Konrad Dybcio wrote:
>> On 5/7/26 4:29 PM, Xilin Wu wrote:
>>> Flatten usb controller nodes and update to using latest bindings
>>> and flattened driver approach.
>>>
>>> Signed-off-by: Xilin Wu <sophon@radxa.com>
>>> ---
>>
>> I tested this on a CRD and an x13s, both work fine across suspend.
>>
>> Turned out in my local experiments I made a typo in the name of the
>> interrupt that was carried over to the big node..
>>
>> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
>> Tested-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> # X13s, CRD8280
>>
>> Konrad
>>
>
> Unfortunately as I mentioned on IRC [1], this actually causes random NoC timeout on reboot, which seems to be related to pcie.
>
> [1] https://oftc.catirclogs.org/linux-msm/2026-06-11#35405057;
Ah, you mentioned this:
https://gist.github.com/strongtz/50bbd71a9f41d0d1aa9849b8cf1dce21
This is an attempt to read CONFIG_SPACE+0x0.. I don't really know..
Maybe +Mani or +Qiang has seen it?
Konrad
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] arm64: dts: qcom: sc8280xp: Flatten usb controller nodes
2026-07-01 16:12 ` Konrad Dybcio
@ 2026-07-20 10:07 ` Konrad Dybcio
2026-09-01 13:23 ` Manivannan Sadhasivam
0 siblings, 1 reply; 8+ messages in thread
From: Konrad Dybcio @ 2026-07-20 10:07 UTC (permalink / raw)
To: Xilin Wu, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Manivannan Sadhasivam,
Qiang Yu
Cc: linux-arm-msm, devicetree, linux-kernel
On 7/1/26 6:12 PM, Konrad Dybcio wrote:
> On 7/1/26 6:04 PM, Xilin Wu wrote:
>> On 7/1/2026 11:10 PM, Konrad Dybcio wrote:
>>> On 5/7/26 4:29 PM, Xilin Wu wrote:
>>>> Flatten usb controller nodes and update to using latest bindings
>>>> and flattened driver approach.
>>>>
>>>> Signed-off-by: Xilin Wu <sophon@radxa.com>
>>>> ---
>>>
>>> I tested this on a CRD and an x13s, both work fine across suspend.
>>>
>>> Turned out in my local experiments I made a typo in the name of the
>>> interrupt that was carried over to the big node..
>>>
>>> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
>>> Tested-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> # X13s, CRD8280
>>>
>>> Konrad
>>>
>>
>> Unfortunately as I mentioned on IRC [1], this actually causes random NoC timeout on reboot, which seems to be related to pcie.
>>
>> [1] https://oftc.catirclogs.org/linux-msm/2026-06-11#35405057;
>
> Ah, you mentioned this:
>
> https://gist.github.com/strongtz/50bbd71a9f41d0d1aa9849b8cf1dce21
>
> This is an attempt to read CONFIG_SPACE+0x0.. I don't really know..
Could you try adding something like this
diff --git a/drivers/pci/access.c b/drivers/pci/access.c
index b123da16b63b..5e08cb239e78 100644
--- a/drivers/pci/access.c
+++ b/drivers/pci/access.c
@@ -43,6 +43,7 @@ int noinline pci_bus_read_config_##size \
if (PCI_##size##_BAD) \
return PCIBIOS_BAD_REGISTER_NUMBER; \
\
+ dev_err(&bus->dev, "Reading configspace+0x%x as %s\n", pos, #size); \
pci_lock_config(flags); \
res = bus->ops->read(bus, devfn, pos, len, &data); \
if (res)
(perhaps with a WARN_ON(1) to get a stack trace and only print for the
crashing reg)?
FWIW I can't repro on a CRD8280
Konrad
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] arm64: dts: qcom: sc8280xp: Flatten usb controller nodes
2026-07-20 10:07 ` Konrad Dybcio
@ 2026-09-01 13:23 ` Manivannan Sadhasivam
0 siblings, 0 replies; 8+ messages in thread
From: Manivannan Sadhasivam @ 2026-09-01 13:23 UTC (permalink / raw)
To: Konrad Dybcio
Cc: Xilin Wu, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Qiang Yu, linux-arm-msm,
devicetree, linux-kernel
On Mon, Jul 20, 2026 at 12:07:06PM +0200, Konrad Dybcio wrote:
> On 7/1/26 6:12 PM, Konrad Dybcio wrote:
> > On 7/1/26 6:04 PM, Xilin Wu wrote:
> >> On 7/1/2026 11:10 PM, Konrad Dybcio wrote:
> >>> On 5/7/26 4:29 PM, Xilin Wu wrote:
> >>>> Flatten usb controller nodes and update to using latest bindings
> >>>> and flattened driver approach.
> >>>>
> >>>> Signed-off-by: Xilin Wu <sophon@radxa.com>
> >>>> ---
> >>>
> >>> I tested this on a CRD and an x13s, both work fine across suspend.
> >>>
> >>> Turned out in my local experiments I made a typo in the name of the
> >>> interrupt that was carried over to the big node..
> >>>
> >>> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
> >>> Tested-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> # X13s, CRD8280
> >>>
> >>> Konrad
> >>>
> >>
> >> Unfortunately as I mentioned on IRC [1], this actually causes random NoC timeout on reboot, which seems to be related to pcie.
> >>
> >> [1] https://oftc.catirclogs.org/linux-msm/2026-06-11#35405057;
> >
> > Ah, you mentioned this:
> >
> > https://gist.github.com/strongtz/50bbd71a9f41d0d1aa9849b8cf1dce21
> >
> > This is an attempt to read CONFIG_SPACE+0x0.. I don't really know..
>
> Could you try adding something like this
>
> diff --git a/drivers/pci/access.c b/drivers/pci/access.c
> index b123da16b63b..5e08cb239e78 100644
> --- a/drivers/pci/access.c
> +++ b/drivers/pci/access.c
> @@ -43,6 +43,7 @@ int noinline pci_bus_read_config_##size \
> if (PCI_##size##_BAD) \
> return PCIBIOS_BAD_REGISTER_NUMBER; \
> \
> + dev_err(&bus->dev, "Reading configspace+0x%x as %s\n", pos, #size); \
> pci_lock_config(flags); \
> res = bus->ops->read(bus, devfn, pos, len, &data); \
> if (res)
>
> (perhaps with a WARN_ON(1) to get a stack trace and only print for the
> crashing reg)?
>
We've seen these kind of late access causing NoC crash on S2R enabled platforms
before, but only during system suspend, not reboot. Due to various reasons,
kernel tries to mask the PCIe device's MSIs very late during the suspend cycle.
If the PCIe bus resources like ICC is disabled at that point, the config access
will cause the NoC crash.
But here, the crash seems to be happening in the reboot (shutdown) path. We
don't have the shutdown handler in the pcie-qcom driver. So the PCIe controller
driver is not disabling any resources here. Since the crash is being caused due
to this USB patch, I would assume that the USB driver ends up disabling an
unvoted shared PCIe resource in the shutdown path, causing the crash.
We need to find out which resource is being left unvoted by the PCIe controller
here.
- Mani
--
மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-09-01 13:23 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-05-07 14:29 [PATCH] arm64: dts: qcom: sc8280xp: Flatten usb controller nodes Xilin Wu
2026-05-07 14:31 ` Bjorn Andersson
2026-05-07 14:41 ` Xilin Wu
2026-07-01 15:10 ` Konrad Dybcio
2026-07-01 16:04 ` Xilin Wu
2026-07-01 16:12 ` Konrad Dybcio
2026-07-20 10:07 ` Konrad Dybcio
2026-09-01 13:23 ` Manivannan Sadhasivam
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®