Re: [PATCH v6 3/3] arm64: dts: qcom: x1e80100-dell-xps13-9345: introduce EC

From: Aleksandrs Vinarskis

Date: Thu Oct 22 2026 - 13:09:12 EST


On Tuesday, October 13th, 2026 at 21:53, Liviu Nicoara <lnicoara@xxxxxxxxxxxx> wrote:

> On Tue, 13 Oct 2026 12:27:16 -0500, Michael Burch wrote:
> > These two should be AMUX1_GPIO and AMUX2_GPIO. My unit (BIOS 2.14.0)
> > shows what Liviu reported [1]: 0x14c (lpddr5_therm) reads 130.048 C from
> > boot on, and that is the value the EC is sent.
>
> Same here, and the ADC1 table settles what my readings left open.
> On this unit (also BIOS 2.14.0), with all four GPIO channels defined
> in one DTB on a 7.2.6 kernel:
>
> 0x14a 38.6 C 0x14c 130.0 C (constant)
> 0x14b 32.7 C 0x14d 34.7 C
>
> A charger on the left USB-C port warmed 0x14b by 1.6 C in three
> minutes; 0x14d stayed within 0.1 C. So usb_charger_left_therm is
> AMUX2_GPIO, 0x14b, as your table says; 0x14a reads a board
> temperature and warms with the SoC.

Hey,

Thats a very good find. I have checked and it seems you are right;
Most of mapping between ADC channels relied on schematics that I
managed to get my hands on, its now clear that it is not a most up
to date document... As EC only reacts to some of the temperatures
fed to it and not all, I missed this in my testing.

Ignoring all the information from schematics now, I am trying to
re-verify names for all the ADC channels. I do not think the left
charger you identified is correct - how did you arrive to that
conclusion? Curious to compare to my method. I run a number of
stress tests to narrow it down:

1. RHS charger getting plugged, 10s wait:
LABEL START END DIFF
pm8550_die_temp 49.5°C 49.0°C -0.6°C
vph_pwr_therm 53.3°C 53.1°C -0.2°C
usb_charger_right_therm 45.2°C 47.5°C +2.3°C
ssd_conn_therm 47.0°C 46.6°C -0.4°C
sys_therm5 39.1°C 39.3°C +0.2°C
keyboard_therm 51.6°C 51.3°C -0.3°C
pm8550_gpio_01 51.4°C 51.1°C -0.3°C
pm8550_gpio_02 44.6°C 44.3°C -0.3°C
lpddr5_therm 130.0°C 130.0°C +0.0°C
usb_charger_left_therm 35.9°C 35.8°C -0.0°C
pm8550ve_2_die_temp 50.7°C 50.3°C -0.4°C
pmk8550_die_temp 48.1°C 47.6°C -0.5°C
pmc8380_3_die_temp 48.6°C 48.1°C -0.5°C
pmc8380_4_die_temp 47.1°C 46.7°C -0.3°C
pmc8380_5_die_temp 48.8°C 48.3°C -0.5°C
pmc8380_6_die_temp 48.0°C 47.4°C -0.6°C
pm8550ve_8_die_temp 47.3°C 47.8°C +0.5°C
pm8550ve_9_die_temp 51.3°C 51.0°C -0.4°C

Charger unplugged:
LABEL START END DIFF
pm8550_die_temp 49.3°C 48.5°C -0.8°C
vph_pwr_therm 53.0°C 52.5°C -0.6°C
usb_charger_right_therm 47.1°C 45.7°C -1.4°C
ssd_conn_therm 46.5°C 46.1°C -0.4°C
sys_therm5 39.2°C 39.2°C -0.0°C
keyboard_therm 51.3°C 51.0°C -0.3°C
pm8550_gpio_01 51.3°C 51.0°C -0.3°C
pm8550_gpio_02 44.3°C 44.0°C -0.3°C
lpddr5_therm 130.0°C 130.0°C +0.0°C
usb_charger_left_therm 35.8°C 35.8°C -0.0°C
pm8550ve_2_die_temp 50.2°C 49.7°C -0.5°C
pmk8550_die_temp 47.5°C 47.3°C -0.3°C
pmc8380_3_die_temp 48.4°C 47.8°C -0.6°C
pmc8380_4_die_temp 46.8°C 46.4°C -0.4°C
pmc8380_5_die_temp 48.6°C 48.0°C -0.6°C
pmc8380_6_die_temp 48.1°C 47.3°C -0.7°C
pm8550ve_8_die_temp 48.2°C 47.3°C -0.9°C
pm8550ve_9_die_temp 51.2°C 50.6°C -0.7°C

`usb_charger_right_therm` gained 2.3C in 10s, lost 1.4C 10s.
Clearly follows.

