* [PATCH 1/4] arm64: defconfig: Enable Qualcomm LCDB regulator
2026-11-13 8:16 [PATCH 0/4] Wire up LCDB regulator on Fairphone 3 & Fairphone 4 Luca Weiss
@ 2026-11-13 8:16 ` Luca Weiss
2026-11-13 8:16 ` [PATCH 2/4] arm64: dts: qcom: sdm632-fairphone-fp3: Wire up PMI632 LCDB Luca Weiss
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Luca Weiss @ 2026-11-13 8:16 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov, Val Packett
Cc: ~postmarketos/upstreaming, phone-devel, linux-kernel,
linux-arm-msm, devicetree, Luca Weiss
Enable the Qualcomm LCDB regulator driver as module, as it's used on
some devices like the Fairphone 3 and Fairphone 4.
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
arch/arm64/configs/defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index 898f4f1d5952..d0869b08a69e 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -910,6 +910,7 @@ CONFIG_REGULATOR_SGM3804=y
CONFIG_REGULATOR_TPS65132=m
CONFIG_REGULATOR_TPS65219=y
CONFIG_REGULATOR_VCTRL=m
+CONFIG_REGULATOR_QCOM_LCDB=m
CONFIG_RC_CORE=m
CONFIG_RC_DECODERS=y
CONFIG_RC_DEVICES=y
--
2.56.1
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH 2/4] arm64: dts: qcom: sdm632-fairphone-fp3: Wire up PMI632 LCDB
2026-11-13 8:16 [PATCH 0/4] Wire up LCDB regulator on Fairphone 3 & Fairphone 4 Luca Weiss
2026-11-13 8:16 ` [PATCH 1/4] arm64: defconfig: Enable Qualcomm LCDB regulator Luca Weiss
@ 2026-11-13 8:16 ` Luca Weiss
2026-11-13 8:16 ` [PATCH 3/4] arm64: dts: qcom: pm6150l: add LCDB regulators Luca Weiss
2026-11-13 8:16 ` [PATCH 4/4] arm64: dts: qcom: sm7225-fairphone-fp4: Wire up PM6150L LCDB Luca Weiss
3 siblings, 0 replies; 8+ messages in thread
From: Luca Weiss @ 2026-11-13 8:16 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov, Val Packett
Cc: ~postmarketos/upstreaming, phone-devel, linux-kernel,
linux-arm-msm, devicetree, Luca Weiss
Since Linux has gained LCDB support now, wire up the LCDB regulators so
we can turn them off and on as desired.
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
arch/arm64/boot/dts/qcom/sdm632-fairphone-fp3.dts | 26 ++++++++++++++---------
1 file changed, 16 insertions(+), 10 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sdm632-fairphone-fp3.dts b/arch/arm64/boot/dts/qcom/sdm632-fairphone-fp3.dts
index 3223884f9cd6..77331ae6a692 100644
--- a/arch/arm64/boot/dts/qcom/sdm632-fairphone-fp3.dts
+++ b/arch/arm64/boot/dts/qcom/sdm632-fairphone-fp3.dts
@@ -72,14 +72,6 @@ vreg_cam2_dig_1p2: regulator-cam2-dig-1p2 {
vin-supply = <&vph_pwr>;
};
- /* Dummy regulator until PMI632 has LCDB VSP/VSN support */
- lcdb_dummy: regulator-lcdb-dummy {
- compatible = "regulator-fixed";
- regulator-name = "lcdb_dummy";
- regulator-min-microvolt = <5500000>;
- regulator-max-microvolt = <5500000>;
- };
-
vph_pwr: vph-pwr-regulator {
compatible = "regulator-fixed";
regulator-name = "vph_pwr";
@@ -175,8 +167,8 @@ panel@0 {
reset-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>;
iovcc-supply = <&pm8953_l6>;
- vsn-supply = <&lcdb_dummy>;
- vsp-supply = <&lcdb_dummy>;
+ vsn-supply = <&pmi632_lcdb_ncp>;
+ vsp-supply = <&pmi632_lcdb_ldo>;
pinctrl-0 = <&mdss_te_default>;
pinctrl-names = "default";
@@ -212,6 +204,20 @@ &pm8953_resin {
status = "okay";
};
+&pmi632_lcdb {
+ status = "okay";
+};
+
+&pmi632_lcdb_ldo {
+ regulator-min-microvolt = <5500000>;
+ regulator-max-microvolt = <5500000>;
+};
+
+&pmi632_lcdb_ncp {
+ regulator-min-microvolt = <5500000>;
+ regulator-max-microvolt = <5500000>;
+};
+
&pmi632_lpg {
status = "okay";
--
2.56.1
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH 3/4] arm64: dts: qcom: pm6150l: add LCDB regulators
2026-11-13 8:16 [PATCH 0/4] Wire up LCDB regulator on Fairphone 3 & Fairphone 4 Luca Weiss
2026-11-13 8:16 ` [PATCH 1/4] arm64: defconfig: Enable Qualcomm LCDB regulator Luca Weiss
2026-11-13 8:16 ` [PATCH 2/4] arm64: dts: qcom: sdm632-fairphone-fp3: Wire up PMI632 LCDB Luca Weiss
@ 2026-11-13 8:16 ` Luca Weiss
2026-11-13 8:16 ` [PATCH 4/4] arm64: dts: qcom: sm7225-fairphone-fp4: Wire up PM6150L LCDB Luca Weiss
3 siblings, 0 replies; 8+ messages in thread
From: Luca Weiss @ 2026-11-13 8:16 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov, Val Packett
Cc: ~postmarketos/upstreaming, phone-devel, linux-kernel,
linux-arm-msm, devicetree, Luca Weiss
Describe the LCDB block providing the LCD bias rails. Leave empty
regulator nodes, forcing board files to provide correct voltage.
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
arch/arm64/boot/dts/qcom/pm6150l.dtsi | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/pm6150l.dtsi b/arch/arm64/boot/dts/qcom/pm6150l.dtsi
index 334f976f1154..095b24a8a01b 100644
--- a/arch/arm64/boot/dts/qcom/pm6150l.dtsi
+++ b/arch/arm64/boot/dts/qcom/pm6150l.dtsi
@@ -135,5 +135,19 @@ pm6150l_wled: leds@d800 {
status = "disabled";
};
+
+ pm6150l_lcdb: regulator@ec00 {
+ compatible = "qcom,pm6150l-lcdb", "qcom,pm8150l-lcdb";
+ reg = <0xec00>;
+ interrupts = <0x5 0xec 0x1 IRQ_TYPE_EDGE_RISING>;
+
+ status = "disabled";
+
+ pm6150l_lcdb_ldo: ldo {
+ };
+
+ pm6150l_lcdb_ncp: ncp {
+ };
+ };
};
};
--
2.56.1
^ permalink raw reply [flat|nested] 8+ messages in thread* [PATCH 4/4] arm64: dts: qcom: sm7225-fairphone-fp4: Wire up PM6150L LCDB
2026-11-13 8:16 [PATCH 0/4] Wire up LCDB regulator on Fairphone 3 & Fairphone 4 Luca Weiss
` (2 preceding siblings ...)
2026-11-13 8:16 ` [PATCH 3/4] arm64: dts: qcom: pm6150l: add LCDB regulators Luca Weiss
@ 2026-11-13 8:16 ` Luca Weiss
2026-11-13 12:59 ` Luca Weiss
3 siblings, 1 reply; 8+ messages in thread
From: Luca Weiss @ 2026-11-13 8:16 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Abel Vesa, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov, Val Packett
Cc: ~postmarketos/upstreaming, phone-devel, linux-kernel,
linux-arm-msm, devicetree, Luca Weiss
Since Linux has gained LCDB support now, wire up the LCDB regulators so
we can turn them off and on as desired.
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts | 26 ++++++++++++++---------
1 file changed, 16 insertions(+), 10 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts b/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
index 37aa272019cc..d592bede6a61 100644
--- a/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
+++ b/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
@@ -72,14 +72,6 @@ key-volume-up {
};
};
- /* Dummy regulator until PM6150L has LCDB VSP/VSN support */
- lcdb_dummy: regulator-lcdb-dummy {
- compatible = "regulator-fixed";
- regulator-name = "lcdb_dummy";
- regulator-min-microvolt = <5500000>;
- regulator-max-microvolt = <5500000>;
- };
-
reserved-memory {
/*
* The rmtfs memory region in downstream is 'dynamically allocated'
@@ -784,8 +776,8 @@ panel@0 {
reset-gpios = <&pm6150l_gpios 9 GPIO_ACTIVE_LOW>;
vdd1-supply = <&vreg_l1e>;
- vsn-supply = <&lcdb_dummy>;
- vsp-supply = <&lcdb_dummy>;
+ vsn-supply = <&pm6150l_lcdb_ncp>;
+ vsp-supply = <&pm6150l_lcdb_ldo>;
port {
panel_in: endpoint {
@@ -925,6 +917,20 @@ pm6150l_adc_default: adc-default-state {
};
};
+&pm6150l_lcdb {
+ status = "okay";
+};
+
+&pm6150l_lcdb_ldo {
+ regulator-min-microvolt = <5500000>;
+ regulator-max-microvolt = <5500000>;
+};
+
+&pm6150l_lcdb_ncp {
+ regulator-min-microvolt = <5500000>;
+ regulator-max-microvolt = <5500000>;
+};
+
&pm6150l_wled {
qcom,switching-freq = <800>;
qcom,current-limit-microamp = <20000>;
--
2.56.1
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH 4/4] arm64: dts: qcom: sm7225-fairphone-fp4: Wire up PM6150L LCDB
2026-11-13 8:16 ` [PATCH 4/4] arm64: dts: qcom: sm7225-fairphone-fp4: Wire up PM6150L LCDB Luca Weiss
@ 2026-11-13 12:59 ` Luca Weiss
2026-11-13 13:09 ` Val Packett
0 siblings, 1 reply; 8+ messages in thread
From: Luca Weiss @ 2026-11-13 12:59 UTC (permalink / raw)
To: Luca Weiss, Bjorn Andersson, Konrad Dybcio, Abel Vesa,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov,
Val Packett
Cc: ~postmarketos/upstreaming, phone-devel, linux-kernel,
linux-arm-msm, devicetree
On Fri Nov 13, 2026 at 9:16 AM CET, Luca Weiss wrote:
> Since Linux has gained LCDB support now, wire up the LCDB regulators so
> we can turn them off and on as desired.
Actually after some more testing with extra patches, it seems that on
FP4 the touchscreen stays dead after toggling the lcdb regulator, while
on FP3 it works perfectly fine.
So please ignore this specific patch for now, I will figure out what the
problem is and re-submit. All the other patches in the series are still
good to go in!
Regards
Luca
> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
> ---
> arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts | 26 ++++++++++++++---------
> 1 file changed, 16 insertions(+), 10 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts b/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
> index 37aa272019cc..d592bede6a61 100644
> --- a/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
> +++ b/arch/arm64/boot/dts/qcom/sm7225-fairphone-fp4.dts
> @@ -72,14 +72,6 @@ key-volume-up {
> };
> };
>
> - /* Dummy regulator until PM6150L has LCDB VSP/VSN support */
> - lcdb_dummy: regulator-lcdb-dummy {
> - compatible = "regulator-fixed";
> - regulator-name = "lcdb_dummy";
> - regulator-min-microvolt = <5500000>;
> - regulator-max-microvolt = <5500000>;
> - };
> -
> reserved-memory {
> /*
> * The rmtfs memory region in downstream is 'dynamically allocated'
> @@ -784,8 +776,8 @@ panel@0 {
> reset-gpios = <&pm6150l_gpios 9 GPIO_ACTIVE_LOW>;
>
> vdd1-supply = <&vreg_l1e>;
> - vsn-supply = <&lcdb_dummy>;
> - vsp-supply = <&lcdb_dummy>;
> + vsn-supply = <&pm6150l_lcdb_ncp>;
> + vsp-supply = <&pm6150l_lcdb_ldo>;
>
> port {
> panel_in: endpoint {
> @@ -925,6 +917,20 @@ pm6150l_adc_default: adc-default-state {
> };
> };
>
> +&pm6150l_lcdb {
> + status = "okay";
> +};
> +
> +&pm6150l_lcdb_ldo {
> + regulator-min-microvolt = <5500000>;
> + regulator-max-microvolt = <5500000>;
> +};
> +
> +&pm6150l_lcdb_ncp {
> + regulator-min-microvolt = <5500000>;
> + regulator-max-microvolt = <5500000>;
> +};
> +
> &pm6150l_wled {
> qcom,switching-freq = <800>;
> qcom,current-limit-microamp = <20000>;
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH 4/4] arm64: dts: qcom: sm7225-fairphone-fp4: Wire up PM6150L LCDB
2026-11-13 12:59 ` Luca Weiss
@ 2026-11-13 13:09 ` Val Packett
2026-11-13 13:27 ` Luca Weiss
0 siblings, 1 reply; 8+ messages in thread
From: Val Packett @ 2026-11-13 13:09 UTC (permalink / raw)
To: Luca Weiss, Bjorn Andersson, Konrad Dybcio, Abel Vesa,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Dmitry Baryshkov
Cc: ~postmarketos/upstreaming, phone-devel, linux-kernel,
linux-arm-msm, devicetree
On 11/13/26 9:59 AM, Luca Weiss wrote:
> On Fri Nov 13, 2026 at 9:16 AM CET, Luca Weiss wrote:
>> Since Linux has gained LCDB support now, wire up the LCDB regulators so
>> we can turn them off and on as desired.
> Actually after some more testing with extra patches, it seems that on
> FP4 the touchscreen stays dead after toggling the lcdb regulator, while
> on FP3 it works perfectly fine.
>
> So please ignore this specific patch for now, I will figure out what the
> problem is and re-submit. All the other patches in the series are still
> good to go in!
Your touchscreen needs to be a drm panel follower and/or reference the
same supplies as well :) Most modern touch controllers are part of the
same physical DDIC as the actual display side
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 4/4] arm64: dts: qcom: sm7225-fairphone-fp4: Wire up PM6150L LCDB
2026-11-13 13:09 ` Val Packett
@ 2026-11-13 13:27 ` Luca Weiss
0 siblings, 0 replies; 8+ messages in thread
From: Luca Weiss @ 2026-11-13 13:27 UTC (permalink / raw)
To: Val Packett, Luca Weiss, Bjorn Andersson, Konrad Dybcio,
Abel Vesa, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Dmitry Baryshkov
Cc: ~postmarketos/upstreaming, phone-devel, linux-kernel,
linux-arm-msm, devicetree
On Fri Nov 13, 2026 at 2:09 PM CET, Val Packett wrote:
>
> On 11/13/26 9:59 AM, Luca Weiss wrote:
>> On Fri Nov 13, 2026 at 9:16 AM CET, Luca Weiss wrote:
>>> Since Linux has gained LCDB support now, wire up the LCDB regulators so
>>> we can turn them off and on as desired.
>> Actually after some more testing with extra patches, it seems that on
>> FP4 the touchscreen stays dead after toggling the lcdb regulator, while
>> on FP3 it works perfectly fine.
>>
>> So please ignore this specific patch for now, I will figure out what the
>> problem is and re-submit. All the other patches in the series are still
>> good to go in!
>
> Your touchscreen needs to be a drm panel follower and/or reference the
> same supplies as well :) Most modern touch controllers are part of the
> same physical DDIC as the actual display side
Yep, I assumed the same. Probably need to resend the init sequence [0]
after power cycle, when the panel is back on again, to get everything
running again.
[0] https://lore.kernel.org/linux-arm-msm/20260821-fp4-hx83112a-v1-2-474941bd8860@fairphone.com/ hx83112a_init()
Fairphone 3 should be a similar setup (FP3: hx83112b, FP4: hx83112a) but
apparently the hx83112b doesn't need any sort of init to start sending
touch inputs compared to hx83112a.
Regards
Luca
^ permalink raw reply [flat|nested] 8+ messages in thread