[PATCH] arm64: dts: qcom: x1e80100-dell-xps13-9345: enable onboard accelerometers
From: Aleksandrs Vinarskis
Date: Sat Feb 28 2026 - 14:51:49 EST
Particular laptop comes with two sets of sensors:
1. Motherboard: accelerometer
2. Display/Camera module: accelerometer, ambient ligth (and more)
sensor
Define both i2c busses (bitbanged), sensors and respective rotation
matrices.
Both accelerometers were tested individually via `monitor-sensor`.
Display accelerometer is defined first, as it appears automatic
screen rotation tools simply pick the 1st iio device.
Signed-off-by: Aleksandrs Vinarskis <alex@xxxxxxxxxxxxx>
---
Enable two accelerometers, one on the motherboard, one in display.
In combination with userland screen rotation tools such as Gnome's
'screen rotate' [1] this allows for automatic screen rotation depending
on device orientation.
There appears to be an ALS, a "True Color Sensor with Flicker Detection"
AMS TCS3530 at 0x39. Out-of-tree driver from OSRAM is available [2].
Document bus, address, IRQ such that it could be added in the future.
There is an issue with st_sensors which prevents initializing two
sensors at the time, fix submitted [3]. It is not blocking this series,
as without it, 2nd currently unused accelerometer on the motherboard
will simply fail to probe.
[1] https://extensions.gnome.org/extension/5389/screen-rotate
[2] https://ams-osram.com/support/download-center?search=TCS3530&type=software&subtype=driver
[3] https://lore.kernel.org/all/20260228-st-iio-trigger-v1-1-abf5909e547f@xxxxxxxxxxxxx/
---
.../boot/dts/qcom/x1e80100-dell-xps13-9345.dts | 94 ++++++++++++++++++++++
1 file changed, 94 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts b/arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts
index 4c95b1af2c64432967dc1e8b1d1c8bfe5a59cc34..42829a7e7c407add12560c75ede9bf02bcc0d9f8 100644
--- a/arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts
+++ b/arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts
@@ -40,6 +40,67 @@ switch-lid {
};
};
+ /* Display-mounted sensors */
+ i2c-sensors-display {
+ compatible = "i2c-gpio";
+ i2c-gpio,delay-us = <2>;
+
+ scl-gpios = <&tlmm 232 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ sda-gpios = <&tlmm 231 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+
+ pinctrl-0 = <&sensors_i2c_display_default>;
+ pinctrl-names = "default";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ accelerometer@18 {
+ compatible = "st,lis2dw12";
+ reg = <0x18>;
+
+ interrupts-extended = <&tlmm 29 IRQ_TYPE_LEVEL_LOW>;
+ pinctrl-0 = <&acc_display_int_n_default>;
+ pinctrl-names = "default";
+
+ mount-matrix = "-1", "0", "0",
+ "0", "1", "0",
+ "0", "0", "-1";
+ };
+
+ /* AMS TCS3530 @ 0x39, IRQ 93 */
+ };
+
+ /* Motherboard-mounted sensors */
+ i2c-sensors-mobo {
+ compatible = "i2c-gpio";
+ i2c-gpio,delay-us = <2>;
+
+ scl-gpios = <&tlmm 216 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+ sda-gpios = <&tlmm 215 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+
+ pinctrl-0 = <&sensors_i2c_mobo_default>;
+ pinctrl-names = "default";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ accelerometer@18 {
+ compatible = "st,lis2dw12";
+ reg = <0x18>;
+
+ interrupts-extended = <&tlmm 28 IRQ_TYPE_LEVEL_LOW>;
+ pinctrl-0 = <&acc_mobo_int_n_default>;
+ pinctrl-names = "default";
+
+ vdd-supply = <&vreg_l10b_1p8>;
+ vddio-supply = <&vreg_l10b_1p8>;
+
+ mount-matrix = "0", "1", "0",
+ "0", "0", "1",
+ "1", "0", "0";
+ };
+ };
+
leds {
compatible = "gpio-leds";
@@ -450,6 +511,13 @@ vreg_l9b_2p9: ldo9 {
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
+ vreg_l10b_1p8: ldo10 {
+ regulator-name = "vreg_l10b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
vreg_l12b_1p2: ldo12 {
regulator-name = "vreg_l12b_1p2";
regulator-min-microvolt = <1200000>;
@@ -1074,6 +1142,18 @@ &tlmm {
<76 4>, /* SPI19 (TZ Protected) */
<238 1>; /* UFS Reset */
+ acc_display_int_n_default: acc-display-int-n-state {
+ pins = "gpio29";
+ function = "gpio";
+ bias-pull-up;
+ };
+
+ acc_mobo_int_n_default: acc-mobo-int-n-state {
+ pins = "gpio28";
+ function = "gpio";
+ bias-pull-up;
+ };
+
cam_indicator_en: cam-indicator-en-state {
pins = "gpio110";
function = "gpio";
@@ -1197,6 +1277,20 @@ rtmr1_default: rtmr1-reset-n-active-state {
bias-disable;
};
+ sensors_i2c_display_default: sensors-i2c-display-state {
+ pins = "gpio231", "gpio232";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ sensors_i2c_mobo_default: sensors-i2c-mobo-state {
+ pins = "gpio215", "gpio216";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
tpad_default: tpad-default-state {
disable-pins {
pins = "gpio38";
---
base-commit: 3fa5e5702a82d259897bd7e209469bc06368bf31
change-id: 20260228-dell-xps-9345-accel-4ab40ed9c827
Best regards,
--
Aleksandrs Vinarskis <alex@xxxxxxxxxxxxx>