2. LHS charger getting plugged, 10s wait:
LABEL START END DIFF
pm8550_die_temp 47.6°C 47.3°C -0.3°C
vph_pwr_therm 51.6°C 51.5°C -0.1°C
usb_charger_right_therm 44.2°C 43.6°C -0.5°C
ssd_conn_therm 45.2°C 45.0°C -0.2°C
sys_therm5 38.8°C 38.6°C -0.2°C
keyboard_therm 50.1°C 49.9°C -0.2°C
pm8550_gpio_01 50.0°C 49.7°C -0.3°C
pm8550_gpio_02 43.2°C 43.3°C +0.2°C
lpddr5_therm 130.0°C 130.0°C +0.0°C
usb_charger_left_therm 35.8°C 35.8°C -0.0°C
pm8550ve_2_die_temp 49.1°C 48.8°C -0.2°C
pmk8550_die_temp 46.6°C 46.2°C -0.3°C
pmc8380_3_die_temp 47.0°C 46.8°C -0.2°C
pmc8380_4_die_temp 45.6°C 45.4°C -0.2°C
pmc8380_5_die_temp 47.3°C 46.8°C -0.5°C
pmc8380_6_die_temp 46.7°C 46.1°C -0.6°C
pm8550ve_8_die_temp 46.2°C 45.8°C -0.4°C
pm8550ve_9_die_temp 49.8°C 49.5°C -0.3°C

Charger unplugged:
LABEL START END DIFF
pm8550_die_temp 47.3°C 47.2°C -0.1°C
vph_pwr_therm 51.4°C 50.9°C -0.5°C
usb_charger_right_therm 43.8°C 43.4°C -0.4°C
ssd_conn_therm 45.0°C 44.8°C -0.1°C
sys_therm5 38.6°C 38.4°C -0.2°C
keyboard_therm 49.7°C 49.3°C -0.4°C
pm8550_gpio_01 49.6°C 49.2°C -0.5°C
pm8550_gpio_02 43.4°C 43.3°C -0.1°C
lpddr5_therm 130.0°C 130.0°C +0.0°C
usb_charger_left_therm 35.8°C 35.8°C +0.0°C
pm8550ve_2_die_temp 48.7°C 48.4°C -0.3°C
pmk8550_die_temp 46.1°C 45.8°C -0.3°C
pmc8380_3_die_temp 46.9°C 46.5°C -0.4°C
pmc8380_4_die_temp 45.4°C 45.0°C -0.4°C
pmc8380_5_die_temp 46.9°C 46.5°C -0.4°C
pmc8380_6_die_temp 46.3°C 45.9°C -0.4°C
pm8550ve_8_die_temp 45.8°C 45.6°C -0.3°C
pm8550ve_9_die_temp 49.5°C 49.1°C -0.4°C

pm8550_gpio_02 does NOT clearly follow. In your test you have
waited multiple minutes, which is enough to heat up a larger
area on the motherboard.

3. SSD stress test, 30s wait:
LABEL START END DIFF
pm8550_die_temp 45.7°C 51.6°C +5.9°C
vph_pwr_therm 49.6°C 55.0°C +5.4°C
usb_charger_right_therm 41.5°C 44.4°C +2.9°C
ssd_conn_therm 42.9°C 47.9°C +5.0°C
sys_therm5 36.7°C 36.9°C +0.2°C
keyboard_therm 47.7°C 53.0°C +5.3°C
pm8550_gpio_01 47.7°C 52.5°C +4.8°C
pm8550_gpio_02 41.0°C 44.6°C +3.6°C
lpddr5_therm 130.0°C 130.0°C +0.0°C
usb_charger_left_therm 35.7°C 35.9°C +0.2°C
pm8550ve_2_die_temp 47.0°C 52.4°C +5.4°C
pmk8550_die_temp 44.2°C 48.4°C +4.2°C
pmc8380_3_die_temp 46.0°C 52.8°C +6.8°C
pmc8380_4_die_temp 43.5°C 48.2°C +4.7°C
pmc8380_5_die_temp 46.8°C 51.3°C +4.5°C
pmc8380_6_die_temp 45.3°C 49.7°C +4.4°C
pm8550ve_8_die_temp 44.2°C 47.4°C +3.2°C
pm8550ve_9_die_temp 48.4°C 53.4°C +5.0°C

