From b57ef4b2617b3413c578a56d87a61c8789f29a2d Mon Sep 17 00:00:00 2001
From: 0r31 <37673727+0r31@users.noreply.github.com>
Date: Tue, 21 Jan 2020 03:09:16 +0100
Subject: [PATCH] Override for LPC1768 u8g/digipot I2C master ID (#16622)

---
 Marlin/Configuration_adv.h                         | 14 +++++++++++---
 Marlin/src/HAL/HAL_LPC1768/include/i2c_util.c      |  7 +++----
 Marlin/src/HAL/HAL_LPC1768/include/i2c_util.h      | 12 +++++++-----
 .../src/HAL/HAL_LPC1768/u8g/LCD_I2C_routines.cpp   |  6 +++---
 4 files changed, 24 insertions(+), 15 deletions(-)

diff --git a/Marlin/Configuration_adv.h b/Marlin/Configuration_adv.h
index 315c0714b4..648e3761b2 100644
--- a/Marlin/Configuration_adv.h
+++ b/Marlin/Configuration_adv.h
@@ -2449,6 +2449,14 @@
 
 #endif // HAS_L64XX
 
+// @section i2cbus
+
+//
+// I2C Master ID for LPC176x LCD and Digital Current control
+// Does not apply to other peripherals based on the Wire library.
+//
+//#define I2C_MASTER_ID  1  // Set a value from 0 to 2
+
 /**
  * TWI/I2C BUS
  *
@@ -2477,10 +2485,10 @@
  * echo:i2c-reply: from:99 bytes:5 data:hello
  */
 
-// @section i2cbus
-
 //#define EXPERIMENTAL_I2CBUS
-#define I2C_SLAVE_ADDRESS  0 // Set a value from 8 to 127 to act as a slave
+#if ENABLED(EXPERIMENTAL_I2CBUS)
+  #define I2C_SLAVE_ADDRESS  0  // Set a value from 8 to 127 to act as a slave
+#endif
 
 // @section extras
 
diff --git a/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.c b/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.c
index a451f4c43f..f3dc6d2308 100644
--- a/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.c
+++ b/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.c
@@ -26,7 +26,6 @@
 
 #ifdef TARGET_LPC1768
 
-#include "../../../inc/MarlinConfigPre.h"
 #include "i2c_util.h"
 
 #define U8G_I2C_OPT_FAST 16  // from u8g.h
@@ -43,13 +42,13 @@ void configure_i2c(const uint8_t clock_option) {
   PinCfg.OpenDrain = 0;
   PinCfg.Pinmode = 0;
   PinCfg.Portnum = 0;
-  #if USEDI2CDEV_M == 0
+  #if I2C_MASTER_ID == 0
     PinCfg.Funcnum = 1;
     PinCfg.Pinnum = 27;     // SDA0 / D57  AUX-1 ... SCL0 / D58  AUX-1
-  #elif USEDI2CDEV_M == 1
+  #elif I2C_MASTER_ID == 1
     PinCfg.Funcnum = 3;
     PinCfg.Pinnum = 0;      // SDA1 / D20 SCA ... SCL1 / D21 SCL
-  #elif USEDI2CDEV_M == 2
+  #elif I2C_MASTER_ID == 2
     PinCfg.Funcnum = 2;
     PinCfg.Pinnum = 10;     // SDA2 / D38  X_ENABLE_PIN ... SCL2 / D55  X_DIR_PIN
   #endif
diff --git a/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.h b/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.h
index c2d6c2b81d..671a1e3746 100644
--- a/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.h
+++ b/Marlin/src/HAL/HAL_LPC1768/include/i2c_util.h
@@ -25,15 +25,17 @@
  * HAL_LPC1768/include/i2c_util.h
  */
 
-#ifndef USEDI2CDEV_M
-  #define USEDI2CDEV_M  1  // By default use I2C1 controller
+#include "../../../inc/MarlinConfigPre.h"
+
+#ifndef I2C_MASTER_ID
+  #define I2C_MASTER_ID 1
 #endif
 
-#if USEDI2CDEV_M == 0
+#if I2C_MASTER_ID == 0
   #define I2CDEV_M LPC_I2C0
-#elif USEDI2CDEV_M == 1
+#elif I2C_MASTER_ID == 1
   #define I2CDEV_M LPC_I2C1
-#elif USEDI2CDEV_M == 2
+#elif I2C_MASTER_ID == 2
   #define I2CDEV_M LPC_I2C2
 #else
   #error "Master I2C device not defined!"
diff --git a/Marlin/src/HAL/HAL_LPC1768/u8g/LCD_I2C_routines.cpp b/Marlin/src/HAL/HAL_LPC1768/u8g/LCD_I2C_routines.cpp
index 8afb60752e..360cce7f66 100644
--- a/Marlin/src/HAL/HAL_LPC1768/u8g/LCD_I2C_routines.cpp
+++ b/Marlin/src/HAL/HAL_LPC1768/u8g/LCD_I2C_routines.cpp
@@ -25,15 +25,15 @@
 
 #ifdef TARGET_LPC1768
 
+#include "../include/i2c_util.h"
+#include "../../../core/millis_t.h"
+
 extern int millis();
 
 #ifdef __cplusplus
   extern "C" {
 #endif
 
-#include "../include/i2c_util.h"
-#include "../../../core/millis_t.h"
-
 //////////////////////////////////////////////////////////////////////////////////////
 
 // These two routines are exact copies of the lpc17xx_i2c.c routines.  Couldn't link to