diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h
index f43ea40d5fa098a4ebbd27c3ca24398e45d8521f..17cd6cfbc193b286c7c04ad6aa293fccf2b9deda 100644
--- a/Marlin/src/inc/Conditionals_LCD.h
+++ b/Marlin/src/inc/Conditionals_LCD.h
@@ -29,22 +29,18 @@
#if ENABLED(CARTESIO_UI)
#define DOGLCD
- #define ULTIPANEL
+ #define IS_ULTIPANEL
#define DEFAULT_LCD_CONTRAST 90
#define LCD_CONTRAST_MIN 60
#define LCD_CONTRAST_MAX 140
-#elif ENABLED(MAKRPANEL)
-
- #define U8GLIB_ST7565_64128N
-
#elif ENABLED(ZONESTAR_LCD)
#define ADC_KEYPAD
- #define REPRAPWORLD_KEYPAD
+ #define IS_RRW_KEYPAD
#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
#define ADC_KEY_NUM 8
- #define ULTIPANEL
+ #define IS_ULTIPANEL
// This helps to implement ADC_KEYPAD menus
#define REVERSE_MENU_DIRECTION
@@ -53,22 +49,18 @@
#define ENCODER_FEEDRATE_DEADZONE 2
#elif ENABLED(RADDS_DISPLAY)
- #define ULTIPANEL
+ #define IS_ULTIPANEL
#define ENCODER_PULSES_PER_STEP 2
-#elif ENABLED(ANET_FULL_GRAPHICS_LCD)
+#elif EITHER(ANET_FULL_GRAPHICS_LCD, BQ_LCD_SMART_CONTROLLER)
- #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
-
-#elif ENABLED(BQ_LCD_SMART_CONTROLLER)
-
- #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
+ #define IS_RRD_FG_SC
#elif ANY(miniVIKI, VIKI2, ELB_FULL_GRAPHIC_CONTROLLER, AZSMZ_12864)
- #define ULTRA_LCD
+ #define IS_ULTRA_LCD
#define DOGLCD
- #define ULTIMAKERCONTROLLER
+ #define IS_ULTIPANEL
#if ENABLED(miniVIKI)
#define LCD_CONTRAST_MIN 75
@@ -95,24 +87,24 @@
#elif ENABLED(OLED_PANEL_TINYBOY2)
- #define U8GLIB_SSD1306
- #define ULTIPANEL
+ #define IS_U8GLIB_SSD1306
+ #define IS_ULTIPANEL
#elif ENABLED(RA_CONTROL_PANEL)
#define LCD_I2C_TYPE_PCA8574
#define LCD_I2C_ADDRESS 0x27 // I2C Address of the port expander
- #define ULTIPANEL
+ #define IS_ULTIPANEL
#elif ENABLED(REPRAPWORLD_GRAPHICAL_LCD)
#define DOGLCD
#define U8GLIB_ST7920
- #define ULTIPANEL
+ #define IS_ULTIPANEL
#elif ENABLED(CR10_STOCKDISPLAY)
- #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
+ #define IS_RRD_FG_SC
#ifndef ST7920_DELAY_1
#define ST7920_DELAY_1 DELAY_NS(125)
#endif
@@ -125,13 +117,13 @@
#elif ENABLED(MKS_12864OLED)
- #define REPRAP_DISCOUNT_SMART_CONTROLLER
+ #define IS_RRD_SC
#define U8GLIB_SH1106
#elif ENABLED(MKS_12864OLED_SSD1306)
- #define REPRAP_DISCOUNT_SMART_CONTROLLER
- #define U8GLIB_SSD1306
+ #define IS_RRD_SC
+ #define IS_U8GLIB_SSD1306
#elif ENABLED(MKS_MINI_12864)
@@ -143,12 +135,12 @@
#define FYSETC_MINI_12864
#define DOGLCD
- #define ULTIPANEL
+ #define IS_ULTIPANEL
#define LCD_CONTRAST_MIN 0
#define LCD_CONTRAST_MAX 255
#define DEFAULT_LCD_CONTRAST 220
#define LED_COLORS_REDUCE_GREEN
- #if (HAS_POWER_SWITCH && EITHER(FYSETC_MINI_12864_2_0, FYSETC_MINI_12864_2_1))
+ #if HAS_POWER_SWITCH && EITHER(FYSETC_MINI_12864_2_0, FYSETC_MINI_12864_2_1)
#define LED_BACKLIGHT_TIMEOUT 10000
#endif
@@ -167,60 +159,62 @@
#define NEOPIXEL_STARTUP_TEST
#endif
+#elif ENABLED(ULTI_CONTROLLER)
+
+ #define U8GLIB_SSD1309
+ #define LCD_RESET_PIN LCD_PINS_D6 // This controller need a reset pin
+ #define LCD_CONTRAST_MIN 0
+ #define LCD_CONTRAST_MAX 254
+ #define DEFAULT_LCD_CONTRAST 127
+ #define ENCODER_PULSES_PER_STEP 2
+ #define ENCODER_STEPS_PER_MENU_ITEM 2
+
+#elif ENABLED(MAKEBOARD_MINI_2_LINE_DISPLAY_1602)
+
+ #define IS_RRD_SC
+ #define LCD_WIDTH 16
+ #define LCD_HEIGHT 2
+
+#endif
+
+#if ENABLED(IS_RRD_FG_SC)
+ #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
#endif
#if EITHER(MAKRPANEL, MINIPANEL)
+ #define IS_ULTIPANEL
#define DOGLCD
- #define ULTIPANEL
+ #if ENABLED(MAKRPANEL)
+ #define U8GLIB_ST7565_64128N
+ #endif
#ifndef DEFAULT_LCD_CONTRAST
#define DEFAULT_LCD_CONTRAST 17
#endif
#endif
-#if ENABLED(ULTI_CONTROLLER)
- #define U8GLIB_SSD1309
- #define LCD_RESET_PIN LCD_PINS_D6 // This controller need a reset pin
- #define LCD_CONTRAST_MIN 0
- #define LCD_CONTRAST_MAX 254
- #define DEFAULT_LCD_CONTRAST 127
- #define ENCODER_PULSES_PER_STEP 2
- #define ENCODER_STEPS_PER_MENU_ITEM 2
+#if ENABLED(IS_U8GLIB_SSD1306)
+ #define U8GLIB_SSD1306
#endif
// 128x64 I2C OLED LCDs - SSD1306/SSD1309/SH1106
#define HAS_SSD1306_OLED_I2C ANY(U8GLIB_SSD1306, U8GLIB_SSD1309, U8GLIB_SH1106)
#if HAS_SSD1306_OLED_I2C
- #define ULTRA_LCD
+ #define IS_ULTRA_LCD
#define DOGLCD
#endif
-#if EITHER(PANEL_ONE, U8GLIB_SH1106)
-
- #define ULTIMAKERCONTROLLER
-
-#elif ENABLED(MAKEBOARD_MINI_2_LINE_DISPLAY_1602)
-
- #define REPRAP_DISCOUNT_SMART_CONTROLLER
- #define LCD_WIDTH 16
- #define LCD_HEIGHT 2
-
-#endif
-
#if ANY(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER, LCD_FOR_MELZI, SILVER_GATE_GLCD_CONTROLLER)
#define DOGLCD
#define U8GLIB_ST7920
- #define REPRAP_DISCOUNT_SMART_CONTROLLER
+ #define IS_RRD_SC
#endif
-#if ANY(ULTIMAKERCONTROLLER, REPRAP_DISCOUNT_SMART_CONTROLLER, G3D_PANEL, RIGIDBOT_PANEL, ULTI_CONTROLLER)
- #define ULTIPANEL
+#if ENABLED(IS_RRD_SC)
+ #define REPRAP_DISCOUNT_SMART_CONTROLLER
#endif
-#if ENABLED(REPRAPWORLD_KEYPAD)
- #define NEWPANEL
- #if ENABLED(ULTIPANEL) && !defined(REPRAPWORLD_KEYPAD_MOVE_STEP)
- #define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
- #endif
+#if ANY(ULTIMAKERCONTROLLER, REPRAP_DISCOUNT_SMART_CONTROLLER, G3D_PANEL, RIGIDBOT_PANEL, ULTI_CONTROLLER, PANEL_ONE, U8GLIB_SH1106)
+ #define IS_ULTIPANEL
#endif
/**
@@ -230,7 +224,7 @@
// Einstart OLED has Cardinal nav via pins defined in pins_EINSTART-S.h
#if ENABLED(U8GLIB_SH1106_EINSTART)
#define DOGLCD
- #define ULTIPANEL
+ #define IS_ULTIPANEL
#endif
/**
@@ -238,7 +232,7 @@
*/
#if ENABLED(MKS_ROBIN_TFT)
#define DOGLCD
- #define ULTIPANEL
+ #define IS_ULTIPANEL
#endif
/**
@@ -262,7 +256,7 @@
#define LCD_I2C_TYPE_MCP23017
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
#define LCD_USE_I2C_BUZZER // Enable buzzer on LCD (optional)
- #define ULTIPANEL
+ #define IS_ULTIPANEL
#elif ENABLED(LCD_I2C_VIKI)
@@ -277,7 +271,7 @@
#define LCD_I2C_TYPE_MCP23017
#define LCD_I2C_ADDRESS 0x20 // I2C Address of the port expander
#define LCD_USE_I2C_BUZZER // Enable buzzer on LCD (requires LiquidTWI2 v1.2.3 or later)
- #define ULTIPANEL
+ #define IS_ULTIPANEL
#define ENCODER_FEEDRATE_DEADZONE 4
@@ -289,7 +283,7 @@
#define STD_ENCODER_PULSES_PER_STEP 2
#define STD_ENCODER_STEPS_PER_MENU_ITEM 1
-#elif ANY(miniVIKI, VIKI2, ELB_FULL_GRAPHIC_CONTROLLER, AZSMZ_12864, OLED_PANEL_TINYBOY2, BQ_LCD_SMART_CONTROLLER, LCD_I2C_PANELOLU2, REPRAP_DISCOUNT_SMART_CONTROLLER)
+#elif ANY(REPRAP_DISCOUNT_SMART_CONTROLLER, miniVIKI, VIKI2, ELB_FULL_GRAPHIC_CONTROLLER, AZSMZ_12864, OLED_PANEL_TINYBOY2, BQ_LCD_SMART_CONTROLLER, LCD_I2C_PANELOLU2)
#define STD_ENCODER_PULSES_PER_STEP 4
#define STD_ENCODER_STEPS_PER_MENU_ITEM 1
@@ -318,21 +312,41 @@
// https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
#if ENABLED(FF_INTERFACEBOARD)
#define SR_LCD_3W_NL // Non latching 3 wire shift register
- #define ULTIPANEL
+ #define IS_ULTIPANEL
+#elif ENABLED(SAV_3DLCD)
+ #define SR_LCD_2W_NL // Non latching 2 wire shift register
+ #define IS_ULTIPANEL
#endif
-#if ENABLED(SAV_3DLCD)
- #define SR_LCD_2W_NL // Non latching 2 wire shift register
+#if ENABLED(IS_ULTIPANEL)
#define ULTIPANEL
#endif
-
#if ENABLED(ULTIPANEL)
- #define NEWPANEL // Disable if there's actually no click-encoder panel
+ #define IS_ULTRA_LCD
+ #ifndef NEWPANEL
+ #define NEWPANEL
+ #endif
+#endif
+
+#if ENABLED(IS_ULTRA_LCD)
#define ULTRA_LCD
#endif
+#if ENABLED(IS_RRW_KEYPAD)
+ #define REPRAPWORLD_KEYPAD
+#endif
+
+// Keypad needs a move step
+#if ENABLED(REPRAPWORLD_KEYPAD)
+ #define NEWPANEL
+ #ifndef REPRAPWORLD_KEYPAD_MOVE_STEP
+ #define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
+ #endif
+#endif
+
// Extensible UI serial touch screens. (See src/lcd/extensible_ui)
-#if EITHER(DGUS_LCD, MALYAN_LCD)
+#if EITHER(MALYAN_LCD, DGUS_LCD)
+ #define IS_EXTUI
#define EXTENSIBLE_UI
#endif
@@ -342,8 +356,7 @@
#define HAS_GRAPHICAL_LCD ENABLED(DOGLCD)
#define HAS_CHARACTER_LCD (HAS_SPI_LCD && !HAS_GRAPHICAL_LCD)
#define HAS_LCD_MENU (ENABLED(ULTIPANEL) && DISABLED(NO_LCD_MENUS))
-
-#define HAS_ADC_BUTTONS ENABLED(ADC_KEYPAD)
+#define HAS_ADC_BUTTONS ENABLED(ADC_KEYPAD)
/**
* Default LCD contrast for Graphical LCD displays
diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h
index 9b970ff0ed1369623b606b48e404a32704e0707a..b0f5df911e31e172e767d4f53a5b33920e27e96b 100644
--- a/Marlin/src/inc/SanityCheck.h
+++ b/Marlin/src/inc/SanityCheck.h
@@ -1832,76 +1832,68 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
/**
* Make sure only one display is enabled
- *
- * Note: BQ_LCD_SMART_CONTROLLER => REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
- * REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER => REPRAP_DISCOUNT_SMART_CONTROLLER
- * SAV_3DGLCD => U8GLIB_SH1106 => ULTIMAKERCONTROLLER
- * MKS_12864OLED => U8GLIB_SH1106 => ULTIMAKERCONTROLLER
- * MKS_12864OLED_SSD1306 => U8GLIB_SSD1306 => ULTIMAKERCONTROLLER
- * MKS_MINI_12864 => MINIPANEL
- * miniVIKI => ULTIMAKERCONTROLLER
- * VIKI2 => ULTIMAKERCONTROLLER
- * ELB_FULL_GRAPHIC_CONTROLLER => ULTIMAKERCONTROLLER
- * AZSMZ_12864 => ULTIMAKERCONTROLLER
- * PANEL_ONE => ULTIMAKERCONTROLLER
*/
#if 1 < 0 \
- + ( ENABLED(ULTIMAKERCONTROLLER) \
- && DISABLED(SAV_3DGLCD) \
- && DISABLED(miniVIKI) \
- && DISABLED(VIKI2) \
- && DISABLED(ELB_FULL_GRAPHIC_CONTROLLER) \
- && DISABLED(AZSMZ_12864) \
- && DISABLED(PANEL_ONE) \
- && DISABLED(MKS_12864OLED) \
- && DISABLED(MKS_12864OLED_SSD1306) ) \
- + ( ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) \
- && DISABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) \
- && DISABLED(LCD_FOR_MELZI) \
- && DISABLED(MAKEBOARD_MINI_2_LINE_DISPLAY_1602) \
- && DISABLED(MKS_12864OLED) \
- && DISABLED(MKS_12864OLED_SSD1306) ) \
- + (ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) && DISABLED(BQ_LCD_SMART_CONTROLLER)) \
- + ENABLED(LCD_FOR_MELZI) \
- + ENABLED(MKS_12864OLED) \
- + ENABLED(MKS_12864OLED_SSD1306) \
- + ENABLED(MAKEBOARD_MINI_2_LINE_DISPLAY_1602) \
- + ENABLED(CARTESIO_UI) \
+ + (ENABLED(REPRAP_DISCOUNT_SMART_CONTROLLER) && DISABLED(IS_RRD_SC)) \
+ + (ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) && DISABLED(IS_RRD_FG_SC)) \
+ + (ENABLED(ULTRA_LCD) && DISABLED(IS_ULTRA_LCD)) \
+ + (ENABLED(U8GLIB_SSD1306) && DISABLED(IS_U8GLIB_SSD1306)) \
+ + (ENABLED(MINIPANEL) && DISABLED(MKS_MINI_12864)) \
+ + (ENABLED(REPRAPWORLD_KEYPAD) && DISABLED(IS_RRW_KEYPAD)) \
+ + (ENABLED(EXTENSIBLE_UI) && DISABLED(IS_EXTUI))
+ + (ENABLED(ULTIPANEL) && DISABLED(IS_ULTIPANEL)) \
+ + ENABLED(RADDS_DISPLAY) \
+ + ENABLED(ULTIMAKERCONTROLLER) \
+ ENABLED(PANEL_ONE) \
- + ENABLED(MAKRPANEL) \
- + ENABLED(REPRAPWORLD_GRAPHICAL_LCD) \
- + ENABLED(VIKI2) \
- + ENABLED(miniVIKI) \
- + ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) \
- + ENABLED(AZSMZ_12864) \
+ ENABLED(G3D_PANEL) \
- + (ENABLED(MINIPANEL) && DISABLED(MKS_MINI_12864)) \
- + ENABLED(MKS_MINI_12864) \
- + ENABLED(FYSETC_MINI_12864_X_X) \
- + ENABLED(FYSETC_MINI_12864_1_2) \
- + ENABLED(FYSETC_MINI_12864_2_0) \
- + ENABLED(FYSETC_MINI_12864_2_1) \
- + (ENABLED(REPRAPWORLD_KEYPAD) && NONE(CARTESIO_UI, ZONESTAR_LCD)) \
+ ENABLED(RIGIDBOT_PANEL) \
+ + ENABLED(MAKEBOARD_MINI_2_LINE_DISPLAY_1602) \
+ + ENABLED(ZONESTAR_LCD) \
+ ENABLED(RA_CONTROL_PANEL) \
+ ENABLED(LCD_SAINSMART_I2C_1602) \
+ ENABLED(LCD_SAINSMART_I2C_2004) \
+ ENABLED(LCM1602) \
+ ENABLED(LCD_I2C_PANELOLU2) \
+ ENABLED(LCD_I2C_VIKI) \
- + (ENABLED(U8GLIB_SSD1306) && NONE(OLED_PANEL_TINYBOY2, MKS_12864OLED_SSD1306)) \
+ ENABLED(SAV_3DLCD) \
+ + ENABLED(FF_INTERFACEBOARD) \
+ + ENABLED(REPRAPWORLD_GRAPHICAL_LCD) \
+ + ENABLED(VIKI2) \
+ + ENABLED(miniVIKI) \
+ + ENABLED(MAKRPANEL) \
+ + ENABLED(ELB_FULL_GRAPHIC_CONTROLLER) \
+ ENABLED(BQ_LCD_SMART_CONTROLLER) \
+ + ENABLED(CARTESIO_UI) \
+ + ENABLED(LCD_FOR_MELZI) \
+ + ENABLED(ULTI_CONTROLLER) \
+ + ENABLED(MKS_MINI_12864) \
+ + ENABLED(FYSETC_MINI_12864_X_X) \
+ + ENABLED(FYSETC_MINI_12864_1_2) \
+ + ENABLED(FYSETC_MINI_12864_2_0) \
+ + ENABLED(FYSETC_MINI_12864_2_1) \
+ + ENABLED(CR10_STOCKDISPLAY) \
+ + ENABLED(ANET_FULL_GRAPHICS_LCD) \
+ + ENABLED(AZSMZ_12864) \
+ + ENABLED(SILVER_GATE_GLCD_CONTROLLER) \
+ ENABLED(SAV_3DGLCD) \
+ ENABLED(OLED_PANEL_TINYBOY2) \
- + ENABLED(ZONESTAR_LCD) \
- + ENABLED(ULTI_CONTROLLER) \
- + ENABLED(MALYAN_LCD) \
+ + ENABLED(MKS_12864OLED) \
+ + ENABLED(MKS_12864OLED_SSD1306) \
+ + ENABLED(U8GLIB_SH1106_EINSTART) \
+ ENABLED(DGUS_LCD) \
- + (ENABLED(EXTENSIBLE_UI) && NONE(MALYAN_LCD, DGUS_LCD))
+ + ENABLED(MALYAN_LCD) \
+ + ENABLED(MKS_ROBIN_TFT)
#error "Please select no more than one LCD controller option."
#endif
+#undef IS_RRD_SC
+#undef IS_RRD_FG_SC
+#undef IS_ULTRA_LCD
+#undef IS_U8GLIB_SSD1306
+#undef IS_RRW_KEYPAD
+#undef IS_EXTUI
+#undef IS_ULTIPANEL
+
/**
* FYSETC Mini 12864 RGB backlighting required
*/