diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index 9dcc90b75a481f6d4c61e6cae2511ac36cf84842..1204f944f13804eab15c17ea18b1997ecedd94c8 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -359,10 +359,6 @@ void quickstop_stepper() {
SYNC_PLAN_POSITION_KINEMATIC();
}
-#if ENABLED(LIN_ADVANCE)
- #include "gcode/feature/advance/M900.h"
-#endif
-
#if ENABLED(HAVE_TMC2130)
#include "feature/tmc2130.h"
#include "gcode/feature/trinamic/M906.h"
diff --git a/Marlin/src/gcode/feature/advance/M900.h b/Marlin/src/gcode/feature/advance/M900.cpp
similarity index 86%
rename from Marlin/src/gcode/feature/advance/M900.h
rename to Marlin/src/gcode/feature/advance/M900.cpp
index c5734943ccf1bc99a2afabe3053f7731d54a7844..074dc506a2b3e3eed9674ec5893a55aab8814da2 100644
--- a/Marlin/src/gcode/feature/advance/M900.h
+++ b/Marlin/src/gcode/feature/advance/M900.cpp
@@ -20,6 +20,14 @@
*
*/
+#include "../../../inc/MarlinConfig.h"
+
+#if ENABLED(LIN_ADVANCE)
+
+#include "../../gcode.h"
+#include "../../../module/planner.h"
+#include "../../../module/stepper.h"
+
/**
* M900: Set and/or Get advance K factor and WH/D ratio
*
@@ -27,7 +35,7 @@
* R<ratio> Set ratio directly (overrides WH/D)
* W<width> H<height> D<diam> Set ratio from WH/D
*/
-void gcode_M900() {
+void GcodeSuite::M900() {
stepper.synchronize();
const float newK = parser.floatval('K', -1);
@@ -39,7 +47,7 @@ void gcode_M900() {
newW = parser.floatval('W', -1),
newH = parser.floatval('H', -1);
if (newD >= 0 && newW >= 0 && newH >= 0)
- newR = newD ? (newW * newH) / (sq(newD * 0.5) * M_PI) : 0;
+ newR = newD ? (newW * newH) / CIRCLE_AREA(newD * 0.5) : 0;
}
if (newR >= 0) planner.advance_ed_ratio = newR;
@@ -50,3 +58,5 @@ void gcode_M900() {
if (ratio) SERIAL_ECHO(ratio); else SERIAL_ECHOPGM("Auto");
SERIAL_EOL();
}
+
+#endif // LIN_ADVANCE
diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp
index f2b7017226f1b6df24fd1f8e2a5d75c8ac0709f2..3df71790845d8ba60317450acc5848cca1b107c6 100644
--- a/Marlin/src/gcode/gcode.cpp
+++ b/Marlin/src/gcode/gcode.cpp
@@ -122,7 +122,6 @@ extern void gcode_M165();
extern void gcode_M350();
extern void gcode_M351();
extern void gcode_M355();
-extern void gcode_M900();
extern void gcode_M906();
extern void gcode_M911();
extern void gcode_M912();
@@ -658,9 +657,7 @@ void GcodeSuite::process_next_command() {
#endif
#if ENABLED(LIN_ADVANCE)
- case 900: // M900: Set advance K factor.
- gcode_M900();
- break;
+ case 900: M900(); break; // M900: Set advance K factor.
#endif
#if ENABLED(HAVE_TMC2130)