From a7bb1fc322bae668626fc2d9e99d44694eabdf08 Mon Sep 17 00:00:00 2001
From: Ludy <Ludy87@users.noreply.github.com>
Date: Wed, 10 Jul 2019 05:52:48 +0200
Subject: [PATCH] Fix Dual X,Y,Z UART pins in relation to TMC2208/9 (#14554)

---
 Marlin/src/pins/pins.h                     | 48 +++++++++++++---------
 buildroot/share/tests/megaatmega2560-tests | 18 ++++----
 2 files changed, 38 insertions(+), 28 deletions(-)

diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h
index ee71f7b792..ad9aca18e5 100644
--- a/Marlin/src/pins/pins.h
+++ b/Marlin/src/pins/pins.h
@@ -949,11 +949,13 @@
   #ifndef X2_MS3_PIN
     #define X2_MS3_PIN    _EPIN(E_STEPPERS, MS3)
   #endif
-  #ifndef X2_SERIAL_TX_PIN
-    #define X2_SERIAL_TX_PIN    _EPIN(E_STEPPERS, SERIAL_TX)
-  #endif
-  #ifndef X2_SERIAL_RX_PIN
-    #define X2_SERIAL_RX_PIN    _EPIN(E_STEPPERS, SERIAL_RX)
+  #if AXIS_DRIVER_TYPE_X2(TMC2208) || AXIS_DRIVER_TYPE_X2(TMC2209)
+    #ifndef X2_SERIAL_TX_PIN
+      #define X2_SERIAL_TX_PIN _EPIN(E_STEPPERS, SERIAL_TX)
+    #endif
+    #ifndef X2_SERIAL_RX_PIN
+      #define X2_SERIAL_RX_PIN _EPIN(E_STEPPERS, SERIAL_RX)
+    #endif
   #endif
   #define Y2_E_INDEX INCREMENT(E_STEPPERS)
 #else
@@ -982,11 +984,13 @@
   #ifndef Y2_MS3_PIN
     #define Y2_MS3_PIN    _EPIN(Y2_E_INDEX, MS3)
   #endif
-  #ifndef Y2_SERIAL_TX_PIN
-    #define Y2_SERIAL_TX_PIN    _EPIN(Y2_E_INDEX, SERIAL_TX)
-  #endif
-  #ifndef Y2_SERIAL_RX_PIN
-    #define Y2_SERIAL_RX_PIN    _EPIN(Y2_E_INDEX, SERIAL_RX)
+  #if AXIS_DRIVER_TYPE_Y2(TMC2208) || AXIS_DRIVER_TYPE_Y2(TMC2209)
+    #ifndef Y2_SERIAL_TX_PIN
+      #define Y2_SERIAL_TX_PIN _EPIN(Y2_E_INDEX, SERIAL_TX)
+    #endif
+    #ifndef Y2_SERIAL_RX_PIN
+      #define Y2_SERIAL_RX_PIN _EPIN(Y2_E_INDEX, SERIAL_RX)
+    #endif
   #endif
   #define Z2_E_INDEX INCREMENT(Y2_E_INDEX)
 #else
@@ -1015,11 +1019,13 @@
   #ifndef Z2_MS3_PIN
     #define Z2_MS3_PIN    _EPIN(Z2_E_INDEX, MS3)
   #endif
-  #ifndef Z2_SERIAL_TX_PIN
-    #define Z2_SERIAL_TX_PIN    _EPIN(Z2_E_INDEX, SERIAL_TX)
-  #endif
-  #ifndef Z2_SERIAL_RX_PIN
-    #define Z2_SERIAL_RX_PIN    _EPIN(Z2_E_INDEX, SERIAL_RX)
+  #if AXIS_DRIVER_TYPE_Z2(TMC2208) || AXIS_DRIVER_TYPE_Z2(TMC2209)
+    #ifndef Z2_SERIAL_TX_PIN
+      #define Z2_SERIAL_TX_PIN _EPIN(Z2_E_INDEX, SERIAL_TX)
+    #endif
+    #ifndef Z2_SERIAL_RX_PIN
+      #define Z2_SERIAL_RX_PIN _EPIN(Z2_E_INDEX, SERIAL_RX)
+    #endif
   #endif
   #define Z3_E_INDEX INCREMENT(Z2_E_INDEX)
 #else
@@ -1047,10 +1053,12 @@
   #ifndef Z3_MS3_PIN
     #define Z3_MS3_PIN    _EPIN(Z3_E_INDEX, MS3)
   #endif
-  #ifndef Z3_SERIAL_TX_PIN
-    #define Z3_SERIAL_TX_PIN    _EPIN(Z3_E_INDEX, SERIAL_TX)
-  #endif
-  #ifndef Z3_SERIAL_RX_PIN
-    #define Z3_SERIAL_RX_PIN    _EPIN(Z3_E_INDEX, SERIAL_RX)
+  #if AXIS_DRIVER_TYPE_Z3(TMC2208) || AXIS_DRIVER_TYPE_Z3(TMC2209)
+    #ifndef Z3_SERIAL_TX_PIN
+      #define Z3_SERIAL_TX_PIN _EPIN(Z3_E_INDEX, SERIAL_TX)
+    #endif
+    #ifndef Z3_SERIAL_RX_PIN
+      #define Z3_SERIAL_RX_PIN _EPIN(Z3_E_INDEX, SERIAL_RX)
+    #endif
   #endif
 #endif
diff --git a/buildroot/share/tests/megaatmega2560-tests b/buildroot/share/tests/megaatmega2560-tests
index d942c01cd6..36ca78cdc5 100755
--- a/buildroot/share/tests/megaatmega2560-tests
+++ b/buildroot/share/tests/megaatmega2560-tests
@@ -29,17 +29,19 @@ opt_set TEMP_SENSOR_1 1
 opt_set TEMP_SENSOR_BED 2
 opt_set GRID_MAX_POINTS_X 16
 opt_set FANMUX0_PIN 53
-opt_enable PIDTEMPBED FIX_MOUNTED_PROBE Z_SAFE_HOMING EEPROM_SETTINGS \
-           REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT SD_REPRINT_LAST_SELECTED_FILE BINARY_FILE_TRANSFER \
-           NEOPIXEL_LED BLINKM PCA9632 RGB_LED RGB_LED_R_PIN RGB_LED_G_PIN RGB_LED_B_PIN \
-           NOZZLE_PARK_FEATURE FILAMENT_RUNOUT_SENSOR FILAMENT_RUNOUT_DISTANCE_MM \
+opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER LCD_PROGRESS_BAR LCD_PROGRESS_BAR_TEST \
+           PIDTEMPBED FIX_MOUNTED_PROBE Z_SAFE_HOMING CODEPENDENT_XY_HOMING \
+           EEPROM_SETTINGS SDSUPPORT SD_REPRINT_LAST_SELECTED_FILE BINARY_FILE_TRANSFER \
+           BLINKM PCA9632 RGB_LED RGB_LED_R_PIN RGB_LED_G_PIN RGB_LED_B_PIN LED_CONTROL_MENU \
+           NEOPIXEL_LED CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CASE_LIGHT_MENU \
+           NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE FILAMENT_RUNOUT_DISTANCE_MM FILAMENT_RUNOUT_SENSOR \
            AUTO_BED_LEVELING_LINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE \
            SKEW_CORRECTION SKEW_CORRECTION_FOR_Z SKEW_CORRECTION_GCODE \
-           FWRETRACT ARC_P_CIRCLES ADVANCED_PAUSE_FEATURE CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS \
+           BACKLASH_COMPENSATION BACKLASH_GCODE \
+           FWRETRACT ARC_P_CIRCLES CNC_WORKSPACE_PLANES CNC_COORDINATE_SYSTEMS \
            PSU_CONTROL AUTO_POWER_CONTROL POWER_LOSS_RECOVERY POWER_LOSS_PIN POWER_LOSS_STATE \
-           LCD_PROGRESS_BAR LCD_PROGRESS_BAR_TEST PINS_DEBUGGING \
-           MAX7219_DEBUG LED_CONTROL_MENU CASE_LIGHT_MENU CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CODEPENDENT_XY_HOMING BACKLASH_COMPENSATION BACKLASH_GCODE
-opt_enable SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER
+           SLOW_PWM_HEATERS THERMAL_PROTECTION_CHAMBER \
+           PINS_DEBUGGING MAX7219_DEBUG
 opt_set TEMP_SENSOR_CHAMBER 3
 opt_set HEATER_CHAMBER_PIN 45
 exec_test $1 $2 "RAMPS with 2 extruders, RepRap LCD, Linear ABL, LEDs, and many options"