From 82fb0460132a6b42491fb578045e573ef68b6a56 Mon Sep 17 00:00:00 2001
From: InsanityAutomation
 <38436470+InsanityAutomation@users.noreply.github.com>
Date: Thu, 24 Oct 2019 15:07:28 -0400
Subject: [PATCH] Allow suicide pin inverting (#15586)

---
 Marlin/src/Marlin.cpp                       |  2 +-
 Marlin/src/Marlin.h                         |  2 +-
 Marlin/src/gcode/control/M80_M81.cpp        |  2 +-
 Marlin/src/pins/pins.h                      |  3 +++
 Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h | 26 +++++++++++++++------
 5 files changed, 25 insertions(+), 10 deletions(-)

diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index 3ef57766e2..62bc10ee07 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -217,7 +217,7 @@ void setup_killpin() {
 
 void setup_powerhold() {
   #if HAS_SUICIDE
-    OUT_WRITE(SUICIDE_PIN, HIGH);
+    OUT_WRITE(SUICIDE_PIN, !SUICIDE_PIN_INVERTING);
   #endif
   #if ENABLED(PSU_CONTROL)
     #if ENABLED(PS_DEFAULT_OFF)
diff --git a/Marlin/src/Marlin.h b/Marlin/src/Marlin.h
index b036e81147..9887dbebd7 100644
--- a/Marlin/src/Marlin.h
+++ b/Marlin/src/Marlin.h
@@ -368,7 +368,7 @@ bool pin_is_protected(const pin_t pin);
 void protected_pin_err();
 
 #if HAS_SUICIDE
-  inline void suicide() { OUT_WRITE(SUICIDE_PIN, LOW); }
+  inline void suicide() { OUT_WRITE(SUICIDE_PIN, SUICIDE_PIN_INVERTING); }
 #endif
 
 #if ENABLED(G29_RETRY_AND_RECOVER)
diff --git a/Marlin/src/gcode/control/M80_M81.cpp b/Marlin/src/gcode/control/M80_M81.cpp
index 9b27b5e4e2..28d335e816 100644
--- a/Marlin/src/gcode/control/M80_M81.cpp
+++ b/Marlin/src/gcode/control/M80_M81.cpp
@@ -68,7 +68,7 @@
      * a print without suicide...
      */
     #if HAS_SUICIDE
-      OUT_WRITE(SUICIDE_PIN, HIGH);
+      OUT_WRITE(SUICIDE_PIN, !SUICIDE_PIN_INVERTING);
     #endif
 
     #if DISABLED(AUTO_POWER_CONTROL)
diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h
index 7f6833080b..83b226b865 100644
--- a/Marlin/src/pins/pins.h
+++ b/Marlin/src/pins/pins.h
@@ -801,6 +801,9 @@
 #ifndef SUICIDE_PIN
   #define SUICIDE_PIN -1
 #endif
+#ifndef SUICIDE_PIN_INVERTING
+  #define SUICIDE_PIN_INVERTING false
+#endif
 
 #ifndef NUM_SERVO_PLUGS
   #define NUM_SERVO_PLUGS 4
diff --git a/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h b/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h
index 379d2b4716..1328354b7d 100644
--- a/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h
+++ b/Marlin/src/pins/ramps/pins_RAMPS_CREALITY.h
@@ -36,15 +36,27 @@
 
 #define FIL_RUNOUT_PIN 2
 #if NUM_RUNOUT_SENSORS > 1
-  #define FIL_RUNOUT2_PIN 15 // Creality CR-X can use dual runout sensors
+  #define FIL_RUNOUT2_PIN  15 // Creality CR-X can use dual runout sensors
 #endif
 
-#define SD_DETECT_PIN 49  // Always define onboard SD detect
-#define BEEPER_PIN    37  // Always define beeper pin so Play Tone works with ExtUI
+#define SD_DETECT_PIN      49  // Always define onboard SD detect
+
+#define PS_ON_PIN          40 // Used by CR2020 Industrial series
+
+#if ENABLED(CASE_LIGHT_ENABLE) && !defined(CASE_LIGHT_PIN)
+  #define CASE_LIGHT_PIN   65
+#endif
 
 #include "pins_RAMPS.h"
 
-#define EXP1_PIN 65   // A11
-#define EXP2_PIN 66   // A12
-#define EXP3_PIN 11   // SERVO0_PIN
-#define EXP4_PIN 12   // PS_ON_PIN
+#ifndef BEEPER_PIN
+  #define BEEPER_PIN       37  // Always define beeper pin so Play Tone works with ExtUI
+#endif
+
+#define EXP1_PIN           65   // A11 - Used by CR2020 Industrial series for case
+#define EXP2_PIN           66   // A12
+#define EXP3_PIN           11   // SERVO0_PIN
+#define EXP4_PIN           12   // PS_ON_PIN
+
+#define SUICIDE_PIN        12 // Used by CR2020 Industrial series
+#define SUICIDE_PIN_INVERTING true // Used by CR2020 Industrial series
-- 
GitLab