arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 8 -------- arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts | 8 -------- arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 8 -------- arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts | 8 -------- arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts | 8 -------- arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 4 ++++ 6 files changed, 4 insertions(+), 40 deletions(-)
From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
The two non-multiport USB controllers present on the platform are
role-switch capable, so mark them as such. They need no additional
plumbing, as tested on the X13s.
Enable OTG for all devices featuring a data-role provider in one fell
swoop to prevent hitting the edge case where UCSI code would time out
trying to get a reference to a struct usb_role_switch, which wouldn't
be registered if dr_mode was set to anything other than (the default)
OTG.
Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 8 --------
arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts | 8 --------
arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 8 --------
arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts | 8 --------
arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts | 8 --------
arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 4 ++++
6 files changed, 4 insertions(+), 40 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
index c53e00cae465..3acb63017fe3 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
@@ -819,10 +819,6 @@ &usb_0 {
status = "okay";
};
-&usb_0_dwc3 {
- dr_mode = "host";
-};
-
&usb_0_dwc3_hs {
remote-endpoint = <&pmic_glink_con0_hs>;
};
@@ -856,10 +852,6 @@ &usb_1 {
status = "okay";
};
-&usb_1_dwc3 {
- dr_mode = "host";
-};
-
&usb_1_dwc3_hs {
remote-endpoint = <&pmic_glink_con1_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..e4513b66261b 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts
@@ -1132,10 +1132,6 @@ &usb_0 {
status = "okay";
};
-&usb_0_dwc3 {
- dr_mode = "host";
-};
-
&usb_0_dwc3_hs {
remote-endpoint = <&ucsi0_hs_in>;
};
@@ -1169,10 +1165,6 @@ &usb_1 {
status = "okay";
};
-&usb_1_dwc3 {
- dr_mode = "host";
-};
-
&usb_1_dwc3_hs {
remote-endpoint = <&ucsi1_hs_in>;
};
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..f83947c8b1b8 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
@@ -1341,10 +1341,6 @@ &usb_0 {
status = "okay";
};
-&usb_0_dwc3 {
- dr_mode = "host";
-};
-
&usb_0_dwc3_hs {
remote-endpoint = <&pmic_glink_con0_hs>;
};
@@ -1379,10 +1375,6 @@ &usb_1 {
status = "okay";
};
-&usb_1_dwc3 {
- dr_mode = "host";
-};
-
&usb_1_dwc3_hs {
remote-endpoint = <&pmic_glink_con1_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..82ad20c5c7a4 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts
@@ -758,10 +758,6 @@ &usb_0 {
status = "okay";
};
-&usb_0_dwc3 {
- dr_mode = "host";
-};
-
&usb_0_dwc3_hs {
remote-endpoint = <&pmic_glink_con0_hs>;
};
@@ -795,10 +791,6 @@ &usb_1 {
status = "okay";
};
-&usb_1_dwc3 {
- dr_mode = "host";
-};
-
&usb_1_dwc3_hs {
remote-endpoint = <&pmic_glink_con1_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..1effb30c93af 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts
@@ -986,10 +986,6 @@ &usb_0 {
status = "okay";
};
-&usb_0_dwc3 {
- dr_mode = "host";
-};
-
&usb_0_dwc3_hs {
remote-endpoint = <&pmic_glink_con0_hs>;
};
@@ -1023,10 +1019,6 @@ &usb_1 {
status = "okay";
};
-&usb_1_dwc3 {
- dr_mode = "host";
-};
-
&usb_1_dwc3_hs {
remote-endpoint = <&pmic_glink_con1_hs>;
};
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi
index 58876b25dd23..6303a0d572f2 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi
@@ -4080,6 +4080,8 @@ usb_0_dwc3: usb@a600000 {
snps,dis-u1-entry-quirk;
snps,dis-u2-entry-quirk;
+ usb-role-switch;
+
ports {
#address-cells = <1>;
#size-cells = <0>;
@@ -4159,6 +4161,8 @@ usb_1_dwc3: usb@a800000 {
snps,dis-u1-entry-quirk;
snps,dis-u2-entry-quirk;
+ usb-role-switch;
+
ports {
#address-cells = <1>;
#size-cells = <0>;
---
base-commit: 5c9e55fecf9365890c64f14761a80f9413a3b1d1
change-id: 20260311-topic-x13s_otg-51ff8ae0ca37
Best regards,
--
Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
On Fri, Mar 13, 2026 at 03:08:03PM +0100, Konrad Dybcio wrote: > From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > > The two non-multiport USB controllers present on the platform are > role-switch capable, so mark them as such. They need no additional > plumbing, as tested on the X13s. > > Enable OTG for all devices featuring a data-role provider in one fell > swoop to prevent hitting the edge case where UCSI code would time out > trying to get a reference to a struct usb_role_switch, which wouldn't > be registered if dr_mode was set to anything other than (the default) > OTG. > > Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > --- > arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 8 -------- > arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts | 8 -------- > arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 8 -------- > arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts | 8 -------- > arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts | 8 -------- > arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 4 ++++ > 6 files changed, 4 insertions(+), 40 deletions(-) > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> -- With best wishes Dmitry
On 3/13/26 3:37 PM, Dmitry Baryshkov wrote: > On Fri, Mar 13, 2026 at 03:08:03PM +0100, Konrad Dybcio wrote: >> From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> >> >> The two non-multiport USB controllers present on the platform are >> role-switch capable, so mark them as such. They need no additional >> plumbing, as tested on the X13s. >> >> Enable OTG for all devices featuring a data-role provider in one fell >> swoop to prevent hitting the edge case where UCSI code would time out >> trying to get a reference to a struct usb_role_switch, which wouldn't >> be registered if dr_mode was set to anything other than (the default) >> OTG. >> >> Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> >> --- >> arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 8 -------- >> arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts | 8 -------- >> arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 8 -------- >> arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts | 8 -------- >> arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts | 8 -------- >> arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 4 ++++ >> 6 files changed, 4 insertions(+), 40 deletions(-) >> > > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Unfortunately it seems like that while it works, it makes the x13s crash upon resume It also crashes there if we flatten the DT node and I'm hoping the solution to that will fix both, but we have to hold it for now Konrad
On Thu, Mar 19, 2026 at 03:45:24PM +0100, Konrad Dybcio wrote: > On 3/13/26 3:37 PM, Dmitry Baryshkov wrote: > > On Fri, Mar 13, 2026 at 03:08:03PM +0100, Konrad Dybcio wrote: > >> From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > >> > >> The two non-multiport USB controllers present on the platform are > >> role-switch capable, so mark them as such. They need no additional > >> plumbing, as tested on the X13s. > >> > >> Enable OTG for all devices featuring a data-role provider in one fell > >> swoop to prevent hitting the edge case where UCSI code would time out > >> trying to get a reference to a struct usb_role_switch, which wouldn't > >> be registered if dr_mode was set to anything other than (the default) > >> OTG. > >> > >> Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > >> --- > >> arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 8 -------- > >> arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts | 8 -------- > >> arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 8 -------- > >> arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts | 8 -------- > >> arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts | 8 -------- > >> arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 4 ++++ > >> 6 files changed, 4 insertions(+), 40 deletions(-) > >> > > > > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> > > Unfortunately it seems like that while it works, it makes the x13s crash > upon resume > > It also crashes there if we flatten the DT node and I'm hoping the solution > to that will fix both, but we have to hold it for now > Please resubmit once this has been figured out. Regards, Bjorn > Konrad
On 3/19/26 3:45 PM, Konrad Dybcio wrote: > On 3/13/26 3:37 PM, Dmitry Baryshkov wrote: >> On Fri, Mar 13, 2026 at 03:08:03PM +0100, Konrad Dybcio wrote: >>> From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> >>> >>> The two non-multiport USB controllers present on the platform are >>> role-switch capable, so mark them as such. They need no additional >>> plumbing, as tested on the X13s. >>> >>> Enable OTG for all devices featuring a data-role provider in one fell >>> swoop to prevent hitting the edge case where UCSI code would time out >>> trying to get a reference to a struct usb_role_switch, which wouldn't >>> be registered if dr_mode was set to anything other than (the default) >>> OTG. >>> >>> Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> >>> --- >>> arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 8 -------- >>> arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts | 8 -------- >>> arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 8 -------- >>> arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts | 8 -------- >>> arch/arm64/boot/dts/qcom/sc8280xp-microsoft-blackrock.dts | 8 -------- >>> arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 4 ++++ >>> 6 files changed, 4 insertions(+), 40 deletions(-) >>> >> >> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> > > Unfortunately it seems like that while it works, it makes the x13s crash > upon resume > > It also crashes there if we flatten the DT node and I'm hoping the solution > to that will fix both, but we have to hold it for now More details: it's (again) USB_0 causing the issue, and only changing USB_1 to dual-role makes the QMPPHY phy_init time out upon resume, without a system crash Konrad
© 2016 - 2026 Red Hat, Inc.