* [PATCH 0/2] Surface Laptop PCIe3 supplies + Wi-Fi
@ 2025-08-12 13:47 Konrad Dybcio
2025-08-12 13:47 ` [PATCH 1/2] arm64: dts: qcom: x1e80100-romulus: Describe PCIe power supplies Konrad Dybcio
2025-08-12 13:47 ` [PATCH 2/2] arm64: dts: qcom: x1e80100-romulus: Add WCN7850 Wi-Fi/BT Konrad Dybcio
0 siblings, 2 replies; 5+ messages in thread
From: Konrad Dybcio @ 2025-08-12 13:47 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: Marijn Suijten, linux-arm-msm, devicetree, linux-kernel, Konrad Dybcio
Trivial changes (similar to other X1 boards), I've been running them
for a couple months without much problems.
Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
---
Konrad Dybcio (2):
arm64: dts: qcom: x1e80100-romulus: Describe PCIe power supplies
arm64: dts: qcom: x1e80100-romulus: Add WCN7850 Wi-Fi/BT
.../boot/dts/qcom/x1e80100-microsoft-romulus.dtsi | 214 +++++++++++++++++++++
1 file changed, 214 insertions(+)
---
base-commit: 2674d1eadaa2fd3a918dfcdb6d0bb49efe8a8bb9
change-id: 20250812-topic-romulus_wifi_pci-660eafdd7591
Best regards,
--
Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH 1/2] arm64: dts: qcom: x1e80100-romulus: Describe PCIe power supplies 2025-08-12 13:47 [PATCH 0/2] Surface Laptop PCIe3 supplies + Wi-Fi Konrad Dybcio @ 2025-08-12 13:47 ` Konrad Dybcio 2025-08-12 15:45 ` Stephan Gerhold 2025-08-12 13:47 ` [PATCH 2/2] arm64: dts: qcom: x1e80100-romulus: Add WCN7850 Wi-Fi/BT Konrad Dybcio 1 sibling, 1 reply; 5+ messages in thread From: Konrad Dybcio @ 2025-08-12 13:47 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: Marijn Suijten, linux-arm-msm, devicetree, linux-kernel, Konrad Dybcio From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Describe the power plumbing to allow fully suspending the slot and the connected SD controller. Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> --- .../boot/dts/qcom/x1e80100-microsoft-romulus.dtsi | 71 ++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi b/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi index 0fd8516580b2679ee425438cb73fd4078cb20581..3a4df8f8066ae699eb7d889530f976fce565757e 100644 --- a/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi +++ b/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi @@ -331,6 +331,54 @@ vph_pwr: regulator-vph-pwr { regulator-boot-on; }; + vreg_pcie_12v: regulator-pcie-12v { + compatible = "regulator-fixed"; + + regulator-name = "vreg_pcie_12v"; + regulator-min-microvolt = <12000000>; + regulator-max-microvolt = <12000000>; + + gpio = <&pm8550ve_8_gpios 8 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&vreg_12v_x8_en>; + pinctrl-names = "default"; + + regulator-boot-on; + }; + + vreg_pcie_3v3_aux: regulator-pcie-3v3-aux { + compatible = "regulator-fixed"; + + regulator-name = "vreg_pcie_3v3_aux"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&pmc8380_3_gpios 8 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&sde7_aux_reg_en>; + pinctrl-names = "default"; + + regulator-boot-on; + }; + + vreg_pcie_3v3_main: regulator-pcie-3v3-main { + compatible = "regulator-fixed"; + + regulator-name = "vreg_pcie_3v3_main"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&pmc8380_3_gpios 6 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&sde7_main_reg_en>; + pinctrl-names = "default"; + + regulator-boot-on; + }; + sound { compatible = "qcom,x1e80100-sndcard"; model = "X1E80100-Romulus"; @@ -1022,6 +1070,12 @@ &pcie3_phy { status = "okay"; }; +&pcie3_port { + vpcie12v-supply = <&vreg_pcie_12v>; + vpcie3v3-supply = <&vreg_pcie_3v3_main>; + vpcie3v3aux-supply = <&vreg_pcie_3v3_aux>; +}; + &pcie4 { status = "okay"; }; @@ -1066,6 +1120,13 @@ rtmr0_3p3_reg_en: rtmr0-3p3-reg-en-state { }; }; +&pm8550ve_8_gpios { + vreg_12v_x8_en: 12v-x8-reg-en-state { + pins = "gpio8"; + function = "normal"; + }; +}; + &pm8550ve_9_gpios { rtmr0_1p8_reg_en: rtmr0-1p8-reg-en-state { pins = "gpio8"; @@ -1082,6 +1143,16 @@ edp_bl_en: edp-bl-en-state { input-disable; output-enable; }; + + sde7_main_reg_en: sde7-main-reg-en-state { + pins = "gpio6"; + function = "normal"; + }; + + sde7_aux_reg_en: sde7-aux-reg-en-state { + pins = "gpio8"; + function = "normal"; + }; }; &pmc8380_5_gpios { -- 2.50.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] arm64: dts: qcom: x1e80100-romulus: Describe PCIe power supplies 2025-08-12 13:47 ` [PATCH 1/2] arm64: dts: qcom: x1e80100-romulus: Describe PCIe power supplies Konrad Dybcio @ 2025-08-12 15:45 ` Stephan Gerhold 2025-08-13 12:09 ` Konrad Dybcio 0 siblings, 1 reply; 5+ messages in thread From: Stephan Gerhold @ 2025-08-12 15:45 UTC (permalink / raw) To: Konrad Dybcio Cc: Bjorn Andersson, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Marijn Suijten, linux-arm-msm, devicetree, linux-kernel, Konrad Dybcio On Tue, Aug 12, 2025 at 03:47:23PM +0200, Konrad Dybcio wrote: > From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > > Describe the power plumbing to allow fully suspending the slot and the > connected SD controller. > > Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Are you sure these supplies really exist on the board? E.g. on the x1e001de-devkit, Windows toggles all these GPIOs, but there doesn't seem to be anything connected to two of them, the 12V supply is simply always on. Even more importantly, for a laptop I would expect they use some part that doesn't need a beefy 12V supply. I don't have the datasheet for RTS5261, but e.g. in [1] this chip is explicitly advertised with 3.3V power. I guess it's hard to be sure without schematics and it surely doesn't hurt to toggle these GPIOs like on Windows, but perhaps a comment that some of these likely don't exist would be good ... [1]: https://www.sdcard.org/cms/wp-content/uploads/2023/06/SDA_computex2023_Realtek.pdf > --- > .../boot/dts/qcom/x1e80100-microsoft-romulus.dtsi | 71 ++++++++++++++++++++++ > 1 file changed, 71 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi b/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi > index 0fd8516580b2679ee425438cb73fd4078cb20581..3a4df8f8066ae699eb7d889530f976fce565757e 100644 > --- a/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi > +++ b/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi > @@ -331,6 +331,54 @@ vph_pwr: regulator-vph-pwr { > regulator-boot-on; > }; > > + vreg_pcie_12v: regulator-pcie-12v { > + compatible = "regulator-fixed"; > + > + regulator-name = "vreg_pcie_12v"; > + regulator-min-microvolt = <12000000>; > + regulator-max-microvolt = <12000000>; > + > + gpio = <&pm8550ve_8_gpios 8 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + > + pinctrl-0 = <&vreg_12v_x8_en>; > + pinctrl-names = "default"; > + > + regulator-boot-on; > + }; > + > + vreg_pcie_3v3_aux: regulator-pcie-3v3-aux { > + compatible = "regulator-fixed"; > + > + regulator-name = "vreg_pcie_3v3_aux"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + > + gpio = <&pmc8380_3_gpios 8 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + > + pinctrl-0 = <&sde7_aux_reg_en>; > + pinctrl-names = "default"; > + > + regulator-boot-on; > + }; > + > + vreg_pcie_3v3_main: regulator-pcie-3v3-main { > + compatible = "regulator-fixed"; > + > + regulator-name = "vreg_pcie_3v3_main"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + > + gpio = <&pmc8380_3_gpios 6 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + > + pinctrl-0 = <&sde7_main_reg_en>; > + pinctrl-names = "default"; > + > + regulator-boot-on; > + }; > + > sound { > compatible = "qcom,x1e80100-sndcard"; > model = "X1E80100-Romulus"; > @@ -1022,6 +1070,12 @@ &pcie3_phy { > status = "okay"; > }; > > +&pcie3_port { > + vpcie12v-supply = <&vreg_pcie_12v>; > + vpcie3v3-supply = <&vreg_pcie_3v3_main>; > + vpcie3v3aux-supply = <&vreg_pcie_3v3_aux>; > +}; > + > &pcie4 { > status = "okay"; > }; > @@ -1066,6 +1120,13 @@ rtmr0_3p3_reg_en: rtmr0-3p3-reg-en-state { > }; > }; > > +&pm8550ve_8_gpios { > + vreg_12v_x8_en: 12v-x8-reg-en-state { > + pins = "gpio8"; > + function = "normal"; > + }; > +}; > + > &pm8550ve_9_gpios { > rtmr0_1p8_reg_en: rtmr0-1p8-reg-en-state { > pins = "gpio8"; > @@ -1082,6 +1143,16 @@ edp_bl_en: edp-bl-en-state { > input-disable; > output-enable; > }; > + > + sde7_main_reg_en: sde7-main-reg-en-state { > + pins = "gpio6"; > + function = "normal"; > + }; > + > + sde7_aux_reg_en: sde7-aux-reg-en-state { > + pins = "gpio8"; > + function = "normal"; > + }; > }; I think you should either do a full configuration (include power-source and everything else essential as well) or omit this entirely, because like this you will need the proper configuration from the boot firmware anyway. Thanks, Stephan ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] arm64: dts: qcom: x1e80100-romulus: Describe PCIe power supplies 2025-08-12 15:45 ` Stephan Gerhold @ 2025-08-13 12:09 ` Konrad Dybcio 0 siblings, 0 replies; 5+ messages in thread From: Konrad Dybcio @ 2025-08-13 12:09 UTC (permalink / raw) To: Stephan Gerhold, Konrad Dybcio Cc: Bjorn Andersson, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Marijn Suijten, linux-arm-msm, devicetree, linux-kernel On 8/12/25 5:45 PM, Stephan Gerhold wrote: > On Tue, Aug 12, 2025 at 03:47:23PM +0200, Konrad Dybcio wrote: >> From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> >> >> Describe the power plumbing to allow fully suspending the slot and the >> connected SD controller. >> >> Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > > Are you sure these supplies really exist on the board? E.g. on the > x1e001de-devkit, Windows toggles all these GPIOs, but there doesn't seem > to be anything connected to two of them, the 12V supply is simply always > on. Unfortunately, I have no schematics for this board.. I did reverse the polarity (and removed enable-active-high from the vreg node) to no effect.. so it may be that they're actually unnecessary, i.e. so is this patch > > Even more importantly, for a laptop I would expect they use some part > that doesn't need a beefy 12V supply. I don't have the datasheet for > RTS5261, but e.g. in [1] this chip is explicitly advertised with 3.3V > power. > > I guess it's hard to be sure without schematics and it surely doesn't > hurt to toggle these GPIOs like on Windows, but perhaps a comment that > some of these likely don't exist would be good ... > > [1]: https://www.sdcard.org/cms/wp-content/uploads/2023/06/SDA_computex2023_Realtek.pdf > >> --- [...] >> + sde7_main_reg_en: sde7-main-reg-en-state { >> + pins = "gpio6"; >> + function = "normal"; >> + }; >> + >> + sde7_aux_reg_en: sde7-aux-reg-en-state { >> + pins = "gpio8"; >> + function = "normal"; >> + }; >> }; > > I think you should either do a full configuration (include power-source > and everything else essential as well) or omit this entirely, because > like this you will need the proper configuration from the boot firmware > anyway. 'function' alone is really important on PMIC GPIOs, fwiw Konrad ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/2] arm64: dts: qcom: x1e80100-romulus: Add WCN7850 Wi-Fi/BT 2025-08-12 13:47 [PATCH 0/2] Surface Laptop PCIe3 supplies + Wi-Fi Konrad Dybcio 2025-08-12 13:47 ` [PATCH 1/2] arm64: dts: qcom: x1e80100-romulus: Describe PCIe power supplies Konrad Dybcio @ 2025-08-12 13:47 ` Konrad Dybcio 1 sibling, 0 replies; 5+ messages in thread From: Konrad Dybcio @ 2025-08-12 13:47 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: Marijn Suijten, linux-arm-msm, devicetree, linux-kernel, Konrad Dybcio From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> It comes soldered onboard, just like on the QCP. Unfortunately, the rfkill pin is triggered by default, so a workaround is needed to convince the Linux driver to enable the hw, after which it works just fine. Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> --- .../boot/dts/qcom/x1e80100-microsoft-romulus.dtsi | 143 +++++++++++++++++++++ 1 file changed, 143 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi b/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi index 3a4df8f8066ae699eb7d889530f976fce565757e..d5105ebbfc387f3a6626f1f135cab8a5f92b8e6b 100644 --- a/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi +++ b/arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi @@ -379,6 +379,42 @@ vreg_pcie_3v3_main: regulator-pcie-3v3-main { regulator-boot-on; }; + vreg_wcn_0p95: regulator-wcn-0p95 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_WCN_0P95"; + regulator-min-microvolt = <950000>; + regulator-max-microvolt = <950000>; + + vin-supply = <&vreg_wcn_3p3>; + }; + + vreg_wcn_1p9: regulator-wcn-1p9 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_WCN_1P9"; + regulator-min-microvolt = <1900000>; + regulator-max-microvolt = <1900000>; + + vin-supply = <&vreg_wcn_3p3>; + }; + + vreg_wcn_3p3: regulator-wcn-3p3 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_WCN_3P3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&tlmm 214 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&wcn_sw_en>; + pinctrl-names = "default"; + + regulator-boot-on; + }; + sound { compatible = "qcom,x1e80100-sndcard"; model = "X1E80100-Romulus"; @@ -458,6 +494,65 @@ platform { }; }; }; + + wcn7850-pmu { + compatible = "qcom,wcn7850-pmu"; + + vdd-supply = <&vreg_wcn_0p95>; + vddio-supply = <&vreg_l15b>; + vddaon-supply = <&vreg_wcn_0p95>; + vdddig-supply = <&vreg_wcn_0p95>; + vddrfa1p2-supply = <&vreg_wcn_1p9>; + vddrfa1p8-supply = <&vreg_wcn_1p9>; + + wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>; + bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>; + + pinctrl-0 = <&wcn_wlan_bt_en>; + pinctrl-names = "default"; + + regulators { + vreg_pmu_rfa_cmn: ldo0 { + regulator-name = "vreg_pmu_rfa_cmn"; + }; + + vreg_pmu_aon_0p59: ldo1 { + regulator-name = "vreg_pmu_aon_0p59"; + }; + + vreg_pmu_wlcx_0p8: ldo2 { + regulator-name = "vreg_pmu_wlcx_0p8"; + }; + + vreg_pmu_wlmx_0p85: ldo3 { + regulator-name = "vreg_pmu_wlmx_0p85"; + }; + + vreg_pmu_btcmx_0p85: ldo4 { + regulator-name = "vreg_pmu_btcmx_0p85"; + }; + + vreg_pmu_rfa_0p8: ldo5 { + regulator-name = "vreg_pmu_rfa_0p8"; + }; + + vreg_pmu_rfa_1p2: ldo6 { + regulator-name = "vreg_pmu_rfa_1p2"; + }; + + vreg_pmu_rfa_1p8: ldo7 { + regulator-name = "vreg_pmu_rfa_1p8"; + }; + + vreg_pmu_pcie_0p9: ldo8 { + regulator-name = "vreg_pmu_pcie_0p9"; + }; + + vreg_pmu_pcie_1p8: ldo9 { + regulator-name = "vreg_pmu_pcie_1p8"; + }; + }; + }; }; &apps_rsc { @@ -1087,6 +1182,23 @@ &pcie4_phy { status = "okay"; }; +&pcie4_port0 { + wifi@0 { + compatible = "pci17cb,1107"; + reg = <0x10000 0x0 0x0 0x0 0x0>; + + vddaon-supply = <&vreg_pmu_aon_0p59>; + vddwlcx-supply = <&vreg_pmu_wlcx_0p8>; + vddwlmx-supply = <&vreg_pmu_wlmx_0p85>; + vddrfacmn-supply = <&vreg_pmu_rfa_cmn>; + vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>; + vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>; + vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>; + vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>; + vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>; + }; +}; + &pcie6a { perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>; wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>; @@ -1310,6 +1422,13 @@ ssam_state: ssam-state-state { bias-disable; }; + wcn_wlan_bt_en: wcn-wlan-bt-en-state { + pins = "gpio116", "gpio117"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + pcie3_default: pcie3-default-state { perst-n-pins { pins = "gpio143"; @@ -1385,6 +1504,13 @@ wcd_default: wcd-reset-n-active-state { output-low; }; + wcn_sw_en: wcn-sw-en-state { + pins = "gpio214"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + cam_indicator_en: cam-indicator-en-state { pins = "gpio225"; function = "gpio"; @@ -1408,6 +1534,23 @@ embedded-controller { }; }; +&uart14 { + status = "okay"; + + bluetooth { + compatible = "qcom,wcn7850-bt"; + max-speed = <3200000>; + + vddaon-supply = <&vreg_pmu_aon_0p59>; + vddwlcx-supply = <&vreg_pmu_wlcx_0p8>; + vddwlmx-supply = <&vreg_pmu_wlmx_0p85>; + vddrfacmn-supply = <&vreg_pmu_rfa_cmn>; + vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>; + vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>; + vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>; + }; +}; + &usb_1_ss0_hsphy { vdd-supply = <&vreg_l3j>; vdda12-supply = <&vreg_l2j>; -- 2.50.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-08-13 12:09 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2025-08-12 13:47 [PATCH 0/2] Surface Laptop PCIe3 supplies + Wi-Fi Konrad Dybcio 2025-08-12 13:47 ` [PATCH 1/2] arm64: dts: qcom: x1e80100-romulus: Describe PCIe power supplies Konrad Dybcio 2025-08-12 15:45 ` Stephan Gerhold 2025-08-13 12:09 ` Konrad Dybcio 2025-08-12 13:47 ` [PATCH 2/2] arm64: dts: qcom: x1e80100-romulus: Add WCN7850 Wi-Fi/BT Konrad Dybcio
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®