Cooldown, 10s wait:
LABEL START END DIFF
pm8550_die_temp 50.9°C 50.8°C -0.1°C
vph_pwr_therm 54.0°C 53.2°C -0.8°C
usb_charger_right_therm 44.6°C 44.5°C -0.0°C
ssd_conn_therm 48.1°C 47.9°C -0.2°C
sys_therm5 36.9°C 37.0°C +0.0°C
keyboard_therm 52.4°C 51.7°C -0.7°C
pm8550_gpio_01 52.1°C 51.4°C -0.7°C
pm8550_gpio_02 44.9°C 44.8°C -0.0°C
lpddr5_therm 130.0°C 130.0°C +0.0°C
usb_charger_left_therm 35.9°C 35.9°C +0.0°C
pm8550ve_2_die_temp 51.4°C 50.6°C -0.8°C
pmk8550_die_temp 48.2°C 47.6°C -0.6°C
pmc8380_3_die_temp 49.9°C 49.1°C -0.7°C
pmc8380_4_die_temp 47.4°C 46.7°C -0.6°C
pmc8380_5_die_temp 50.2°C 49.2°C -1.0°C
pmc8380_6_die_temp 48.9°C 48.1°C -0.8°C
pm8550ve_8_die_temp 47.2°C 46.9°C -0.3°C
pm8550ve_9_die_temp 52.4°C 51.5°C -0.8°C

This is a bit inconclusive. Both SSD, keyboard, and
pm8550_gpio_01 (LPDDR5, see below) heated up significantly.

4. Stress RAM, 10s wait:
LABEL START END DIFF
pm8550_die_temp 50.5°C 51.0°C +0.5°C
vph_pwr_therm 53.8°C 55.9°C +2.1°C
usb_charger_right_therm 45.8°C 46.3°C +0.5°C
ssd_conn_therm 47.8°C 47.9°C +0.0°C
sys_therm5 39.9°C 39.9°C -0.1°C
keyboard_therm 52.0°C 55.1°C +3.0°C
pm8550_gpio_01 51.9°C 54.7°C +2.8°C
pm8550_gpio_02 45.6°C 45.4°C -0.2°C
lpddr5_therm 130.0°C 130.0°C +0.0°C
usb_charger_left_therm 35.9°C 35.8°C -0.0°C
pm8550ve_2_die_temp 51.0°C 53.0°C +2.1°C
pmk8550_die_temp 48.1°C 49.3°C +1.1°C
pmc8380_3_die_temp 50.8°C 52.7°C +1.8°C
pmc8380_4_die_temp 47.3°C 49.7°C +2.4°C
pmc8380_5_die_temp 50.0°C 53.0°C +3.0°C
pmc8380_6_die_temp 48.9°C 52.9°C +4.0°C
pm8550ve_8_die_temp 50.0°C 51.4°C +1.4°C
pm8550ve_9_die_temp 53.7°C 55.7°C +2.0°C

5. Cooldown, 10s wait:
LABEL START END DIFF
pm8550_die_temp 52.2°C 51.3°C -0.8°C
vph_pwr_therm 56.3°C 55.2°C -1.1°C
usb_charger_right_therm 47.2°C 46.7°C -0.5°C
ssd_conn_therm 49.0°C 48.5°C -0.5°C
sys_therm5 39.4°C 39.4°C -0.0°C
keyboard_therm 54.7°C 53.6°C -1.1°C
pm8550_gpio_01 54.6°C 53.4°C -1.1°C
pm8550_gpio_02 45.8°C 45.6°C -0.2°C
lpddr5_therm 130.0°C 130.0°C +0.0°C
usb_charger_left_therm 35.9°C 35.9°C +0.0°C
pm8550ve_2_die_temp 53.5°C 52.3°C -1.2°C
pmk8550_die_temp 51.1°C 50.0°C -1.1°C
pmc8380_3_die_temp 51.5°C 50.2°C -1.3°C
pmc8380_4_die_temp 49.7°C 48.7°C -0.9°C
pmc8380_5_die_temp 51.4°C 50.1°C -1.3°C
pmc8380_6_die_temp 50.9°C 49.8°C -1.1°C
pm8550ve_8_die_temp 50.2°C 49.3°C -0.9°C
pm8550ve_9_die_temp 54.3°C 53.3°C -1.0°C

pm8550_gpio_01 and keyboard_therm clearly respond. This
would make sense, I am guessing two sensors are located
very close to each other on the motherboard, but on the
opposite sides of the PCBA.

6. Hairdryer on the keyboard, 10s wait:
LABEL START END DIFF
pm8550_die_temp 49.3°C 49.1°C -0.2°C
vph_pwr_therm 50.6°C 50.4°C -0.2°C
usb_charger_right_therm 43.7°C 43.6°C -0.1°C
ssd_conn_therm 46.4°C 46.3°C -0.1°C
sys_therm5 36.8°C 37.0°C +0.2°C
keyboard_therm 49.6°C 49.4°C -0.2°C
pm8550_gpio_01 49.2°C 48.9°C -0.2°C
pm8550_gpio_02 44.1°C 44.1°C +0.1°C
lpddr5_therm 130.0°C 130.0°C +0.0°C
usb_charger_left_therm 35.9°C 35.8°C -0.1°C
pm8550ve_2_die_temp 48.1°C 48.0°C -0.1°C
pmk8550_die_temp 45.3°C 45.1°C -0.2°C
pmc8380_3_die_temp 46.0°C 45.7°C -0.4°C
pmc8380_4_die_temp 44.6°C 44.3°C -0.3°C
pmc8380_5_die_temp 46.3°C 45.9°C -0.3°C
pmc8380_6_die_temp 45.3°C 45.0°C -0.3°C
pm8550ve_8_die_temp 45.4°C 45.1°C -0.3°C
pm8550ve_9_die_temp 48.8°C 48.6°C -0.2°C

