From 3bb9364c44131ae3680df4a35199cb67c117153b Mon Sep 17 00:00:00 2001
From: David Buezas <dbuezas@users.noreply.github.com>
Date: Tue, 3 Jun 2025 01:59:01 +0200
Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Add=20TMC22?=
 =?UTF-8?q?40=20temperature=20reading=20(#27903)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Marlin/src/feature/tmc_util.cpp | 19 ++++++++++++++++++-
 ini/features.ini                |  2 +-
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/Marlin/src/feature/tmc_util.cpp b/Marlin/src/feature/tmc_util.cpp
index d280b55854..6f53e1943c 100644
--- a/Marlin/src/feature/tmc_util.cpp
+++ b/Marlin/src/feature/tmc_util.cpp
@@ -526,7 +526,12 @@
     TMC_HSTRT,
     TMC_SGT,
     TMC_MSCNT,
-    TMC_INTERPOLATE
+    TMC_INTERPOLATE,
+    TMC_VAIN,
+    TMC_VSUPPLY,
+    TMC_TEMP,
+    TMC_OVERTEMP,
+    TMC_OVERVOLT_THD
   };
   enum TMC_drv_status_enum : char {
     TMC_DRV_CODES,
@@ -701,6 +706,11 @@
         case TMC_PWM_GRAD_AUTO: SERIAL_ECHO(st.pwm_grad_auto()); break;
         case TMC_STEALTHCHOP: print_true_or_false(st.stealth()); break;
         case TMC_INTERPOLATE: print_true_or_false(st.intpol()); break;
+        case TMC_VAIN: SERIAL_ECHO(st.get_ain_voltage()); break;
+        case TMC_VSUPPLY: SERIAL_ECHO(st.get_vsupply_voltage()); break;
+        case TMC_TEMP: SERIAL_ECHO(st.get_chip_temperature()); break;
+        case TMC_OVERTEMP: SERIAL_ECHO(st.get_overtemp_prewarn_celsius()); break;
+        case TMC_OVERVOLT_THD: SERIAL_ECHO(st.get_overvoltage_threshold_voltage()); break;
         default: break;
       }
     }
@@ -978,6 +988,13 @@
       DRV_REPORT("s2vsb\t",          TMC_S2VSB);
     #endif
     DRV_REPORT("Driver registers:\n",TMC_DRV_STATUS_HEX);
+    #if HAS_DRIVER(TMC2240)
+      TMC_REPORT("Analog in (v)",    TMC_VAIN);
+      TMC_REPORT("Supply (v)",       TMC_VSUPPLY);
+      TMC_REPORT("Temp (°C)",        TMC_TEMP);
+      TMC_REPORT("OT pre warn (°C)", TMC_OVERTEMP);
+      TMC_REPORT("OV theshold (v)",  TMC_OVERVOLT_THD);
+    #endif
     SERIAL_EOL();
   }
 
diff --git a/ini/features.ini b/ini/features.ini
index 80663abf5b..69ec43f030 100644
--- a/ini/features.ini
+++ b/ini/features.ini
@@ -20,7 +20,7 @@ MARLIN_TEST_BUILD                      = build_src_filter=+<src/tests>
 POSTMORTEM_DEBUGGING                   = build_src_filter=+<src/HAL/shared/cpu_exception> +<src/HAL/shared/backtrace>
                                          build_flags=-funwind-tables
 MKS_WIFI_MODULE                        = QRCode=https://github.com/makerbase-mks/QRCode/archive/261c5a696a.zip
-HAS_TRINAMIC_CONFIG                    = TMCStepper=https://github.com/MarlinFirmware/TMCStepper/archive/v0.8.5.zip
+HAS_TRINAMIC_CONFIG                    = TMCStepper=https://github.com/MarlinFirmware/TMCStepper/archive/v0.8.6.zip
                                          build_src_filter=+<src/module/stepper/trinamic.cpp> +<src/gcode/feature/trinamic/M122.cpp> +<src/gcode/feature/trinamic/M906.cpp> +<src/gcode/feature/trinamic/M911-M914.cpp> +<src/gcode/feature/trinamic/M919.cpp>
 HAS_STEPPER_CONTROL                    = build_src_filter=+<src/module/stepper/control.cpp>
 HAS_T(RINAMIC_CONFIG|MC_SPI)           = build_src_filter=+<src/feature/tmc_util.cpp>