[PATCH v2] arm64: dts: qcom: x1e80100-medion-sprchrgd-14-s1: Add PWM backlight

From: Sérgio Ferreira via B4 Relay

Date: Sun Oct 25 2026 - 03:51:47 EST


From: Sérgio Ferreira <ferreira@xxxxxxxx>

The eDP panel (CSOT MNE007ZA3-2, IPS LCD) cannot have its brightness
set over eDP AUX. With no backlight phandle on the panel, panel-edp
falls back to the DP AUX backlight, which registers dp_aux_backlight
with a maximum brightness of 0, so brightness control has no effect.

Brightness is driven by PWM instead. UEFI leaves PM8550 LPG channel 3
running and the PWM output configured on PM8550 GPIO 8, and drives
PMC8380_3 GPIO 4 high as the backlight enable:

pm8550 gpio8 : out low func1 vin-0 no pull push-pull medium
pmc8380_3 gpio4 : out high normal vin-1 pull-down push-pull medium

The panel configuration in the Windows ACPI tables confirmed this.
(PMIC-controlled PWM, PMIC 1, bank 3, 9-bit, 2 kHz).

Describe this with a pwm-backlight node: enable pm8550_pwm, add pinctrl
states for the enable GPIO and for gpio8 func1, and attach the
backlight to the panel.

Tested on a Medion SPRCHRGD 14 S1 (X1E78100): brightness control over
the full range, brightness keys, suspend/resume and restore after
reboot.

Assisted-by: LLM
Signed-off-by: Sérgio Ferreira <ferreira@xxxxxxxx>
---
The PWM output pin was identified from the firmware-configured PMIC
state (both PM8550 GPIO 7 and 8 run func1; GPIO 8 matches a
non-inverted, full-duty backlight PWM) and verified by booting with
this pinctrl state. It was not taken from schematics, so a
confirmation from someone with board documentation would be welcome.

Changes in v2:
- Add a pinctrl state for the backlight enable GPIO (thanks Konrad Dybico)
- Link to v1: https://lore.kernel.org/r/20261003-medion-sprchrgd-14-backlight-v1-1-e47da56acfa2@xxxxxxxx
---
Changes in v2:
- EDITME: describe what is new in this series revision.
- EDITME: use bulletpoints and terse descriptions.
- Link to v1: https://lore.kernel.org/r/20261003-medion-sprchrgd-14-backlight-v1-1-e47da56acfa2@xxxxxxxx
---
.../dts/qcom/x1e80100-medion-sprchrgd-14-s1.dts | 29 ++++++++++++++++++++++
1 file changed, 29 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/x1e80100-medion-sprchrgd-14-s1.dts b/arch/arm64/boot/dts/qcom/x1e80100-medion-sprchrgd-14-s1.dts
index 9b599917c..91b82ef27 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100-medion-sprchrgd-14-s1.dts
+++ b/arch/arm64/boot/dts/qcom/x1e80100-medion-sprchrgd-14-s1.dts
@@ -52,6 +52,15 @@ wcd938x: audio-codec {
#sound-dai-cells = <1>;
};

+ backlight: backlight {
+ compatible = "pwm-backlight";
+ pwms = <&pm8550_pwm 3 500000>;
+ enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>;
+
+ pinctrl-0 = <&edp_bl_en>, <&edp_bl_pwm>;
+ pinctrl-names = "default";
+ };
+
chosen {
stdout-path = "serial0:115200n8";
};
@@ -997,6 +1006,7 @@ &mdss_dp3 {
aux-bus {
panel {
compatible = "edp-panel";
+ backlight = <&backlight>;
power-supply = <&vreg_edp_3p3>;

port {
@@ -1084,6 +1094,11 @@ &pcie6a_port0 {
};

&pm8550_gpios {
+ edp_bl_pwm: edp-bl-pwm-state {
+ pins = "gpio8";
+ function = "func1";
+ };
+
rtmr0_default: rtmr0-reset-n-active-state {
pins = "gpio10";
function = "normal";
@@ -1103,6 +1118,10 @@ usb0_3p3_reg_en: usb0-3p3-reg-en-state {
};
};

+&pm8550_pwm {
+ status = "okay";
+};
+
&pm8550ve_9_gpios {
usb0_1p8_reg_en: usb0-1p8-reg-en-state {
pins = "gpio8";
@@ -1114,6 +1133,16 @@ usb0_1p8_reg_en: usb0-1p8-reg-en-state {
};
};

+&pmc8380_3_gpios {
+ edp_bl_en: edp-bl-en-state {
+ pins = "gpio4";
+ function = "normal";
+ power-source = <1>;
+ input-disable;
+ output-enable;
+ };
+};
+
&pmc8380_5_gpios {
usb0_pwr_1p15_reg_en: usb0-pwr-1p15-reg-en-state {
pins = "gpio8";

---
base-commit: 20a33c6b6cbe7e4805dfb6cd68816937443aa148
change-id: 20261003-medion-sprchrgd-14-backlight-481aab244d8d

Best regards,
--
Sérgio Ferreira <ferreira@xxxxxxxx>