arm64: dts: qcom: x1e80100-dell-xps13-9345: enable onboard accelerometers

Particular laptop comes with two sets of sensors:
1. Motherboard: accelerometer
2. Display/Camera module: accelerometer, ambient ligth (and more)
   sensor

Both i2c busses are bound to Snapdragon Sensor Core (SSC) and are
typically controlled by (A)DSP thus allowing for great power
efficiency. This however requires DSP libraries matching ADSP firmware,
sensors descriptions (must be extracted from Windows) and other
potentially closed-source libraries. Opensource tooling includes
`libssc` and `hexagonrpcd`, but they were not verified to be working.

Until SSC support for X1E lands, bitbang both i2c busses to enable
accelerometer functionality. In the future if/when sensors on this
platform can be used from DSP directly, this commit can be reverted.

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@vinarskis.com>
Acked-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://patch.msgid.link/20260331-dell-xps-9345-accel-v2-1-7dacbd24b43d@vinarskis.com
Signed-off-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
This commit is contained in:
Aleksandrs Vinarskis
2026-08-05 15:35:59 +03:00
committed by Abel Vesa
parent f7d0acd6df
commit 070154ae57
@@ -40,6 +40,67 @@
};
};
/* Display-mounted sensors */
i2c-sensors1 {
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-sensors2 {
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";
@@ -501,6 +562,13 @@
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>;
@@ -1289,6 +1357,18 @@
<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";
@@ -1418,6 +1498,20 @@
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";