From 732d1dd4f6f9ec060b4b8332309c82ebb6c3ca25 Mon Sep 17 00:00:00 2001
From: Jonathan Rascher <jon@bcat.name>
Date: Sun, 3 Nov 2019 16:30:15 -0600
Subject: [PATCH] Fix KBDPad MKI backlight, Num Lock LEDs; clean up firmware a
 bit (#6883)

* Update keyboard kit URL

* Replace custom RGB driver with new one from #7183

* Replace backlight with standard impl

* Remove some unnecessary default settings

* Disable COMMAND since docs want it off by default

(There's no working IS_COMMAND set for this board anyway, so it's
already a nop.)
---
 keyboards/kbdfans/kbdpad/mk1/config.h  |  9 ++--
 keyboards/kbdfans/kbdpad/mk1/info.json |  4 +-
 keyboards/kbdfans/kbdpad/mk1/mk1.c     | 71 +++-----------------------
 keyboards/kbdfans/kbdpad/mk1/readme.md |  2 +-
 keyboards/kbdfans/kbdpad/mk1/rules.mk  |  8 ++-
 5 files changed, 17 insertions(+), 77 deletions(-)

diff --git a/keyboards/kbdfans/kbdpad/mk1/config.h b/keyboards/kbdfans/kbdpad/mk1/config.h
index 2c55d2aef0..1f0b371af0 100644
--- a/keyboards/kbdfans/kbdpad/mk1/config.h
+++ b/keyboards/kbdfans/kbdpad/mk1/config.h
@@ -27,12 +27,13 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_ROWS 6
 #define MATRIX_COLS 4
 
-//                        0   1   2   3   4   5   
 #define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5 }
 #define MATRIX_COL_PINS { A0, A1, A2, A3 }
-#define UNUSED_PINS
 
 #define DIODE_DIRECTION COL2ROW
-#define DEBOUNCE 5
 
-#define BACKLIGHT_LEVELS 1
+#define BACKLIGHT_PIN D4
+#define BACKLIGHT_BREATHING
+
+#define RGBLIGHT_ANIMATIONS
+#define RGBLED_NUM 6
diff --git a/keyboards/kbdfans/kbdpad/mk1/info.json b/keyboards/kbdfans/kbdpad/mk1/info.json
index 426a23b8d5..4f0da62e83 100644
--- a/keyboards/kbdfans/kbdpad/mk1/info.json
+++ b/keyboards/kbdfans/kbdpad/mk1/info.json
@@ -1,6 +1,6 @@
 {
-  "keyboard_name": "KBDFans KBDPad MKI", 
-  "url": "", 
+  "keyboard_name": "KBDfans KBDPad MKI", 
+  "url": "https://kbdfans.com/products/kbdfans-pad-custom-mechanical-keyboard-diy-kit", 
   "maintainer": "qmk", 
   "width": 4, 
   "height": 6.25, 
diff --git a/keyboards/kbdfans/kbdpad/mk1/mk1.c b/keyboards/kbdfans/kbdpad/mk1/mk1.c
index c17cb00848..71a47b7ba9 100644
--- a/keyboards/kbdfans/kbdpad/mk1/mk1.c
+++ b/keyboards/kbdfans/kbdpad/mk1/mk1.c
@@ -13,76 +13,17 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-#include "i2c_master.h"
+
 #include "quantum.h"
 
-#ifdef RGBLIGHT_ENABLE
-#include "rgblight.h"
-extern rgblight_config_t rgblight_config;
-
-void rgblight_set(void) {
-    if (!rgblight_config.enable) {
-        for (uint8_t i = 0; i < RGBLED_NUM; i++) {
-            led[i].r = 0;
-            led[i].g = 0;
-            led[i].b = 0;
-        }
-    }
-
-    i2c_init();
-    i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
-}
-#endif
+#define NUMLOCK_PIN D0
 
 void matrix_init_kb(void) {
-#ifdef RGBLIGHT_ENABLE
-    if (rgblight_config.enable) {
-        i2c_init();
-        i2c_transmit(0xb0, (uint8_t*)led, 3 * RGBLED_NUM, 100);
-    }
-#endif
-    // call user level keymaps, if any
+    setPinOutput(NUMLOCK_PIN);
     matrix_init_user();
 }
 
-void matrix_scan_kb(void) {
-#ifdef RGBLIGHT_ENABLE
-    rgblight_task();
-#endif
-    matrix_scan_user();
-    /* Nothing else for now. */
+void led_set_kb(uint8_t usb_led) {
+    writePin(NUMLOCK_PIN, IS_LED_ON(usb_led, USB_LED_NUM_LOCK));
+    led_set_user(usb_led);
 }
-
-__attribute__ ((weak))
-void matrix_scan_user(void) {
-}
-
-void backlight_init_ports(void) {
-    // initialize pins D0, D1, D4 and D6 as output
-    setPinOutput(D0);
-    setPinOutput(D1);
-    setPinOutput(D4);
-    setPinOutput(D6);
-
-    // turn backlight LEDs on
-    writePinHigh(D0);
-    writePinHigh(D1);
-    writePinHigh(D4);
-    writePinHigh(D6);
-}
-
-void backlight_set(uint8_t level) {
-	if (level == 0) {
-        // turn backlight LEDs off
-        writePinLow(D0);
-        writePinLow(D1);
-        writePinLow(D4);
-        writePinLow(D6);
-	} else {
-        // turn backlight LEDs on
-        writePinHigh(D0);
-        writePinHigh(D1);
-        writePinHigh(D4);
-        writePinHigh(D6);
-	}
-}
\ No newline at end of file
diff --git a/keyboards/kbdfans/kbdpad/mk1/readme.md b/keyboards/kbdfans/kbdpad/mk1/readme.md
index 569fb88a22..e808d89347 100644
--- a/keyboards/kbdfans/kbdpad/mk1/readme.md
+++ b/keyboards/kbdfans/kbdpad/mk1/readme.md
@@ -4,7 +4,7 @@ Custom numpad.
 
 Keyboard Maintainer: [MechMerlin](https://github.com/mechmerlin)  
 Hardware Supported: KBDPad MKI  
-Hardware Availability: No longer available. 
+Hardware Availability: [KBDfans](https://kbdfans.com/products/kbdfans-pad-custom-mechanical-keyboard-diy-kit)
 
 
 Make example for this keyboard (after setting up your build environment):
diff --git a/keyboards/kbdfans/kbdpad/mk1/rules.mk b/keyboards/kbdfans/kbdpad/mk1/rules.mk
index e43baee5c5..f1f740760a 100644
--- a/keyboards/kbdfans/kbdpad/mk1/rules.mk
+++ b/keyboards/kbdfans/kbdpad/mk1/rules.mk
@@ -31,11 +31,9 @@ BOOTMAGIC_ENABLE = no
 MOUSEKEY_ENABLE = yes
 EXTRAKEY_ENABLE = yes
 CONSOLE_ENABLE = yes
-COMMAND_ENABLE = yes
+COMMAND_ENABLE = no
 BACKLIGHT_ENABLE = yes
-RGBLIGHT_ENABLE = no
-RGBLIGHT_CUSTOM_DRIVER = no
+RGBLIGHT_ENABLE = no  # PCB has underglow LEDs, but case doesn't let them show.
+WS2812_DRIVER = i2c
 
 OPT_DEFS = -DDEBUG_LEVEL=0
-
-QUANTUM_LIB_SRC = i2c_master.c