From 819e48972d9cb321275a37fcfccaf2a990f4f222 Mon Sep 17 00:00:00 2001
From: Jason Smith <jason.inet@gmail.com>
Date: Mon, 22 Jun 2020 13:27:01 -0700
Subject: [PATCH] Improve U8G+SPI delay override (#18386)

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
---
 Marlin/src/inc/Conditionals_LCD.h             | 12 ++------
 .../dogm/ultralcd_st7920_u8glib_rrd_AVR.cpp   | 19 +++++++++---
 Marlin/src/pins/mega/pins_PICA.h              |  6 ++--
 .../src/pins/ramps/pins_FORMBOT_TREX2PLUS.h   | 21 +++++++------
 .../src/pins/sanguino/pins_MELZI_CREALITY.h   | 12 ++++++--
 Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h  | 12 ++++++--
 Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h  | 12 ++++++--
 Marlin/src/pins/sanguino/pins_MELZI_V2.h      | 14 ++++++---
 .../src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h | 30 +++++++++++--------
 .../src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h  | 16 ++++++----
 Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h     |  4 +--
 Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h     |  4 +--
 Marlin/src/pins/stm32f1/pins_CREALITY_V4.h    |  2 +-
 Marlin/src/pins/stm32f1/pins_GTM32_MINI.h     | 12 ++++++--
 Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h   | 12 ++++++--
 .../pins/stm32f1/pins_MKS_ROBIN_E3_common.h   |  2 +-
 Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h | 18 +++++++----
 .../src/pins/stm32f4/pins_BTT_BTT002_V1_0.h   | 12 ++++++--
 Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h   | 19 ++++++++----
 .../pins/stm32f4/pins_BTT_SKR_PRO_common.h    | 21 ++++++++-----
 Marlin/src/pins/stm32f4/pins_FYSETC_S6.h      |  9 +++---
 .../src/pins/stm32f4/pins_GENERIC_STM32F4.h   | 12 ++++++--
 Marlin/src/pins/stm32f4/pins_LERDGE_K.h       | 12 ++++++--
 Marlin/src/pins/stm32f4/pins_LERDGE_X.h       | 12 ++++++--
 Marlin/src/pins/stm32f4/pins_RUMBA32_MKS.h    |  2 +-
 Marlin/src/pins/stm32f4/pins_RUMBA32_common.h |  6 ++--
 .../src/pins/teensy2/pins_PRINTRBOARD_REVF.h  |  2 +-
 27 files changed, 206 insertions(+), 109 deletions(-)

diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h
index c54687a2d5..71b5d7a89a 100644
--- a/Marlin/src/inc/Conditionals_LCD.h
+++ b/Marlin/src/inc/Conditionals_LCD.h
@@ -106,15 +106,9 @@
 #elif ENABLED(CR10_STOCKDISPLAY)
 
   #define IS_RRD_FG_SC
-  #ifndef ST7920_DELAY_1
-    #define ST7920_DELAY_1 DELAY_NS(125)
-  #endif
-  #ifndef ST7920_DELAY_2
-    #define ST7920_DELAY_2 DELAY_NS(125)
-  #endif
-  #ifndef ST7920_DELAY_3
-    #define ST7920_DELAY_3 DELAY_NS(125)
-  #endif
+  #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
+  #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
+  #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
 
 #elif ENABLED(MKS_12864OLED)
 
diff --git a/Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.cpp b/Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.cpp
index 4e38e554a2..ea65b972eb 100644
--- a/Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.cpp
+++ b/Marlin/src/lcd/dogm/ultralcd_st7920_u8glib_rrd_AVR.cpp
@@ -34,19 +34,30 @@
 #include "ultralcd_st7920_u8glib_rrd_AVR.h"
 
 #ifndef ST7920_DELAY_1
-  #define ST7920_DELAY_1 CPU_ST7920_DELAY_1
+  #ifdef BOARD_ST7920_DELAY_1
+    #define ST7920_DELAY_1 BOARD_ST7920_DELAY_1
+  #else
+    #define ST7920_DELAY_1 CPU_ST7920_DELAY_1
+  #endif
 #endif
 #ifndef ST7920_DELAY_2
-  #define ST7920_DELAY_2 CPU_ST7920_DELAY_2
+  #ifdef BOARD_ST7920_DELAY_2
+    #define ST7920_DELAY_2 BOARD_ST7920_DELAY_2
+  #else
+    #define ST7920_DELAY_2 CPU_ST7920_DELAY_2
+  #endif
 #endif
 #ifndef ST7920_DELAY_3
-  #define ST7920_DELAY_3 CPU_ST7920_DELAY_3
+  #ifdef BOARD_ST7920_DELAY_3
+    #define ST7920_DELAY_3 BOARD_ST7920_DELAY_3
+  #else
+    #define ST7920_DELAY_3 CPU_ST7920_DELAY_3
+  #endif
 #endif
 
 // Optimize this code with -O3
 #pragma GCC optimize (3)
 
-
 #ifdef ARDUINO_ARCH_STM32F1
   #define ST7920_DAT(V) !!((V) & 0x80)
 #else
diff --git a/Marlin/src/pins/mega/pins_PICA.h b/Marlin/src/pins/mega/pins_PICA.h
index 69974773ee..490316b624 100644
--- a/Marlin/src/pins/mega/pins_PICA.h
+++ b/Marlin/src/pins/mega/pins_PICA.h
@@ -49,9 +49,9 @@
 //
 // Servos
 //
-#define SERVO0_PIN                           3
-#define SERVO1_PIN                           4
-#define SERVO2_PIN                           5
+#define SERVO0_PIN                             3
+#define SERVO1_PIN                             4
+#define SERVO2_PIN                             5
 //
 // Limit Switches
 //
diff --git a/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h b/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h
index d9286e4a01..c98ba6aff4 100644
--- a/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h
+++ b/Marlin/src/pins/ramps/pins_FORMBOT_TREX2PLUS.h
@@ -21,15 +21,6 @@
  */
 #pragma once
 
-/**
- * Override default LCD timing for Formbot T-Rex 2+ machines.
- * The long LCD cables and the routing near electrically noisy stepper motors
- * requires a slightly longer setup and hold time on the signals.
- */
-#define BOARD_ST7920_DELAY_1 DELAY_NS(200)
-#define BOARD_ST7920_DELAY_2 DELAY_NS(200)
-#define BOARD_ST7920_DELAY_3 DELAY_NS(200)
-
 /**
  * Formbot pin assignments
  */
@@ -205,3 +196,15 @@
   #define LCD_PINS_D6                         27
   #define LCD_PINS_D7                         29
 #endif
+
+#if HAS_GRAPHICAL_LCD
+  #ifndef BOARD_ST7920_DELAY_1
+    #define BOARD_ST7920_DELAY_1 DELAY_NS(200)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_2
+    #define BOARD_ST7920_DELAY_2 DELAY_NS(200)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_3
+    #define BOARD_ST7920_DELAY_3 DELAY_NS(200)
+  #endif
+#endif
diff --git a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h
index 75c52b3971..0428c17e21 100644
--- a/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h
+++ b/Marlin/src/pins/sanguino/pins_MELZI_CREALITY.h
@@ -37,9 +37,15 @@
 
 // Alter timing for graphical display
 #if HAS_GRAPHICAL_LCD
-  #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
-  #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
-  #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
+  #ifndef BOARD_ST7920_DELAY_1
+    #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_2
+    #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_3
+    #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
+  #endif
 #endif
 
 #include "pins_MELZI.h"
diff --git a/Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h b/Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h
index 1ceb8b920e..1b14d6efb0 100644
--- a/Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h
+++ b/Marlin/src/pins/sanguino/pins_MELZI_MALYAN.h
@@ -29,9 +29,15 @@
 
 // Alter timing for graphical display
 #if HAS_GRAPHICAL_LCD
-  #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
-  #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
-  #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
+  #ifndef BOARD_ST7920_DELAY_1
+    #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_2
+    #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_3
+    #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
+  #endif
 #endif
 
 #include "pins_MELZI.h"
diff --git a/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h b/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h
index 8da60593ab..1221c20806 100644
--- a/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h
+++ b/Marlin/src/pins/sanguino/pins_MELZI_TRONXY.h
@@ -28,9 +28,15 @@
 #define BOARD_INFO_NAME "Melzi (Tronxy)"
 
 #if HAS_GRAPHICAL_LCD
-  #define BOARD_ST7920_DELAY_1 DELAY_NS(0)
-  #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
-  #define BOARD_ST7920_DELAY_3 DELAY_NS(0)
+  #ifndef BOARD_ST7920_DELAY_1
+    #define BOARD_ST7920_DELAY_1 DELAY_NS(0)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_2
+    #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_3
+    #define BOARD_ST7920_DELAY_3 DELAY_NS(0)
+  #endif
 #endif
 
 #include "pins_MELZI.h"
diff --git a/Marlin/src/pins/sanguino/pins_MELZI_V2.h b/Marlin/src/pins/sanguino/pins_MELZI_V2.h
index 7db9a2e810..33462d102a 100644
--- a/Marlin/src/pins/sanguino/pins_MELZI_V2.h
+++ b/Marlin/src/pins/sanguino/pins_MELZI_V2.h
@@ -24,10 +24,16 @@
 
 #define BOARD_INFO_NAME "Melzi V2"
 
-#if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
-  #define BOARD_ST7920_DELAY_1 DELAY_NS(0)
-  #define BOARD_ST7920_DELAY_2 DELAY_NS(188)
-  #define BOARD_ST7920_DELAY_3 DELAY_NS(0)
+#if HAS_GRAPHICAL_LCD
+  #ifndef BOARD_ST7920_DELAY_1
+    #define BOARD_ST7920_DELAY_1 DELAY_NS(0)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_2
+    #define BOARD_ST7920_DELAY_2 DELAY_NS(188)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_3
+    #define BOARD_ST7920_DELAY_3 DELAY_NS(0)
+  #endif
 #endif
 
 #include "pins_MELZI.h"
diff --git a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h
index e63fa7f9cb..661fbdb5e8 100644
--- a/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h
+++ b/Marlin/src/pins/stm32f1/pins_BTT_SKR_MINI_V1_1.h
@@ -163,15 +163,27 @@
 
     #else                                         // !FYSETC_MINI_12864
 
-    #define LCD_PINS_D4                     PC13
-    #if ENABLED(ULTIPANEL)
-      #define LCD_PINS_D5                   PB7
-      #define LCD_PINS_D6                   PC15
-      #define LCD_PINS_D7                   PC14
-    #endif
+      #define LCD_PINS_D4                   PC13
+      #if ENABLED(ULTIPANEL)
+        #define LCD_PINS_D5                 PB7
+        #define LCD_PINS_D6                 PC15
+        #define LCD_PINS_D7                 PC14
+      #endif
 
     #endif // !FYSETC_MINI_12864
 
+    #if HAS_GRAPHICAL_LCD
+      #ifndef BOARD_ST7920_DELAY_1
+        #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
+      #endif
+      #ifndef BOARD_ST7920_DELAY_2
+        #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
+      #endif
+      #ifndef BOARD_ST7920_DELAY_3
+        #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
+      #endif
+    #endif
+
   #endif
 
 #endif // HAS_SPI_LCD
@@ -203,9 +215,3 @@
 #endif
 #define ON_BOARD_SPI_DEVICE 1                     // SPI1
 #define ONBOARD_SD_CS_PIN                   PA4   // Chip select for "System" SD card
-
-#if HAS_GRAPHICAL_LCD
-  #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
-  #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
-  #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
-#endif
diff --git a/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h b/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h
index 6cfa4e2144..0978369e0b 100644
--- a/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h
+++ b/Marlin/src/pins/stm32f1/pins_CCROBOT_MEEB_3DP.h
@@ -43,9 +43,9 @@
 //
 #if EITHER(NO_EEPROM_SELECTED, FLASH_EEPROM_EMULATION)
   #define FLASH_EEPROM_EMULATION
-  #define EEPROM_PAGE_SIZE     0x800U             // 2KB
+  #define EEPROM_PAGE_SIZE 0x800U                 // 2KB
   #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
-  #define MARLIN_EEPROM_SIZE   0x1000             // 4KB
+  #define MARLIN_EEPROM_SIZE 0x1000               // 4KB
 #endif
 
 //
@@ -143,9 +143,15 @@
 
 // Alter timing for graphical display
 #if HAS_GRAPHICAL_LCD
-  #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
-  #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
-  #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
+  #ifndef BOARD_ST7920_DELAY_1
+    #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_2
+    #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_3
+    #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
+  #endif
 #endif
 
 //
diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
index 5dd9202d8b..fc95d6c0b6 100644
--- a/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
+++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
@@ -42,9 +42,9 @@
   // SoC Flash (framework-arduinoststm32-maple/STM32F1/libraries/EEPROM/EEPROM.h)
   #define EEPROM_START_ADDRESS (0x8000000UL + (512 * 1024) - 2 * EEPROM_PAGE_SIZE)
   #define EEPROM_PAGE_SIZE     (0x800U)     // 2KB, but will use 2x more (4KB)
-  #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE
+  #define MARLIN_EEPROM_SIZE    EEPROM_PAGE_SIZE
 #else
-  #define MARLIN_EEPROM_SIZE 0x800U         // On SD, Limit to 2KB, require this amount of RAM
+  #define MARLIN_EEPROM_SIZE 0x800U               // On SD, Limit to 2KB, require this amount of RAM
 #endif
 
 //
diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h
index 176ccc8679..15c01e8727 100644
--- a/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h
+++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h
@@ -46,9 +46,9 @@
   // SoC Flash (framework-arduinoststm32-maple/STM32F1/libraries/EEPROM/EEPROM.h)
   #define EEPROM_START_ADDRESS (0x8000000UL + (512 * 1024) - 2 * EEPROM_PAGE_SIZE)
   #define EEPROM_PAGE_SIZE     (0x800U)     // 2KB, but will use 2x more (4KB)
-  #define MARLIN_EEPROM_SIZE EEPROM_PAGE_SIZE
+  #define MARLIN_EEPROM_SIZE    EEPROM_PAGE_SIZE
 #else
-  #define MARLIN_EEPROM_SIZE 0x800U         // On SD, Limit to 2KB, require this amount of RAM
+  #define MARLIN_EEPROM_SIZE 0x800U               // On SD, Limit to 2KB, require this amount of RAM
 #endif
 
 //
diff --git a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h
index f2a45e652e..b50be33079 100644
--- a/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h
+++ b/Marlin/src/pins/stm32f1/pins_CREALITY_V4.h
@@ -119,7 +119,7 @@
 #define SD_DETECT_PIN                       PC7
 #define SDCARD_CONNECTION                ONBOARD
 #define ON_BOARD_SPI_DEVICE 1
-#define ONBOARD_SD_CS_PIN                   PA4  // SDSS
+#define ONBOARD_SD_CS_PIN                   PA4   // SDSS
 #define SDIO_SUPPORT
 
 #if ENABLED(RET6_12864_LCD)
diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h b/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h
index e7e71977c0..a3645aff6e 100644
--- a/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h
+++ b/Marlin/src/pins/stm32f1/pins_GTM32_MINI.h
@@ -159,9 +159,15 @@
   #endif
 
   #if HAS_GRAPHICAL_LCD
-    #define BOARD_ST7920_DELAY_1 DELAY_NS(96)
-    #define BOARD_ST7920_DELAY_2 DELAY_NS(48)
-    #define BOARD_ST7920_DELAY_3 DELAY_NS(715)
+    #ifndef BOARD_ST7920_DELAY_1
+      #define BOARD_ST7920_DELAY_1 DELAY_NS(96)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_2
+      #define BOARD_ST7920_DELAY_2 DELAY_NS(48)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_3
+      #define BOARD_ST7920_DELAY_3 DELAY_NS(715)
+    #endif
   #endif
 
 #endif // HAS_SPI_LCD
diff --git a/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h b/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h
index e7e71977c0..a3645aff6e 100644
--- a/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h
+++ b/Marlin/src/pins/stm32f1/pins_GTM32_PRO_VB.h
@@ -159,9 +159,15 @@
   #endif
 
   #if HAS_GRAPHICAL_LCD
-    #define BOARD_ST7920_DELAY_1 DELAY_NS(96)
-    #define BOARD_ST7920_DELAY_2 DELAY_NS(48)
-    #define BOARD_ST7920_DELAY_3 DELAY_NS(715)
+    #ifndef BOARD_ST7920_DELAY_1
+      #define BOARD_ST7920_DELAY_1 DELAY_NS(96)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_2
+      #define BOARD_ST7920_DELAY_2 DELAY_NS(48)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_3
+      #define BOARD_ST7920_DELAY_3 DELAY_NS(715)
+    #endif
   #endif
 
 #endif // HAS_SPI_LCD
diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h
index 25d954f0f0..b575b2483f 100644
--- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h
+++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_E3_common.h
@@ -42,7 +42,7 @@
   #define FLASH_EEPROM_EMULATION
   #define EEPROM_PAGE_SIZE     (0x800U) // 2KB
   #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
-  #define MARLIN_EEPROM_SIZE   EEPROM_PAGE_SIZE  // 2KB
+  #define MARLIN_EEPROM_SIZE    EEPROM_PAGE_SIZE  // 2KB
 #endif
 
 //
diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h
index 4c10a310bf..07630160ba 100644
--- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h
+++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_LITE.h
@@ -111,6 +111,18 @@
 
   #endif // !MKS_MINI_12864
 
+  #if HAS_GRAPHICAL_LCD
+    #ifndef BOARD_ST7920_DELAY_1
+      #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_2
+      #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_3
+      #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
+    #endif
+  #endif
+
 #endif // HAS_SPI_LCD
 
 // Motor current PWM pins
@@ -129,9 +141,3 @@
 #define MISO_PIN                            P1B4
 #define MOSI_PIN                            P1B5
 #define SS_PIN                              PA15
-
-#if HAS_GRAPHICAL_LCD
-  #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
-  #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
-  #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
-#endif
diff --git a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h
index 8a6afcc0f5..a7594458f3 100644
--- a/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h
+++ b/Marlin/src/pins/stm32f4/pins_BTT_BTT002_V1_0.h
@@ -237,9 +237,15 @@
 
   // Alter timing for graphical display
   #if HAS_GRAPHICAL_LCD
-    #define BOARD_ST7920_DELAY_1 DELAY_NS(96)
-    #define BOARD_ST7920_DELAY_2 DELAY_NS(48)
-    #define BOARD_ST7920_DELAY_3 DELAY_NS(600)
+    #ifndef BOARD_ST7920_DELAY_1
+      #define BOARD_ST7920_DELAY_1 DELAY_NS(96)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_2
+      #define BOARD_ST7920_DELAY_2 DELAY_NS(48)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_3
+      #define BOARD_ST7920_DELAY_3 DELAY_NS(600)
+    #endif
   #endif
 
 #endif // HAS_SPI_LCD
diff --git a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h
index e2ecdae800..4ecee9ce1d 100644
--- a/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h
+++ b/Marlin/src/pins/stm32f4/pins_BTT_GTR_V1_0.h
@@ -328,9 +328,10 @@
     #define LCD_PINS_ENABLE                 PG5
     #define LCD_PINS_D4                     PG7
 
-    //#undef ST7920_DELAY_1
-    //#undef ST7920_DELAY_2
-    //#undef ST7920_DELAY_3
+    // CR10_STOCKDISPLAY default timing is too fast
+    #undef BOARD_ST7920_DELAY_1
+    #undef BOARD_ST7920_DELAY_2
+    #undef BOARD_ST7920_DELAY_3
 
   #else
 
@@ -377,9 +378,15 @@
 
   // Alter timing for graphical display
   #if HAS_GRAPHICAL_LCD
-    #define BOARD_ST7920_DELAY_1 DELAY_NS(96)
-    #define BOARD_ST7920_DELAY_2 DELAY_NS(48)
-    #define BOARD_ST7920_DELAY_3 DELAY_NS(600)
+    #ifndef BOARD_ST7920_DELAY_1
+      #define BOARD_ST7920_DELAY_1 DELAY_NS(96)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_2
+      #define BOARD_ST7920_DELAY_2 DELAY_NS(48)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_3
+      #define BOARD_ST7920_DELAY_3 DELAY_NS(600)
+    #endif
   #endif
 
   //#define DOGLCD_CS                       PB12
diff --git a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h
index dec630aac0..1f2c8d94ea 100644
--- a/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h
+++ b/Marlin/src/pins/stm32f4/pins_BTT_SKR_PRO_common.h
@@ -275,11 +275,10 @@
     #define LCD_PINS_ENABLE                 PG7
     #define LCD_PINS_D4                     PG3
 
-    // CR10_Stock Display needs a different delay setting on SKR PRO v1.1, so undef it here.
-    // It will be defined again at the #HAS_GRAPHICAL_LCD section below.
-    #undef ST7920_DELAY_1
-    #undef ST7920_DELAY_2
-    #undef ST7920_DELAY_3
+    // CR10_STOCKDISPLAY default timing is too fast
+    #undef BOARD_ST7920_DELAY_1
+    #undef BOARD_ST7920_DELAY_2
+    #undef BOARD_ST7920_DELAY_3
 
   #elif ENABLED(MKS_MINI_12864)
     #define DOGLCD_A0                       PG6
@@ -328,9 +327,15 @@
 
   // Alter timing for graphical display
   #if HAS_GRAPHICAL_LCD
-    #define BOARD_ST7920_DELAY_1 DELAY_NS(96)
-    #define BOARD_ST7920_DELAY_2 DELAY_NS(48)
-    #define BOARD_ST7920_DELAY_3 DELAY_NS(600)
+    #ifndef BOARD_ST7920_DELAY_1
+      #define BOARD_ST7920_DELAY_1  DELAY_NS(96)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_2
+      #define BOARD_ST7920_DELAY_2  DELAY_NS(48)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_3
+      #define BOARD_ST7920_DELAY_3 DELAY_NS(600)
+    #endif
   #endif
 
 #endif // HAS_SPI_LCD
diff --git a/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h b/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h
index 9895213229..2d931f3783 100644
--- a/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h
+++ b/Marlin/src/pins/stm32f4/pins_FYSETC_S6.h
@@ -191,11 +191,10 @@
     #define LCD_PINS_ENABLE                 PD1
     #define LCD_PINS_D4                     PC12
 
-    // CR10_Stock Display needs a different delay setting on SKR PRO v1.1, so undef it here.
-    // It will be defined again at the #HAS_GRAPHICAL_LCD section below.
-    #undef ST7920_DELAY_1
-    #undef ST7920_DELAY_2
-    #undef ST7920_DELAY_3
+    // CR10_STOCKDISPLAY default timing is too fast
+    #undef BOARD_ST7920_DELAY_1
+    #undef BOARD_ST7920_DELAY_2
+    #undef BOARD_ST7920_DELAY_3
 
   #else
 
diff --git a/Marlin/src/pins/stm32f4/pins_GENERIC_STM32F4.h b/Marlin/src/pins/stm32f4/pins_GENERIC_STM32F4.h
index 0d9356ce52..355d1eb54f 100644
--- a/Marlin/src/pins/stm32f4/pins_GENERIC_STM32F4.h
+++ b/Marlin/src/pins/stm32f4/pins_GENERIC_STM32F4.h
@@ -185,7 +185,13 @@
 // ST7920 Delays
 //
 #if HAS_GRAPHICAL_LCD
-  #define BOARD_ST7920_DELAY_1 DELAY_NS(96)
-  #define BOARD_ST7920_DELAY_2 DELAY_NS(48)
-  #define BOARD_ST7920_DELAY_3 DELAY_NS(715)
+  #ifndef BOARD_ST7920_DELAY_1
+    #define BOARD_ST7920_DELAY_1  DELAY_NS(96)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_2
+    #define BOARD_ST7920_DELAY_2  DELAY_NS(48)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_3
+    #define BOARD_ST7920_DELAY_3 DELAY_NS(715)
+  #endif
 #endif
diff --git a/Marlin/src/pins/stm32f4/pins_LERDGE_K.h b/Marlin/src/pins/stm32f4/pins_LERDGE_K.h
index 3d274b1dc4..35ad324b58 100644
--- a/Marlin/src/pins/stm32f4/pins_LERDGE_K.h
+++ b/Marlin/src/pins/stm32f4/pins_LERDGE_K.h
@@ -173,7 +173,13 @@
 // ST7920 Delays
 //
 #if HAS_GRAPHICAL_LCD
-  #define BOARD_ST7920_DELAY_1 DELAY_NS(96)
-  #define BOARD_ST7920_DELAY_2 DELAY_NS(48)
-  #define BOARD_ST7920_DELAY_3 DELAY_NS(715)
+  #ifndef BOARD_ST7920_DELAY_1
+    #define BOARD_ST7920_DELAY_1  DELAY_NS(96)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_2
+    #define BOARD_ST7920_DELAY_2  DELAY_NS(48)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_3
+    #define BOARD_ST7920_DELAY_3 DELAY_NS(715)
+  #endif
 #endif
diff --git a/Marlin/src/pins/stm32f4/pins_LERDGE_X.h b/Marlin/src/pins/stm32f4/pins_LERDGE_X.h
index 436381e4fe..04588bee25 100644
--- a/Marlin/src/pins/stm32f4/pins_LERDGE_X.h
+++ b/Marlin/src/pins/stm32f4/pins_LERDGE_X.h
@@ -170,7 +170,13 @@
 // ST7920 Delays
 //
 #if HAS_GRAPHICAL_LCD
-  #define BOARD_ST7920_DELAY_1 DELAY_NS(96)
-  #define BOARD_ST7920_DELAY_2 DELAY_NS(48)
-  #define BOARD_ST7920_DELAY_3 DELAY_NS(715)
+  #ifndef BOARD_ST7920_DELAY_1
+    #define BOARD_ST7920_DELAY_1  DELAY_NS(96)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_2
+    #define BOARD_ST7920_DELAY_2  DELAY_NS(48)
+  #endif
+  #ifndef BOARD_ST7920_DELAY_3
+    #define BOARD_ST7920_DELAY_3 DELAY_NS(715)
+  #endif
 #endif
diff --git a/Marlin/src/pins/stm32f4/pins_RUMBA32_MKS.h b/Marlin/src/pins/stm32f4/pins_RUMBA32_MKS.h
index 521f7203b3..118b8d875f 100644
--- a/Marlin/src/pins/stm32f4/pins_RUMBA32_MKS.h
+++ b/Marlin/src/pins/stm32f4/pins_RUMBA32_MKS.h
@@ -37,7 +37,7 @@
 
 #if NO_EEPROM_SELECTED
   #define FLASH_EEPROM_EMULATION
-  #define MARLIN_EEPROM_SIZE 0x1000             // 4KB
+  #define MARLIN_EEPROM_SIZE 0x1000               // 4KB
 #endif
 
 #if ENABLED(FLASH_EEPROM_EMULATION)
diff --git a/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h b/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h
index 8d2a103b61..50c9949f32 100644
--- a/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h
+++ b/Marlin/src/pins/stm32f4/pins_RUMBA32_common.h
@@ -44,10 +44,10 @@
 // TIM7 is used for SERVO
 // TIMER_SERIAL defaults to TIM7 so we'll override it here
 //
-#define STEP_TIMER                          10
-#define TEMP_TIMER                          14
+#define STEP_TIMER 10
+#define TEMP_TIMER 14
 #define TIMER_SERIAL                        TIM9
-#define HAL_TIMER_RATE                      F_CPU
+#define HAL_TIMER_RATE                     F_CPU
 
 //
 // Limit Switches
diff --git a/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h b/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h
index f5f05ddeaf..c0e089a112 100644
--- a/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h
+++ b/Marlin/src/pins/teensy2/pins_PRINTRBOARD_REVF.h
@@ -246,7 +246,7 @@
     //#define MOSI                            22  //         12               B2                ICSP-03             EXP2-05
     //#define MISO                            23  //         13               B3                ICSP-06             EXP2-05
 
-    // increase delays
+    // Alter timing for graphical display
     #define BOARD_ST7920_DELAY_1 DELAY_NS(313)
     #define BOARD_ST7920_DELAY_2 DELAY_NS(313)
     #define BOARD_ST7920_DELAY_3 DELAY_NS(313)