From 2af9e2f759a8950497a00d7152fefb6203c15f48 Mon Sep 17 00:00:00 2001
From: makerbase <4164049@qq.com>
Date: Thu, 10 Sep 2020 10:48:42 +0800
Subject: [PATCH] MKS Gen L V2.1 (#19314)

---
 Marlin/Makefile                            |  8 +-
 Marlin/src/core/boards.h                   |  7 +-
 Marlin/src/pins/pins.h                     |  2 +
 Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h | 85 ++++++++++++++++++++++
 4 files changed, 96 insertions(+), 6 deletions(-)
 create mode 100644 Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h

diff --git a/Marlin/Makefile b/Marlin/Makefile
index 5ab0d1eefd1..9f2d18d268d 100644
--- a/Marlin/Makefile
+++ b/Marlin/Makefile
@@ -268,12 +268,14 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1148)
 else ifeq ($(HARDWARE_MOTHERBOARD),1149)
 # MKS GEN L V2
 else ifeq ($(HARDWARE_MOTHERBOARD),1150)
-# Copymaster 3D
+# MKS GEN L V2.1
 else ifeq ($(HARDWARE_MOTHERBOARD),1151)
-# Ortur 4
+# Copymaster 3D
 else ifeq ($(HARDWARE_MOTHERBOARD),1152)
-# Tenlog D3 Hero
+# Ortur 4
 else ifeq ($(HARDWARE_MOTHERBOARD),1153)
+# Tenlog D3 Hero
+else ifeq ($(HARDWARE_MOTHERBOARD),1154)
 
 #
 # RAMBo and derivatives
diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h
index e10c4930970..b9331471212 100644
--- a/Marlin/src/core/boards.h
+++ b/Marlin/src/core/boards.h
@@ -104,9 +104,10 @@
 #define BOARD_HJC2560C_REV2           1148  // ADIMLab Gantry v2
 #define BOARD_TANGO                   1149  // BIQU Tango V1
 #define BOARD_MKS_GEN_L_V2            1150  // MKS GEN L V2
-#define BOARD_COPYMASTER_3D           1151  // Copymaster 3D
-#define BOARD_ORTUR_4                 1152  // Ortur 4
-#define BOARD_TENLOG_D3_HERO          1153  // Tenlog D3 Hero IDEX printer
+#define BOARD_MKS_GEN_L_V21           1151  // MKS GEN L V2.1
+#define BOARD_COPYMASTER_3D           1152  // Copymaster 3D
+#define BOARD_ORTUR_4                 1153  // Ortur 4
+#define BOARD_TENLOG_D3_HERO          1154  // Tenlog D3 Hero IDEX printer
 
 //
 // RAMBo and derivatives
diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h
index 7aff582c6df..9dce52b4204 100644
--- a/Marlin/src/pins/pins.h
+++ b/Marlin/src/pins/pins.h
@@ -196,6 +196,8 @@
   #include "ramps/pins_ORTUR_4.h"               // ATmega2560                             env:mega2560
 #elif MB(TENLOG_D3_HERO)
   #include "ramps/pins_TENLOG_D3_HERO.h"        // ATmega2560                             env:mega2560
+#elif MB(MKS_GEN_L_V21)
+  #include "ramps/pins_MKS_GEN_L_V21.h"         // ATmega2560                             env:mega2560
 
 //
 // RAMBo and derivatives
diff --git a/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h
new file mode 100644
index 00000000000..24e04a39ff1
--- /dev/null
+++ b/Marlin/src/pins/ramps/pins_MKS_GEN_L_V21.h
@@ -0,0 +1,85 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+/**
+ * MKS GEN L V2 – Arduino Mega2560 with RAMPS v1.4 pin assignments
+ */
+
+#if HOTENDS > 2 || E_STEPPERS > 2
+  #error "MKS GEN L V2.1 supports up to 2 hotends / E-steppers. Comment out this line to continue."
+#endif
+
+#define BOARD_INFO_NAME "MKS GEN L V2.1"
+
+//
+// Heaters / Fans
+//
+// Power outputs EFBF or EFBE
+#define MOSFET_D_PIN                           7
+
+//
+// CS Pins wired to avoid conflict with the LCD
+// See https://www.thingiverse.com/asset:66604
+//
+
+#ifndef X_CS_PIN
+  #define X_CS_PIN                            63
+#endif
+#ifndef Y_CS_PIN
+  #define Y_CS_PIN                            64
+#endif
+#ifndef Z_CS_PIN
+  #define Z_CS_PIN                            65
+#endif
+#ifndef E0_CS_PIN
+  #define E0_CS_PIN                           66
+#endif
+#ifndef E1_CS_PIN
+  #define E1_CS_PIN                           12
+#endif
+
+// TMC2130 Diag Pins (currently just for reference)
+#define X_DIAG_PIN                             3
+#define Y_DIAG_PIN                            14
+#define Z_DIAG_PIN                            18
+#define E0_DIAG_PIN                            2
+#define E1_DIAG_PIN                           15
+
+#ifndef SERVO1_PIN
+  #define SERVO1_PIN                          21
+#endif
+#ifndef SERVO2_PIN
+  #define SERVO2_PIN                          39
+#endif
+#ifndef SERVO3_PIN
+  #define SERVO3_PIN                          32
+#endif
+
+#ifndef E1_SERIAL_TX_PIN
+  #define E1_SERIAL_TX_PIN                    20
+#endif
+#ifndef E1_SERIAL_RX_PIN
+  #define E1_SERIAL_RX_PIN                    12
+#endif
+
+#include "pins_RAMPS.h"