On Sun, Oct 11, 2026 at 07:50:10PM +0200, Aleksandrs Vinarskis wrote:
> +             io-channels = <&pmk8550_vadc ADC5_GEN3_AMUX3_GPIO_100K_PU(1)>,
> +                           <&pmk8550_vadc ADC5_GEN3_AMUX4_GPIO_100K_PU(1)>,

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.

The Windows ADC configuration answers Liviu's question, wrong channel or
missing pin configuration. In ADC1 from your qcom-aeob-dumps
(dell-xps-9345/ADC1.json), the channel table puts the seven board
thermistors on SID 1, all with the 100k pull-up:

  SYS_THERM1  0x4a  AMUX1_GPIO
  SYS_THERM2  0x4b  AMUX2_GPIO
  SYS_THERM3  0x44  AMUX1_THM
  SYS_THERM4  0x45  AMUX2_THM
  SYS_THERM5  0x46  AMUX3_THM
  SYS_THERM6  0x47  AMUX4_THM
  SYS_THERM7  0x48  AMUX5_THM

Its GPIO table sets up only two pins as ADC inputs: PM8550 GPIO3 on
channels 0x0a/0x4a and GPIO4 on 0x0b/0x4b. hamoa-pmics.dtsi already
puts those two pins in high impedance for the VADC and defines
channel@14a and channel@14b. Nothing in ADC1 uses AMUX3 or AMUX4 GPIO.

sys_therm2 to sys_therm6 here are SYS_THERM3 to SYS_THERM7, so
sys_thermN is SYS_THERM(N+1), and sys_therm0/1 are 0x14a/0x14b. The
labels fit too: Liviu found the left charger thermistor on AMUX2 GPIO
[2], and sys_therm1 is usb_charger_left_therm.

Readings on a 7.3-rc6 based kernel, idle:

  0x14a  40.6 C       0x14c  130.0 C (constant)
  0x14b  34.6 C       0x14d   37.0 C
  AMUX1-5 THM  34.6 to 40.5 C

> +     sys_therm0: channel@14c {
> +             reg = <ADC5_GEN3_AMUX3_GPIO_100K_PU(1)>;
[...]
> +     sys_therm1: channel@14d {
> +             reg = <ADC5_GEN3_AMUX4_GPIO_100K_PU(1)>;

With the change below on a v7.3-rc7 based kernel, sys_therm0 and
sys_therm1 read 45.4 C and 41.0 C, next to 38.2 to 46.8 C on the THM
channels:

--- a/arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts
+++ b/arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts
@@ -1133,8 +1133,8 @@ embedded-controller@3b {
                pinctrl-0 = <&ec_int_n_default>;
                pinctrl-names = "default";
 
-               io-channels = <&pmk8550_vadc ADC5_GEN3_AMUX3_GPIO_100K_PU(1)>,
-                             <&pmk8550_vadc ADC5_GEN3_AMUX4_GPIO_100K_PU(1)>,
+               io-channels = <&pmk8550_vadc ADC5_GEN3_AMUX1_GPIO_100K_PU(1)>,
+                             <&pmk8550_vadc ADC5_GEN3_AMUX2_GPIO_100K_PU(1)>,
                              <&pmk8550_vadc ADC5_GEN3_AMUX1_THM_100K_PU(1)>,
                              <&pmk8550_vadc ADC5_GEN3_AMUX2_THM_100K_PU(1)>,
                              <&pmk8550_vadc ADC5_GEN3_AMUX3_THM_100K_PU(1)>,
@@ -1439,15 +1439,15 @@ rtmr0_1p8_reg_en: rtmr0-1p8-reg-en-state {
 };
 
 &pmk8550_vadc {
-       sys_therm0: channel@14c {
-               reg = <ADC5_GEN3_AMUX3_GPIO_100K_PU(1)>;
+       sys_therm0: channel@14a {
+               reg = <ADC5_GEN3_AMUX1_GPIO_100K_PU(1)>;
                qcom,hw-settle-time = <200>;
                qcom,ratiometric;
                label = "lpddr5_therm";
        };
 
-       sys_therm1: channel@14d {
-               reg = <ADC5_GEN3_AMUX4_GPIO_100K_PU(1)>;
+       sys_therm1: channel@14b {
+               reg = <ADC5_GEN3_AMUX2_GPIO_100K_PU(1)>;
                qcom,hw-settle-time = <200>;
                qcom,ratiometric;
                label = "usb_charger_left_therm";

[1] https://lore.kernel.org/r/[email protected]
[2] https://lore.kernel.org/r/[email protected]

Michael

Reply via email to