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
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
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
© 2016 - 2026 Red Hat, Inc.