diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index e9dba02e26ce505da7ca7f49555902c3f4f9ffa1..a97406f0289e5bc8c80970fe326b43328b966bcd 100755
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -5884,45 +5884,6 @@ inline void gcode_M117() {
*/
inline void gcode_M119() { endstops.M119(); }
-#if ENABLED(HAVE_TMC2130DRIVER)
- /**
- * M122: Output Trinamic TMC2130 status to serial output. Very bad formatting.
- */
- inline void gcode_M122() {
- SERIAL_PROTOCOLLNPGM("REPORTING TMC2130 STATUS");
- #if ENABLED(HAVE_TMC2130DRIVER) && ENABLED(X_IS_TMC2130)
- stepperX.read_STAT();
- SERIAL_PROTOCOLLN("X-AXIS: ");
- SERIAL_PROTOCOLLN((stepperX.isReset() ? "RESET " : "----- "));
- SERIAL_PROTOCOLLN((stepperX.isError() ? "ERROR " : "----- "));
- SERIAL_PROTOCOLLN((stepperX.isStallguard() ? "SLGRD " : "----- "));
- SERIAL_PROTOCOLLN((stepperX.isStandstill() ? "STILL " : "----- "));
- SERIAL_PROTOCOLLN((stepperX.debug()));
- SERIAL_PROTOCOLLN("-----");
- #endif
- #if ENABLED(HAVE_TMC2130DRIVER) && ENABLED(Y_IS_TMC2130)
- stepperY.read_STAT();
- SERIAL_PROTOCOLLN("Y-AXIS: ");
- SERIAL_PROTOCOLLN((stepperY.isReset() ? "RESET " : "----- "));
- SERIAL_PROTOCOLLN((stepperY.isError() ? "ERROR " : "----- "));
- SERIAL_PROTOCOLLN((stepperY.isStallguard() ? "SLGRD " : "----- "));
- SERIAL_PROTOCOLLN((stepperY.isStandstill() ? "STILL " : "----- "));
- SERIAL_PROTOCOLLN((stepperY.debug()));
- SERIAL_PROTOCOLLN("-----");
- #endif
- #if ENABLED(HAVE_TMC2130DRIVER) && ENABLED(Z_IS_TMC2130)
- stepperZ.read_STAT();
- SERIAL_PROTOCOLLN("Z-AXIS: ");
- SERIAL_PROTOCOLLN((stepperZ.isReset() ? "RESET " : "----- "));
- SERIAL_PROTOCOLLN((stepperZ.isError() ? "ERROR " : "----- "));
- SERIAL_PROTOCOLLN((stepperZ.isStallguard() ? "SLGRD " : "----- "));
- SERIAL_PROTOCOLLN((stepperZ.isStandstill() ? "STILL " : "----- "));
- SERIAL_PROTOCOLLN((stepperZ.debug()));
- SERIAL_PROTOCOLLN("-----");
- #endif
- }
-#endif // HAVE_TMC2130DRIVER
-
/**
* M120: Enable endstops and set non-homing endstop state to "enabled"
*/
@@ -5933,6 +5894,58 @@ inline void gcode_M120() { endstops.enable_globally(true); }
*/
inline void gcode_M121() { endstops.enable_globally(false); }
+#if ENABLED(HAVE_TMC2130DRIVER)
+
+ /**
+ * M122: Output Trinamic TMC2130 status to serial output. Very bad formatting.
+ */
+
+ static void tmc2130_report(Trinamic_TMC2130 &stepr, const char *name) {
+ stepr.read_STAT();
+ SERIAL_PROTOCOL(name);
+ SERIAL_PROTOCOL(": ");
+ stepr.isReset() ? SERIAL_PROTOCOLPGM("RESET ") : SERIAL_PROTOCOLPGM("----- ");
+ stepr.isError() ? SERIAL_PROTOCOLPGM("ERROR ") : SERIAL_PROTOCOLPGM("----- ");
+ stepr.isStallguard() ? SERIAL_PROTOCOLPGM("SLGRD ") : SERIAL_PROTOCOLPGM("----- ");
+ stepr.isStandstill() ? SERIAL_PROTOCOLPGM("STILL ") : SERIAL_PROTOCOLPGM("----- ");
+ SERIAL_PROTOCOLLN(stepr.debug());
+ }
+
+ inline void gcode_M122() {
+ SERIAL_PROTOCOLLNPGM("Reporting TMC2130 status");
+ #if ENABLED(X_IS_TMC2130)
+ tmc2130_report(stepperX, "X");
+ #endif
+ #if ENABLED(X2_IS_TMC2130)
+ tmc2130_report(stepperX2, "X2");
+ #endif
+ #if ENABLED(Y_IS_TMC2130)
+ tmc2130_report(stepperY, "Y");
+ #endif
+ #if ENABLED(Y2_IS_TMC2130)
+ tmc2130_report(stepperY2, "Y2");
+ #endif
+ #if ENABLED(Z_IS_TMC2130)
+ tmc2130_report(stepperZ, "Z");
+ #endif
+ #if ENABLED(Z2_IS_TMC2130)
+ tmc2130_report(stepperZ2, "Z2");
+ #endif
+ #if ENABLED(E0_IS_TMC2130)
+ tmc2130_report(stepperE0, "E0");
+ #endif
+ #if ENABLED(E1_IS_TMC2130)
+ tmc2130_report(stepperE1, "E1");
+ #endif
+ #if ENABLED(E2_IS_TMC2130)
+ tmc2130_report(stepperE2, "E2");
+ #endif
+ #if ENABLED(E3_IS_TMC2130)
+ tmc2130_report(stepperE3, "E3");
+ #endif
+ }
+#endif // HAVE_TMC2130DRIVER
+
#if ENABLED(BLINKM)
/**