diff --git a/Marlin/src/gcode/feature/trinamic/M122.cpp b/Marlin/src/gcode/feature/trinamic/M122.cpp
index 52a6920f051..fdab5487743 100644
--- a/Marlin/src/gcode/feature/trinamic/M122.cpp
+++ b/Marlin/src/gcode/feature/trinamic/M122.cpp
@@ -43,10 +43,13 @@ void GcodeSuite::M122() {
 
   #if ENABLED(TMC_DEBUG)
     #if ENABLED(MONITOR_DRIVER_STATUS)
-      uint16_t interval = MONITOR_DRIVER_STATUS_INTERVAL_MS;
-      if (parser.seen('S') && !parser.value_bool()) interval = 0;
-      if (parser.seenval('P')) NOMORE(interval, parser.value_ushort());
-      tmc_set_report_interval(interval);
+      const bool sflag = parser.seen_test('S'), sval = sflag && parser.value_bool();
+      if (sflag && !sval)
+        tmc_set_report_interval(0);
+      else if (parser.seenval('P'))
+        tmc_set_report_interval(_MAX(250, parser.value_ushort()));
+      else if (sval)
+        tmc_set_report_interval(MONITOR_DRIVER_STATUS_INTERVAL_MS);
     #endif
 
     if (parser.seen_test('V'))