diff --git a/keyboards/cannonkeys/an_c/config.h b/keyboards/cannonkeys/an_c/config.h
index 7f8d7e8ff6..fd73aad8b0 100644
--- a/keyboards/cannonkeys/an_c/config.h
+++ b/keyboards/cannonkeys/an_c/config.h
@@ -49,11 +49,8 @@ along with this program. If not, see .
#define LOCKING_RESYNC_ENABLE
#define RGBLIGHT_ANIMATIONS
-
-#define WS2812_LED_N 14
-#define RGBLED_NUM WS2812_LED_N
-#define PORT_WS2812 GPIOB
-#define PIN_WS2812 15
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 14
#define WS2812_SPI SPID2
// Backlight config starts after VIA's EEPROM usage,
diff --git a/keyboards/cannonkeys/an_c/rules.mk b/keyboards/cannonkeys/an_c/rules.mk
index 7ae14c4986..4c432cf98f 100644
--- a/keyboards/cannonkeys/an_c/rules.mk
+++ b/keyboards/cannonkeys/an_c/rules.mk
@@ -21,6 +21,7 @@ NKRO_ENABLE = yes # USB Nkey Rollover
CUSTOM_MATRIX = no # Custom matrix file
# BACKLIGHT_ENABLE = yes # This is broken on 072 for some reason
RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = spi
LAYOUTS = 60_ansi 60_tsangan_hhkb
diff --git a/keyboards/cannonkeys/bluepill/keyboard.c b/keyboards/cannonkeys/bluepill/keyboard.c
index de00158813..c2e5946d45 100644
--- a/keyboards/cannonkeys/bluepill/keyboard.c
+++ b/keyboards/cannonkeys/bluepill/keyboard.c
@@ -14,20 +14,7 @@
#endif
void matrix_init_kb(void){
- /* MOSI pin*/
- palSetPadMode(GPIOB, 15, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
LED_ON();
wait_ms(500);
LED_OFF();
-
-#ifdef RGBLIGHT_ENABLE
- leds_init();
-#endif
-}
-
-void matrix_scan_kb(void)
-{
- #ifdef RGBLIGHT_ENABLE
- rgblight_task();
- #endif
}
diff --git a/keyboards/cannonkeys/bluepill/ws2812.h b/keyboards/cannonkeys/bluepill/ws2812.h
deleted file mode 100644
index be37df7668..0000000000
--- a/keyboards/cannonkeys/bluepill/ws2812.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include "hal.h"
-#include "color.h"
-
-
-void set_leds_color_rgb(LED_TYPE color);
-void set_led_color_rgb(LED_TYPE color, int pos);
-void leds_init(void);
-
-
- // This is what users will use to interface with this
-void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds);
-void ws2812_setleds_rgbw(LED_TYPE *ledarray, uint16_t number_of_leds);
-
-
-void WS2812_init(void);
-void WS2812_set_color( uint8_t index, uint8_t red, uint8_t green, uint8_t blue );
-void WS2812_set_color_all( uint8_t red, uint8_t green, uint8_t blue );
-void WS2812_send_colors(void);
diff --git a/keyboards/cannonkeys/instant60/config.h b/keyboards/cannonkeys/instant60/config.h
index 6f8f6bd011..1c43251877 100644
--- a/keyboards/cannonkeys/instant60/config.h
+++ b/keyboards/cannonkeys/instant60/config.h
@@ -49,11 +49,8 @@ along with this program. If not, see .
#define LOCKING_RESYNC_ENABLE
#define RGBLIGHT_ANIMATIONS
-
-#define WS2812_LED_N 14
-#define RGBLED_NUM WS2812_LED_N
-#define PORT_WS2812 GPIOB
-#define PIN_WS2812 15
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 14
#define WS2812_SPI SPID2
// Backlight config starts after VIA's EEPROM usage,
diff --git a/keyboards/cannonkeys/instant60/rules.mk b/keyboards/cannonkeys/instant60/rules.mk
index 7ae14c4986..4c432cf98f 100644
--- a/keyboards/cannonkeys/instant60/rules.mk
+++ b/keyboards/cannonkeys/instant60/rules.mk
@@ -21,6 +21,7 @@ NKRO_ENABLE = yes # USB Nkey Rollover
CUSTOM_MATRIX = no # Custom matrix file
# BACKLIGHT_ENABLE = yes # This is broken on 072 for some reason
RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = spi
LAYOUTS = 60_ansi 60_tsangan_hhkb
diff --git a/keyboards/cannonkeys/ortho48/config.h b/keyboards/cannonkeys/ortho48/config.h
index bab0b95c06..c3b9dee186 100644
--- a/keyboards/cannonkeys/ortho48/config.h
+++ b/keyboards/cannonkeys/ortho48/config.h
@@ -52,14 +52,10 @@ along with this program. If not, see .
#define LOCKING_RESYNC_ENABLE
#define RGBLIGHT_ANIMATIONS
-
-#define WS2812_LED_N 9
-#define RGBLED_NUM WS2812_LED_N
-#define PORT_WS2812 GPIOB
-#define PIN_WS2812 15
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 9
#define WS2812_SPI SPID2
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/cannonkeys/ortho48/rules.mk b/keyboards/cannonkeys/ortho48/rules.mk
index 9c9b79e425..f2fc3e128e 100644
--- a/keyboards/cannonkeys/ortho48/rules.mk
+++ b/keyboards/cannonkeys/ortho48/rules.mk
@@ -22,6 +22,7 @@ SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = spi
LAYOUTS = ortho_4x12
diff --git a/keyboards/cannonkeys/ortho60/config.h b/keyboards/cannonkeys/ortho60/config.h
index acfc2b53aa..7e3ef879bc 100644
--- a/keyboards/cannonkeys/ortho60/config.h
+++ b/keyboards/cannonkeys/ortho60/config.h
@@ -52,14 +52,10 @@ along with this program. If not, see .
#define LOCKING_RESYNC_ENABLE
#define RGBLIGHT_ANIMATIONS
-
-#define WS2812_LED_N 16
-#define RGBLED_NUM WS2812_LED_N
-#define PORT_WS2812 GPIOB
-#define PIN_WS2812 15
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 16
#define WS2812_SPI SPID2
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/cannonkeys/ortho60/rules.mk b/keyboards/cannonkeys/ortho60/rules.mk
index 7355fbf936..aaa14c2dbe 100644
--- a/keyboards/cannonkeys/ortho60/rules.mk
+++ b/keyboards/cannonkeys/ortho60/rules.mk
@@ -22,6 +22,7 @@ SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = spi
LAYOUTS = ortho_5x12
diff --git a/keyboards/cannonkeys/ortho75/config.h b/keyboards/cannonkeys/ortho75/config.h
index 6e3651a83e..8c1882e65d 100644
--- a/keyboards/cannonkeys/ortho75/config.h
+++ b/keyboards/cannonkeys/ortho75/config.h
@@ -55,14 +55,10 @@ along with this program. If not, see .
#define LOCKING_RESYNC_ENABLE
#define RGBLIGHT_ANIMATIONS
-
-#define WS2812_LED_N 16
-#define RGBLED_NUM WS2812_LED_N
-#define PORT_WS2812 GPIOB
-#define PIN_WS2812 15
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 16
#define WS2812_SPI SPID2
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/cannonkeys/ortho75/rules.mk b/keyboards/cannonkeys/ortho75/rules.mk
index 8acb50d0ce..fe9cec84c1 100644
--- a/keyboards/cannonkeys/ortho75/rules.mk
+++ b/keyboards/cannonkeys/ortho75/rules.mk
@@ -22,6 +22,7 @@ SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = spi
ENCODER_ENABLE = yes
LAYOUTS = ortho_5x15
diff --git a/keyboards/cannonkeys/practice60/config.h b/keyboards/cannonkeys/practice60/config.h
index ec16e39b3b..d17b7f04dd 100644
--- a/keyboards/cannonkeys/practice60/config.h
+++ b/keyboards/cannonkeys/practice60/config.h
@@ -52,14 +52,10 @@ along with this program. If not, see .
#define LOCKING_RESYNC_ENABLE
#define RGBLIGHT_ANIMATIONS
-
-#define WS2812_LED_N 9
-#define RGBLED_NUM WS2812_LED_N
-#define PORT_WS2812 GPIOB
-#define PIN_WS2812 15
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 9
#define WS2812_SPI SPID2
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/cannonkeys/practice60/rules.mk b/keyboards/cannonkeys/practice60/rules.mk
index 0eacb9c7be..3959137368 100644
--- a/keyboards/cannonkeys/practice60/rules.mk
+++ b/keyboards/cannonkeys/practice60/rules.mk
@@ -22,6 +22,7 @@ SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = spi
LAYOUTS = 60_ansi
diff --git a/keyboards/cannonkeys/practice65/config.h b/keyboards/cannonkeys/practice65/config.h
index 346af8ff33..d08d92e4cd 100644
--- a/keyboards/cannonkeys/practice65/config.h
+++ b/keyboards/cannonkeys/practice65/config.h
@@ -52,14 +52,10 @@ along with this program. If not, see .
#define LOCKING_RESYNC_ENABLE
#define RGBLIGHT_ANIMATIONS
-
-#define WS2812_LED_N 20
-#define RGBLED_NUM WS2812_LED_N
-#define PORT_WS2812 GPIOB
-#define PIN_WS2812 15
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 20
#define WS2812_SPI SPID2
-
/*
* Feature disable options
* These options are also useful to firmware size reduction.
diff --git a/keyboards/cannonkeys/practice65/rules.mk b/keyboards/cannonkeys/practice65/rules.mk
index 90a339bb39..d6d2b3fe7e 100644
--- a/keyboards/cannonkeys/practice65/rules.mk
+++ b/keyboards/cannonkeys/practice65/rules.mk
@@ -22,7 +22,7 @@ SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = yes
RGBLIGHT_ENABLE = yes
-
+WS2812_DRIVER = spi
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/savage65/config.h b/keyboards/cannonkeys/savage65/config.h
index 0839c0111e..9c4dbdec42 100644
--- a/keyboards/cannonkeys/savage65/config.h
+++ b/keyboards/cannonkeys/savage65/config.h
@@ -49,11 +49,8 @@ along with this program. If not, see .
#define LOCKING_RESYNC_ENABLE
#define RGBLIGHT_ANIMATIONS
-
-#define WS2812_LED_N 20
-#define RGBLED_NUM WS2812_LED_N
-#define PORT_WS2812 GPIOB
-#define PIN_WS2812 15
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 20
#define WS2812_SPI SPID2
// Backlight config starts after VIA's EEPROM usage,
diff --git a/keyboards/cannonkeys/savage65/rules.mk b/keyboards/cannonkeys/savage65/rules.mk
index bf4b9a2897..86f6b4e0f4 100644
--- a/keyboards/cannonkeys/savage65/rules.mk
+++ b/keyboards/cannonkeys/savage65/rules.mk
@@ -21,7 +21,7 @@ NKRO_ENABLE = yes # USB Nkey Rollover
CUSTOM_MATRIX = no # Custom matrix file
# BACKLIGHT_ENABLE = yes # This is broken on 072 for some reason
RGBLIGHT_ENABLE = yes
-
+WS2812_DRIVER = spi
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/cannonkeys/stm32f072/keyboard.c b/keyboards/cannonkeys/stm32f072/keyboard.c
index fdda018fc4..39f912506d 100644
--- a/keyboards/cannonkeys/stm32f072/keyboard.c
+++ b/keyboards/cannonkeys/stm32f072/keyboard.c
@@ -5,8 +5,6 @@
#include "util.h"
#include "quantum.h"
-#include "ws2812.h"
-
#include "raw_hid.h"
#include "dynamic_keymap.h"
#include "tmk_core/common/eeprom.h"
@@ -58,25 +56,11 @@ void matrix_init_kb(void){
via_init_kb();
via_eeprom_set_valid(true);
#endif // VIA_ENABLE
- /* MOSI pin*/
-#ifdef RGBLIGHT_ENABLE
- palSetPadMode(PORT_WS2812, PIN_WS2812, PAL_MODE_ALTERNATE(0));
- wait_ms(500);
- leds_init();
-#endif
backlight_init_ports();
matrix_init_board();
}
-void matrix_scan_kb(void)
-{
- #ifdef RGBLIGHT_ENABLE
- rgblight_task();
- #endif
- matrix_scan_user();
-}
-
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case BL_INC:
diff --git a/keyboards/cannonkeys/stm32f072/ws2812.h b/keyboards/cannonkeys/stm32f072/ws2812.h
deleted file mode 100644
index 9b545fcd53..0000000000
--- a/keyboards/cannonkeys/stm32f072/ws2812.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#pragma once
-
-#include "hal.h"
-#include "color.h"
-
-void set_leds_color_rgb(LED_TYPE color);
-void set_led_color_rgb(LED_TYPE color, int pos);
-void leds_init(void);
-
-
- // This is what users will use to interface with this
-void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds);
-void ws2812_setleds_rgbw(LED_TYPE *ledarray, uint16_t number_of_leds);
-
-
-void WS2812_init(void);
-void WS2812_set_color( uint8_t index, uint8_t red, uint8_t green, uint8_t blue );
-void WS2812_set_color_all( uint8_t red, uint8_t green, uint8_t blue );
-void WS2812_send_colors(void);
diff --git a/keyboards/cannonkeys/tmov2/config.h b/keyboards/cannonkeys/tmov2/config.h
index d8d95ae552..ef8d768f62 100644
--- a/keyboards/cannonkeys/tmov2/config.h
+++ b/keyboards/cannonkeys/tmov2/config.h
@@ -49,12 +49,10 @@ along with this program. If not, see .
#define LOCKING_RESYNC_ENABLE
#define RGBLIGHT_ANIMATIONS
-
-#define WS2812_LED_N 22
-#define RGBLED_NUM WS2812_LED_N
-#define PORT_WS2812 GPIOB
-#define PIN_WS2812 15
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 22
#define WS2812_SPI SPID2
+#define WS2812_SPI_MOSI_PAL_MODE 0
// Backlight config starts after VIA's EEPROM usage,
// dynamic keymaps start after this.
diff --git a/keyboards/cannonkeys/tmov2/rules.mk b/keyboards/cannonkeys/tmov2/rules.mk
index 7d29079c37..686970ef82 100644
--- a/keyboards/cannonkeys/tmov2/rules.mk
+++ b/keyboards/cannonkeys/tmov2/rules.mk
@@ -21,7 +21,7 @@ NKRO_ENABLE = yes # USB Nkey Rollover
CUSTOM_MATRIX = no # Custom matrix file
# BACKLIGHT_ENABLE = yes # This is broken on 072 right now
RGBLIGHT_ENABLE = yes
-
+WS2812_DRIVER = spi
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
diff --git a/keyboards/projectkb/alice/config.h b/keyboards/projectkb/alice/config.h
index 262abdeb18..61648dc7db 100644
--- a/keyboards/projectkb/alice/config.h
+++ b/keyboards/projectkb/alice/config.h
@@ -49,11 +49,8 @@ along with this program. If not, see .
#define LOCKING_RESYNC_ENABLE
#define RGBLIGHT_ANIMATIONS
-
-#define WS2812_LED_N 14
-#define RGBLED_NUM WS2812_LED_N
-#define PORT_WS2812 GPIOB
-#define PIN_WS2812 15
+#define RGB_DI_PIN B15
+#define RGBLED_NUM 14
#define WS2812_SPI SPID2
// Backlight config starts after VIA's EEPROM usage,
diff --git a/keyboards/projectkb/alice/rules.mk b/keyboards/projectkb/alice/rules.mk
index 503bc7ad70..3bb6531af6 100644
--- a/keyboards/projectkb/alice/rules.mk
+++ b/keyboards/projectkb/alice/rules.mk
@@ -21,6 +21,7 @@ NKRO_ENABLE = yes # USB Nkey Rollover
CUSTOM_MATRIX = no # Custom matrix file
# BACKLIGHT_ENABLE = yes # This is broken on 072 for some reason
RGBLIGHT_ENABLE = yes
+WS2812_DRIVER = spi
# RAW_ENABLE = yes
# DYNAMIC_KEYMAP_ENABLE = yes