[PATCH v5 3/3] arm64: dts: qcom: sc8280xp-x13s: Add embedded controller
From: Alex Robinson
Date: Fri Oct 02 2026 - 11:47:48 EST
Enable the ThinkPad X13s embedded controller so its driver can provide
keyboard backlight support when booting with Device Tree.
Use a pull-up on the EC interrupt line to match the firmware-inherited
configuration measured before Linux configured the pin.
Assisted-by: LLM
Signed-off-by: Alex Robinson <alex@xxxxxxxxxxxxx>
---
Review note: GPIO103 was measured at pinctrl probe before Linux
claimed/configured the pin. TLMM CTL offset 0x67000 read 0x00000003;
the pull field value of 3 decodes to pull-up on SC8280XP.
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 218573a97785b04528854b03a99c837558a33c1e..1e29bab37de6d192ec49dc407e24e1a3bc9496bd 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
@@ -806,6 +806,25 @@ &i2c4 {
};
};
+&i2c8 {
+ clock-frequency = <400000>;
+
+ pinctrl-0 = <&i2c8_default>;
+ pinctrl-names = "default";
+
+ status = "okay";
+
+ embedded-controller@28 {
+ compatible = "lenovo,thinkpad-x13s-ec";
+ reg = <0x28>;
+ interrupts-extended = <&tlmm 103 IRQ_TYPE_EDGE_FALLING>;
+ power-state-gpios = <&tlmm 176 GPIO_ACTIVE_HIGH>;
+ pinctrl-0 = <&ec_int_n>, <&ec_power_state>;
+ pinctrl-names = "default";
+ wakeup-source;
+ };
+};
+
&i2c11 {
clock-frequency = <400000>;
@@ -1571,6 +1590,20 @@ cam_rgb_default: cam-rgb-default-state {
};
};
+ ec_int_n: ec-int-n-state {
+ pins = "gpio103";
+ function = "gpio";
+ input-enable;
+ bias-pull-up;
+ };
+
+ ec_power_state: ec-power-state {
+ pins = "gpio176";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
edp_reg_en: edp-reg-en-state {
pins = "gpio25";
function = "gpio";
@@ -1591,6 +1624,13 @@ i2c4_default: i2c4-default-state {
bias-disable;
};
+ i2c8_default: i2c8-default-state {
+ pins = "gpio43", "gpio44";
+ function = "qup8";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
i2c11_default: i2c11-default-state {
pins = "gpio18", "gpio19";
function = "qup11";