Another 10s wait:
LABEL START END DIFF
pm8550_die_temp 49.0°C 49.6°C +0.6°C
vph_pwr_therm 50.6°C 51.0°C +0.5°C
usb_charger_right_therm 43.7°C 44.3°C +0.6°C
ssd_conn_therm 46.5°C 47.2°C +0.7°C
sys_therm5 37.5°C 38.8°C +1.3°C
keyboard_therm 49.6°C 50.2°C +0.7°C
pm8550_gpio_01 49.1°C 49.7°C +0.6°C
pm8550_gpio_02 44.6°C 45.7°C +1.1°C
lpddr5_therm 130.0°C 130.0°C +0.0°C
usb_charger_left_therm 35.8°C 35.9°C +0.1°C
pm8550ve_2_die_temp 48.2°C 48.6°C +0.4°C
pmk8550_die_temp 45.3°C 46.1°C +0.8°C
pmc8380_3_die_temp 46.0°C 46.4°C +0.4°C
pmc8380_4_die_temp 44.5°C 45.2°C +0.6°C
pmc8380_5_die_temp 46.3°C 46.7°C +0.4°C
pmc8380_6_die_temp 45.3°C 46.0°C +0.7°C
pm8550ve_8_die_temp 45.3°C 46.1°C +0.8°C
pm8550ve_9_die_temp 48.7°C 49.6°C +0.9°C

Cooldown, 10s wait:
LABEL START END DIFF
pm8550_die_temp 55.8°C 55.3°C -0.5°C
vph_pwr_therm 57.8°C 57.3°C -0.5°C
usb_charger_right_therm 51.0°C 50.6°C -0.4°C
ssd_conn_therm 54.0°C 53.6°C -0.4°C
sys_therm5 45.8°C 45.3°C -0.6°C
keyboard_therm 56.3°C 55.8°C -0.5°C
pm8550_gpio_01 55.8°C 55.4°C -0.4°C
pm8550_gpio_02 52.5°C 51.9°C -0.5°C
lpddr5_therm 130.0°C 130.0°C +0.0°C
usb_charger_left_therm 36.0°C 36.0°C +0.0°C
pm8550ve_2_die_temp 54.7°C 54.2°C -0.5°C
pmk8550_die_temp 52.0°C 51.6°C -0.4°C
pmc8380_3_die_temp 51.5°C 51.2°C -0.3°C
pmc8380_4_die_temp 50.3°C 49.9°C -0.4°C
pmc8380_5_die_temp 51.9°C 51.5°C -0.4°C
pmc8380_6_die_temp 51.0°C 50.8°C -0.2°C
pm8550ve_8_die_temp 52.7°C 52.4°C -0.3°C
pm8550ve_9_die_temp 55.4°C 55.1°C -0.3°C

I would say it is also inconclusive; Looks more like
"sys_therm5" is the actual keyboard thermistor.

With this in mind:
ADC5_GEN3_AMUX1_GPIO_100K_PU - Likely "lpddr5_therm"
ADC5_GEN3_AMUX2_GPIO_100K_PU - Li
ADC5_GEN3_AMUX1_THM_100K_PU -
ADC5_GEN3_AMUX2_THM_100K_PU - RHS USB Charger
ADC5_GEN3_AMUX3_THM_100K_PU -
ADC5_GEN3_AMUX4_THM_100K_PU -
ADC5_GEN3_AMUX5_THM_100K_PU -

Would like to hear how you arrived to the labels. I am
in parallel checking if tearing down the laptop would
help me identify which thermistor is which, but this
will take a while. Alternatively, I am leaning to drop
the labels for anything we are not sure about...

P.S. With most platforms starting sys_therm node count
from 1 and not 0, and schematics used to make this
mapping being wrong I would change this series to match
usual convention in the next series.

Regards,
Alex

>
> > + sys_therm0: channel@14a {
> > + reg = <ADC5_GEN3_AMUX1_GPIO_100K_PU(1)>;
>
> One note on the shape: hamoa-pmics.dtsi already defines
> channel@14a and channel@14b as pm8550_gpio_01 and pm8550_gpio_02,
> with gpio3 and gpio4 in high impedance for them. The EC's io-channels
> can reference those two directly; redefining the nodes in the board
> file only adds the labels, which the EC node does not need.
>
> Happy to test a v7 with the two channels moved.
>
> Liviu
>