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)
 
   /**