aboutsummaryrefslogtreecommitdiff
path: root/keyboards
diff options
context:
space:
mode:
authorRyan <[email protected]>2024-10-06 19:01:07 +1100
committerGitHub <[email protected]>2024-10-06 21:01:07 +1300
commit208ebf54a905ce6e4e563a6811eca8c8dc8b17e1 (patch)
tree7bb6a8bdb5a641263c39236d0b655825ac37307b /keyboards
parent43e82ed5c72b7386ca91d1bd363ee092f77c1b9a (diff)
downloadqmk_firmware-208ebf54a905ce6e4e563a6811eca8c8dc8b17e1.tar.gz
qmk_firmware-208ebf54a905ce6e4e563a6811eca8c8dc8b17e1.zip
WS2812 API rework (#24364)
* Begin WS2812 API rework * Move RGBW conversion, clean up color.h, fix RGBW for AVR bitbang * Formatting & update PS2AVRGB I2C driver (untested) * Tested ARM bitbang RGB+RGBW * Tested ARM SPI RGB - RGBW not working * Tested ARM PWM RGB+RGBW * Tested RP2040 PIO driver RGB+RGBW * Update RGBLight * Formatting * Fix BM60HSRGB rev2 * Fix oddforge/vea * Fix 1k and XD002 RGBLite * Fix model_m/mschwingen * Fix handwired/promethium * Rename `WS2812_LED_TOTAL` for BM60HSRGB * Fix work_louder boards * Fix dawn60 * Fix rgbkb/pan * Fix neson_design/700e and n6 * Fix ergodox_ez/shine * ergodox_ez/shine: invert indices for left half * Fix matrix/abelx * Fix matrix/m20add * Remove custom rgblight driver for matrix/noah - should be done with lighting layers * Fix LED indexes for RGBLight split * Rename `convert_rgb_to_rgbw()` to `ws2812_rgb_to_rgbw()` * Update WS2812 API docs * `ergodox_ez/shine`: simplify LED index calculation * LED/RGB Matrix: Add weak function for LED index resolution * Bandaid fix for RGB Matrix splits not using WS2812 * `steelseries/prime_plus`: redo custom RGBLight driver * Update keyboards/steelseries/prime_plus/rgblight_custom.c Co-authored-by: Dasky <[email protected]> --------- Co-authored-by: Dasky <[email protected]>
Diffstat (limited to 'keyboards')
-rw-r--r--keyboards/1k/config.h2
-rw-r--r--keyboards/1k/keymaps/default/rgblite.h4
-rw-r--r--keyboards/ergodox_ez/post_config.h2
-rw-r--r--keyboards/ergodox_ez/shine/rgblight_custom.c82
-rw-r--r--keyboards/handwired/promethium/config.h1
-rw-r--r--keyboards/handwired/promethium/rgbsps.c8
-rw-r--r--keyboards/ibm/model_m/mschwingen/config.h1
-rw-r--r--keyboards/ibm/model_m/mschwingen/mschwingen.c65
-rw-r--r--keyboards/input_club/ergodox_infinity/ergodox_infinity.c4
-rwxr-xr-xkeyboards/keychron/q11/ansi_encoder/ansi_encoder.c4
-rwxr-xr-xkeyboards/keychron/q11/iso_encoder/iso_encoder.c4
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/config.h6
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/rev2.c26
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h6
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c26
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h6
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c26
-rw-r--r--keyboards/matrix/abelx/abelx.c45
-rw-r--r--keyboards/matrix/abelx/config.h1
-rw-r--r--keyboards/matrix/m20add/m20add.c7
-rw-r--r--keyboards/matrix/m20add/rgb_ring.c19
-rw-r--r--keyboards/matrix/m20add/rgb_ring.h1
-rw-r--r--keyboards/matrix/noah/keyboard.json2
-rw-r--r--keyboards/matrix/noah/noah.c57
-rw-r--r--keyboards/neson_design/700e/700e.c61
-rw-r--r--keyboards/neson_design/700e/config.h1
-rw-r--r--keyboards/neson_design/n6/config.h1
-rw-r--r--keyboards/neson_design/n6/n6.c61
-rw-r--r--keyboards/oddforge/vea/ws2812_custom.c21
-rw-r--r--keyboards/orthograph/orthograph.c3
-rw-r--r--keyboards/rgbkb/pan/config.h1
-rw-r--r--keyboards/rgbkb/pan/pan.c28
-rw-r--r--keyboards/steelseries/prime_plus/rgblight_custom.c60
-rw-r--r--keyboards/wilba_tech/wt_rgb_backlight.c18
-rw-r--r--keyboards/work_louder/rgb_functions.c10
-rw-r--r--keyboards/xelus/dawn60/rev1/config.h2
-rw-r--r--keyboards/xelus/dawn60/rev1_qmk/config.h4
-rw-r--r--keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c14
-rw-r--r--keyboards/xiudi/xd002/keymaps/rgb_lite/config.h3
-rw-r--r--keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h6
40 files changed, 325 insertions, 374 deletions
diff --git a/keyboards/1k/config.h b/keyboards/1k/config.h
index 0d0cd3712a..fcd7fe6f94 100644
--- a/keyboards/1k/config.h
+++ b/keyboards/1k/config.h
@@ -32,3 +32,5 @@
#define USB_INTR_ENABLE_BIT PCIE
#define USB_INTR_PENDING_BIT PCIF
#define USB_INTR_VECTOR SIG_PIN_CHANGE
+
+#define WS2812_LED_COUNT 1
diff --git a/keyboards/1k/keymaps/default/rgblite.h b/keyboards/1k/keymaps/default/rgblite.h
index 2e0b898699..b30ec26b04 100644
--- a/keyboards/1k/keymaps/default/rgblite.h
+++ b/keyboards/1k/keymaps/default/rgblite.h
@@ -11,8 +11,8 @@ static inline void rgblite_init(void) {
}
static inline void rgblite_setrgb(RGB rgb) {
- rgb_led_t leds[RGBLIGHT_LED_COUNT] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}};
- ws2812_setleds(leds, RGBLIGHT_LED_COUNT);
+ ws2812_set_color_all(rgb.r, rgb.g, rgb.b);
+ ws2812_flush();
}
static void rgblite_increase_hue(void) {
diff --git a/keyboards/ergodox_ez/post_config.h b/keyboards/ergodox_ez/post_config.h
index eb22439ae4..e94fda0f06 100644
--- a/keyboards/ergodox_ez/post_config.h
+++ b/keyboards/ergodox_ez/post_config.h
@@ -33,8 +33,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef ERGODOX_LED_30
// If using 30 LEDs, then define that many
+# define WS2812_LED_COUNT 30
# define RGBLIGHT_LED_COUNT 30 // Number of LEDs
#else
// If not, then only define 15
+# define WS2812_LED_COUNT 15
# define RGBLIGHT_LED_COUNT 15 // Number of LEDs
#endif
diff --git a/keyboards/ergodox_ez/shine/rgblight_custom.c b/keyboards/ergodox_ez/shine/rgblight_custom.c
index 29060e76fc..8e806b1fd1 100644
--- a/keyboards/ergodox_ez/shine/rgblight_custom.c
+++ b/keyboards/ergodox_ez/shine/rgblight_custom.c
@@ -21,47 +21,55 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "ergodox_ez.h"
#include "ws2812.h"
-void setleds_custom(rgb_led_t *led, uint16_t led_num) {
- uint16_t length = 0;
- int i = 0;
- int j = 0;
-# ifdef WS2812_RGBW
- int bytes_per_led = 4;
-# else
- int bytes_per_led = 3;
-# endif
-# if defined(ERGODOX_LED_30)
- // prevent right-half code from trying to bitbang all 30
- // so with 30 LEDs, we count from 29 to 15 here, and the
- // other half does 0 to 14.
- uint8_t half_led_num = RGBLIGHT_LED_COUNT / 2;
- length = half_led_num * bytes_per_led;
- uint8_t data[length];
- for (i = half_led_num + half_led_num - 1; i >= half_led_num; --i)
-# elif defined(ERGODOX_LED_15_MIRROR)
- length = led_num * bytes_per_led;
- uint8_t data[length];
- for (i = 0; i < led_num; ++i)
-# else // ERGDOX_LED_15 non-mirrored
- length = led_num * bytes_per_led;
- uint8_t data[length];
- for (i = led_num - 1; i >= 0; --i)
-# endif
- {
- uint8_t *data_byte = (uint8_t *)(led + i);
- data[j++] = data_byte[0];
- data[j++] = data_byte[1];
- data[j++] = data_byte[2];
-#ifdef WS2812_RGBW
- data[j++] = data_byte[3];
+#define WS2812_I2C_ADDRESS_LEFT 0x84
+
+#if defined(ERGODOX_LED_30)
+# define WS2812_LED_COUNT_LEFT (RGBLIGHT_LED_COUNT / 2)
+ws2812_led_t ws2812_leds_left[WS2812_LED_COUNT_LEFT];
+#else
+# define WS2812_LED_COUNT_LEFT RGBLIGHT_LED_COUNT
+ws2812_led_t ws2812_leds_left[WS2812_LED_COUNT_LEFT];
+#endif
+
+void set_color_left(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ ws2812_leds_left[index].r = red;
+ ws2812_leds_left[index].g = green;
+ ws2812_leds_left[index].b = blue;
+#if defined(WS2812_RGBW)
+ ws2812_rgb_to_rgbw(&ws2812_leds_left[index]);
+#endif
+}
+
+void set_color_custom(int index, uint8_t red, uint8_t green, uint8_t blue) {
+#if defined(ERGODOX_LED_30)
+ if (index < WS2812_LED_COUNT_LEFT) {
+ ws2812_set_color(index, red, green, blue);
+ } else {
+ set_color_left(RGBLIGHT_LED_COUNT - index - 1, red, green, blue);
+ }
+#elif defined(ERGODOX_LED_15_MIRROR)
+ ws2812_set_color(index, red, green, blue);
+ set_color_left(index, red, green, blue);
+#else
+ ws2812_set_color(index, red, green, blue);
+ set_color_left(WS2812_LED_COUNT_LEFT - index - 1, red, green, blue);
#endif
+}
+
+void set_color_all_custom(uint8_t red, uint8_t green, uint8_t blue) {
+ for (int i = 0; i < RGBLIGHT_LED_COUNT; i++) {
+ set_color_custom(i, red, green, blue);
}
- i2c_transmit(0x84, data, sizeof(data), ERGODOX_EZ_I2C_TIMEOUT);
+}
- ws2812_setleds(led, led_num);
+void flush_custom(void) {
+ i2c_transmit(WS2812_I2C_ADDRESS_LEFT, (uint8_t *)ws2812_leds_left, sizeof(ws2812_leds_left), ERGODOX_EZ_I2C_TIMEOUT);
+ ws2812_flush();
}
const rgblight_driver_t rgblight_driver = {
- .init = ws2812_init,
- .setleds = setleds_custom,
+ .init = ws2812_init,
+ .set_color = set_color_custom,
+ .set_color_all = set_color_all_custom,
+ .flush = flush_custom,
};
diff --git a/keyboards/handwired/promethium/config.h b/keyboards/handwired/promethium/config.h
index 342411a6b2..806726b5eb 100644
--- a/keyboards/handwired/promethium/config.h
+++ b/keyboards/handwired/promethium/config.h
@@ -155,6 +155,7 @@ enum led_sequence {
};
# define RGBSPS_NUM LED_TOTAL
+# define WS2812_LED_COUNT RGBSPS_NUM
#endif
/* PS/2 mouse */
diff --git a/keyboards/handwired/promethium/rgbsps.c b/keyboards/handwired/promethium/rgbsps.c
index 7dc26f4a5e..07ece69166 100644
--- a/keyboards/handwired/promethium/rgbsps.c
+++ b/keyboards/handwired/promethium/rgbsps.c
@@ -2,8 +2,6 @@
#include "ws2812.h"
#include "rgbsps.h"
-rgb_led_t led[RGBSPS_NUM];
-
void keyboard_pre_init_kb(void) {
ws2812_init();
@@ -11,9 +9,7 @@ void keyboard_pre_init_kb(void) {
}
void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b) {
- led[index].r = r;
- led[index].g = g;
- led[index].b = b;
+ ws2812_set_color(index, r, g, b);
}
void rgbsps_setall(uint8_t r, uint8_t g, uint8_t b) {
@@ -27,7 +23,7 @@ void rgbsps_turnoff(void) {
}
void rgbsps_send(void) {
- ws2812_setleds(led, RGBSPS_NUM);
+ ws2812_flush();
}
void rgbsps_sethsv(uint8_t index, uint16_t hue, uint8_t sat, uint8_t val) {
diff --git a/keyboards/ibm/model_m/mschwingen/config.h b/keyboards/ibm/model_m/mschwingen/config.h
index b34d29649a..19fb3fcd6f 100644
--- a/keyboards/ibm/model_m/mschwingen/config.h
+++ b/keyboards/ibm/model_m/mschwingen/config.h
@@ -65,6 +65,7 @@
# define MODELM_LED_SCROLLOCK MODELM_LED3
# define MODELM_LED_NUMLOCK MODELM_LED1
#elif defined(KEYBOARD_ibm_model_m_mschwingen_led_ws2812)
+# define WS2812_LED_COUNT 3
#else
# error one of MODELM_LEDS_FFC, MODELM_LEDS_WIRED or MODELM_LEDS_WS2812 must be set!
#endif
diff --git a/keyboards/ibm/model_m/mschwingen/mschwingen.c b/keyboards/ibm/model_m/mschwingen/mschwingen.c
index 7c0f1b2565..cb4854d8d1 100644
--- a/keyboards/ibm/model_m/mschwingen/mschwingen.c
+++ b/keyboards/ibm/model_m/mschwingen/mschwingen.c
@@ -39,27 +39,10 @@ static uint8_t isRecording = 0;
# if RGBLIGHT_LED_COUNT < 3
# error we need at least 3 RGB LEDs!
# endif
-static rgb_led_t led[RGBLIGHT_LED_COUNT] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}};
# define BRIGHT 32
# define DIM 6
-static const rgb_led_t black = {.r = 0, .g = 0, .b = 0};
-
-static const __attribute__((unused)) rgb_led_t green = {.r = 0, .g = BRIGHT, .b = 0};
-static const __attribute__((unused)) rgb_led_t lgreen = {.r = 0, .g = DIM, .b = 0};
-
-static const __attribute__((unused)) rgb_led_t red = {.r = BRIGHT, .g = 0, .b = 0};
-static const __attribute__((unused)) rgb_led_t lred = {.r = DIM, .g = 0, .b = 0};
-
-static const __attribute__((unused)) rgb_led_t blue = {.r = 0, .g = 0, .b = BRIGHT};
-static const __attribute__((unused)) rgb_led_t lblue = {.r = 0, .g = 0, .b = DIM};
-
-static const __attribute__((unused)) rgb_led_t turq = {.r = 0, .g = BRIGHT, .b = BRIGHT};
-static const __attribute__((unused)) rgb_led_t lturq = {.r = 0, .g = DIM, .b = DIM};
-
-static const __attribute__((unused)) rgb_led_t white = {.r = BRIGHT, .g = BRIGHT, .b = BRIGHT};
-
static led_t led_state;
static uint8_t layer;
static uint8_t default_layer;
@@ -81,17 +64,15 @@ void sleep_led_enable(void) {
suspend_active = true;
gpio_write_pin_low(MODELM_STATUS_LED);
#ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812
- led[0] = black;
- led[1] = black;
- led[2] = black;
- ws2812_setleds(led, RGBLIGHT_LED_COUNT);
+ ws2812_set_color_all(0, 0, 0);
+ ws2812_flush();
#endif
}
void keyboard_pre_init_kb(void) {
#ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812
ws2812_init();
- ws2812_setleds(led, RGBLIGHT_LED_COUNT);
+ ws2812_flush();
#else
/* Set status LEDs pins to output and Low (on) */
gpio_set_pin_output(MODELM_LED_CAPSLOCK);
@@ -121,35 +102,59 @@ void keyboard_pre_init_kb(void) {
#ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812
static void led_update_rgb(void) {
if (isRecording && blink_state) {
- led[0] = white;
+ ws2812_set_color(0, BRIGHT, BRIGHT, BRIGHT);
} else {
switch (default_layer) {
case 0:
- led[0] = led_state.num_lock ? blue : lblue;
+ if (led_state.num_lock) {
+ ws2812_set_color(0, 0, 0, BRIGHT);
+ } else {
+ ws2812_set_color(0, 0, 0, DIM);
+ }
break;
case 1:
- led[0] = led_state.num_lock ? green : black;
+ if (led_state.num_lock) {
+ ws2812_set_color(0, 0, BRIGHT, 0);
+ } else {
+ ws2812_set_color(0, 0, 0, 0);
+ }
break;
}
}
- led[1] = led_state.caps_lock ? green : black;
+ if (led_state.caps_lock) {
+ ws2812_set_color(1, 0, BRIGHT, 0);
+ } else {
+ ws2812_set_color(1, 0, 0, 0);
+ }
switch (layer) {
case 0:
case 1:
default:
- led[2] = led_state.scroll_lock ? green : black;
+ if (led_state.scroll_lock) {
+ ws2812_set_color(2, 0, BRIGHT, 0);
+ } else {
+ ws2812_set_color(2, 0, 0, 0);
+ }
break;
case 2:
- led[2] = led_state.scroll_lock ? red : lred;
+ if (led_state.scroll_lock) {
+ ws2812_set_color(2, BRIGHT, 0, 0);
+ } else {
+ ws2812_set_color(2, DIM, 0, 0);
+ }
break;
case 3:
- led[2] = led_state.scroll_lock ? turq : lturq;
+ if (led_state.scroll_lock) {
+ ws2812_set_color(2, 0, BRIGHT, BRIGHT);
+ } else {
+ ws2812_set_color(2, 0, DIM, DIM);
+ }
break;
}
if (!suspend_active) {
- ws2812_setleds(led, RGBLIGHT_LED_COUNT);
+ ws2812_flush();
}
}
diff --git a/keyboards/input_club/ergodox_infinity/ergodox_infinity.c b/keyboards/input_club/ergodox_infinity/ergodox_infinity.c
index 2e8d0b9763..03988a440a 100644
--- a/keyboards/input_club/ergodox_infinity/ergodox_infinity.c
+++ b/keyboards/input_club/ergodox_infinity/ergodox_infinity.c
@@ -209,6 +209,10 @@ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
// 71 70 69
{ 0, C3_7 }, { 0, C2_7 }, { 0, C1_7 },
};
+
+int led_matrix_led_index(int index) {
+ return index;
+}
#endif
#ifdef ST7565_ENABLE
diff --git a/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c b/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c
index 49e428bc00..5794056bfa 100755
--- a/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c
+++ b/keyboards/keychron/q11/ansi_encoder/ansi_encoder.c
@@ -125,4 +125,8 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
{0, CB7_CA1, CB9_CA1, CB8_CA1}, // Down
{0, CB7_CA7, CB9_CA7, CB8_CA7}, // Right
};
+
+int rgb_matrix_led_index(int index) {
+ return index;
+}
#endif
diff --git a/keyboards/keychron/q11/iso_encoder/iso_encoder.c b/keyboards/keychron/q11/iso_encoder/iso_encoder.c
index 8725598b1c..e750addcfa 100755
--- a/keyboards/keychron/q11/iso_encoder/iso_encoder.c
+++ b/keyboards/keychron/q11/iso_encoder/iso_encoder.c
@@ -126,4 +126,8 @@ const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
{0, CB7_CA1, CB9_CA1, CB8_CA1}, // Down
{0, CB7_CA7, CB9_CA7, CB8_CA7}, // Right
};
+
+int rgb_matrix_led_index(int index) {
+ return index;
+}
#endif
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/config.h b/keyboards/kprepublic/bm60hsrgb/rev2/config.h
index 1d2b071fc1..a8010af152 100644
--- a/keyboards/kprepublic/bm60hsrgb/rev2/config.h
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/config.h
@@ -25,9 +25,9 @@
// Underglow LEDs are WS2812, but someone might want to use RGBLIGHT for them;
// don't use those LEDs in RGB Matrix in that case.
#ifdef RGBLIGHT_ENABLE
-# define WS2812_LED_TOTAL 0
+# define WS2812_LED_COUNT 0
#else
-# define WS2812_LED_TOTAL 6
+# define WS2812_LED_COUNT 6
#endif
-#define RGB_MATRIX_LED_COUNT (IS31FL3733_LED_COUNT + WS2812_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT (IS31FL3733_LED_COUNT + WS2812_LED_COUNT)
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c
index 5bd23a12b8..e7ff5a9ddc 100644
--- a/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c
@@ -110,7 +110,7 @@ led_config_t g_led_config = {
{ 18, 48 }, { 30, 48 }, { 45, 48 }, { 60, 48 }, { 75, 48 }, { 90, 48 }, { 105, 48 }, { 120, 48 }, { 135, 48 }, { 150, 48 }, { 165, 48 }, { 191, 48 }, { 210, 48 },
// Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
{ 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 195, 64 }, { 210, 64 }, { 225, 64 }
-# if WS2812_LED_TOTAL > 0
+# if WS2812_LED_COUNT > 0
,{ 28, 40}, { 62, 40}, { 96, 40}, {130, 40}, {164, 40}, {198, 40}
# endif
}, {
@@ -124,7 +124,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4,
// Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
1, 1, 1, 4, 1, 1, 1, 1, 1
-# if WS2812_LED_TOTAL > 0
+# if WS2812_LED_COUNT > 0
,2, 2, 2, 2, 2, 2
# endif
}
@@ -147,10 +147,6 @@ bool rgb_matrix_indicators_kb(void) {
// Custom RGB Matrix driver that combines IS31FL3733 and WS2812
// ==========================================================================
-# if WS2812_LED_TOTAL > 0
-rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
-# endif
-
static void rgb_matrix_driver_init(void) {
i2c_init();
is31fl3733_init(0);
@@ -164,31 +160,25 @@ static void rgb_matrix_driver_init(void) {
static void rgb_matrix_driver_flush(void) {
is31fl3733_update_pwm_buffers(0);
-# if WS2812_LED_TOTAL > 0
- ws2812_setleds(rgb_matrix_ws2812_array, WS2812_LED_TOTAL);
+# if WS2812_LED_COUNT > 0
+ ws2812_flush();
# endif
}
static void rgb_matrix_driver_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
if (index < IS31FL3733_LED_COUNT) {
is31fl3733_set_color(index, red, green, blue);
+# if WS2812_LED_COUNT > 0
} else {
-# if WS2812_LED_TOTAL > 0
- rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].r = red;
- rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].g = green;
- rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].b = blue;
+ ws2812_set_color(index - IS31FL3733_LED_COUNT, red, green, blue);
# endif
}
}
static void rgb_matrix_driver_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
is31fl3733_set_color_all(red, green, blue);
-# if WS2812_LED_TOTAL > 0
- for (uint8_t i = 0; i < WS2812_LED_TOTAL; i++) {
- rgb_matrix_ws2812_array[i].r = red;
- rgb_matrix_ws2812_array[i].g = green;
- rgb_matrix_ws2812_array[i].b = blue;
- }
+# if WS2812_LED_COUNT > 0
+ ws2812_set_color_all(red, green, blue);
# endif
}
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h b/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h
index ea594e53cf..710e240aa4 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/config.h
@@ -23,9 +23,9 @@
// Underglow LEDs are WS2812, but someone might want to use RGBLIGHT for them;
// don't use those LEDs in RGB Matrix in that case.
#ifdef RGBLIGHT_ENABLE
-# define WS2812_LED_TOTAL 0
+# define WS2812_LED_COUNT 0
#else
-# define WS2812_LED_TOTAL 6
+# define WS2812_LED_COUNT 6
#endif
-#define RGB_MATRIX_LED_COUNT (IS31FL3733_LED_COUNT + WS2812_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT (IS31FL3733_LED_COUNT + WS2812_LED_COUNT)
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c
index 794dea5176..0d52d1bacb 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c
@@ -112,7 +112,7 @@ led_config_t g_led_config = { {
{ 3, 48 }, { 22, 48 }, { 33, 48 }, { 48, 48 }, { 63, 48 }, { 78, 48 }, { 93, 48 }, { 108, 48 }, { 123, 48 }, { 138, 48 }, { 153, 48 }, { 168, 48 }, { 194, 48 }, { 213, 48 },
// Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
{ 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 195, 64 }, { 210, 64 }, { 225, 64 }
-# if WS2812_LED_TOTAL > 0
+# if WS2812_LED_COUNT > 0
,{ 28, 40}, { 62, 40}, { 96, 40}, {130, 40}, {164, 40}, {198, 40}
# endif
}, {
@@ -126,7 +126,7 @@ led_config_t g_led_config = { {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 4,
// Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
1, 1, 1, 4, 1, 1, 1, 1, 1
-# if WS2812_LED_TOTAL > 0
+# if WS2812_LED_COUNT > 0
,2, 2, 2, 2, 2, 2
# endif
} };
@@ -147,10 +147,6 @@ bool rgb_matrix_indicators_kb(void) {
// Custom RGB Matrix driver that combines IS31FL3733 and WS2812
// ==========================================================================
-# if WS2812_LED_TOTAL > 0
-rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
-# endif
-
static void rgb_matrix_driver_init(void) {
i2c_init();
is31fl3733_init(0);
@@ -164,31 +160,25 @@ static void rgb_matrix_driver_init(void) {
static void rgb_matrix_driver_flush(void) {
is31fl3733_update_pwm_buffers(0);
-# if WS2812_LED_TOTAL > 0
- ws2812_setleds(rgb_matrix_ws2812_array, WS2812_LED_TOTAL);
+# if WS2812_LED_COUNT > 0
+ ws2812_flush();
# endif
}
static void rgb_matrix_driver_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
if (index < IS31FL3733_LED_COUNT) {
is31fl3733_set_color(index, red, green, blue);
+# if WS2812_LED_COUNT > 0
} else {
-# if WS2812_LED_TOTAL > 0
- rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].r = red;
- rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].g = green;
- rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].b = blue;
+ ws2812_set_color(index - IS31FL3733_LED_COUNT, red, green, blue);
# endif
}
}
static void rgb_matrix_driver_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
is31fl3733_set_color_all(red, green, blue);
-# if WS2812_LED_TOTAL > 0
- for (uint8_t i = 0; i < WS2812_LED_TOTAL; i++) {
- rgb_matrix_ws2812_array[i].r = red;
- rgb_matrix_ws2812_array[i].g = green;
- rgb_matrix_ws2812_array[i].b = blue;
- }
+# if WS2812_LED_COUNT > 0
+ ws2812_set_color_all(red, green, blue);
# endif
}
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h b/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h
index b5ff897b18..843c5b2625 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/config.h
@@ -21,9 +21,9 @@
// Underglow LEDs are WS2812, but someone might want to use RGBLIGHT for them;
// don't use those LEDs in RGB Matrix in that case.
#ifdef RGBLIGHT_ENABLE
-# define WS2812_LED_TOTAL 0
+# define WS2812_LED_COUNT 0
#else
-# define WS2812_LED_TOTAL 6
+# define WS2812_LED_COUNT 6
#endif
-#define RGB_MATRIX_LED_COUNT (IS31FL3733_LED_COUNT + WS2812_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT (IS31FL3733_LED_COUNT + WS2812_LED_COUNT)
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c
index 3586dc8e80..5766942b34 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c
@@ -107,7 +107,7 @@ led_config_t g_led_config = {
{ 18, 48 }, { 30, 48 }, { 45, 48 }, { 60, 48 }, { 75, 48 }, { 90, 48 }, { 105, 48 }, { 120, 48 }, { 135, 48 }, { 150, 48 }, { 165, 48 }, { 191, 48 },
// Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
{ 3, 64 }, { 22, 64 }, { 33, 64 }, { 101, 64 }, { 135, 64 }, { 153, 64 }, { 210, 64 }, { 225, 64 }
-# if WS2812_LED_TOTAL > 0
+# if WS2812_LED_COUNT > 0
,{ 28, 40}, { 62, 40}, { 96, 40}, {130, 40}, {164, 40}, {198, 40}
# endif
}, {
@@ -121,7 +121,7 @@ led_config_t g_led_config = {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
// Ctrl, GUI, Alt, Space, RAlt, FN, Left, Down, Right
1, 1, 1, 4, 1, 1, 1, 1
-# if WS2812_LED_TOTAL > 0
+# if WS2812_LED_COUNT > 0
,2, 2, 2, 2, 2, 2
# endif
}
@@ -143,10 +143,6 @@ bool rgb_matrix_indicators_kb(void) {
// Custom RGB Matrix driver that combines IS31FL3733 and WS2812
// ==========================================================================
-# if WS2812_LED_TOTAL > 0
-rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
-# endif
-
static void rgb_matrix_driver_init(void) {
i2c_init();
is31fl3733_init(0);
@@ -160,31 +156,25 @@ static void rgb_matrix_driver_init(void) {
static void rgb_matrix_driver_flush(void) {
is31fl3733_update_pwm_buffers(0);
-# if WS2812_LED_TOTAL > 0
- ws2812_setleds(rgb_matrix_ws2812_array, WS2812_LED_TOTAL);
+# if WS2812_LED_COUNT > 0
+ ws2812_flush();
# endif
}
static void rgb_matrix_driver_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
if (index < IS31FL3733_LED_COUNT) {
is31fl3733_set_color(index, red, green, blue);
+# if WS2812_LED_COUNT > 0
} else {
-# if WS2812_LED_TOTAL > 0
- rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].r = red;
- rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].g = green;
- rgb_matrix_ws2812_array[index - IS31FL3733_LED_COUNT].b = blue;
+ ws2812_set_color(index - IS31FL3733_LED_COUNT, red, green, blue);
# endif
}
}
static void rgb_matrix_driver_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
is31fl3733_set_color_all(red, green, blue);
-# if WS2812_LED_TOTAL > 0
- for (uint8_t i = 0; i < WS2812_LED_TOTAL; i++) {
- rgb_matrix_ws2812_array[i].r = red;
- rgb_matrix_ws2812_array[i].g = green;
- rgb_matrix_ws2812_array[i].b = blue;
- }
+# if WS2812_LED_COUNT > 0
+ ws2812_set_color_all(red, green, blue);
# endif
}
diff --git a/keyboards/matrix/abelx/abelx.c b/keyboards/matrix/abelx/abelx.c
index ee7ffde134..9058bf6e2f 100644
--- a/keyboards/matrix/abelx/abelx.c
+++ b/keyboards/matrix/abelx/abelx.c
@@ -41,20 +41,6 @@ uint8_t read_pin(uint16_t pin)
return (data & (1<<GET_PIN(pin))) ? 1 : 0;
}
-void matrix_init_kb(void) {
-#ifdef RGBLIGHT_ENABLE
- aw9523b_init(AW9523B_ADDR);
-#endif
- matrix_init_user();
-}
-
-
-void housekeeping_task_kb(void) {
-#ifdef RGBLIGHT_ENABLE
- aw9523b_update_pwm_buffers(AW9523B_ADDR);
-#endif
-}
-
#ifdef RGBLIGHT_ENABLE
#include "rgblight.h"
#include "ws2812.h"
@@ -67,20 +53,35 @@ const aw9523b_led g_aw9523b_leds[AW9523B_RGB_NUM] = {
{AW9523B_P07_PWM, AW9523B_P06_PWM, AW9523B_P05_PWM},
};
-void setleds_custom(rgb_led_t *start_led, uint16_t num_leds)
-{
- uint8_t num = num_leds < AW9523B_RGB_NUM ? num_leds : AW9523B_RGB_NUM;
+void init_custom(void) {
+ aw9523b_init(AW9523B_ADDR);
+ ws2812_init();
+}
- ws2812_setleds(start_led, num);
+void set_color_custom(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ if (index < AW9523B_RGB_NUM) {
+ aw9523b_set_color(index, red, green, blue);
+ } else {
+ ws2812_set_color(index - AW9523B_RGB_NUM, red, green, blue);
+ }
+}
- for (int i = 0; i < num; i++) {
- aw9523b_set_color(i, start_led[i].r, start_led[i].g, start_led[i].b);
+void set_color_all_custom(uint8_t red, uint8_t green, uint8_t blue) {
+ for (int i = 0; i < RGBLIGHT_LED_COUNT; i++) {
+ set_color_custom(i, red, green, blue);
}
}
+void flush_custom(void) {
+ aw9523b_update_pwm_buffers(AW9523B_ADDR);
+ ws2812_flush();
+}
+
const rgblight_driver_t rgblight_driver = {
- .init = ws2812_init,
- .setleds = setleds_custom,
+ .init = init_custom,
+ .set_color = set_color_custom,
+ .set_color_all = set_color_all_custom,
+ .flush = flush_custom,
};
#endif
diff --git a/keyboards/matrix/abelx/config.h b/keyboards/matrix/abelx/config.h
index 63b8202146..bd552d11a2 100644
--- a/keyboards/matrix/abelx/config.h
+++ b/keyboards/matrix/abelx/config.h
@@ -89,5 +89,6 @@
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
#define AW9523B_RGB_NUM 4
+#define WS2812_LED_COUNT 5
#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP FALSE
diff --git a/keyboards/matrix/m20add/m20add.c b/keyboards/matrix/m20add/m20add.c
index 267c8e5134..2d5209e3a0 100644
--- a/keyboards/matrix/m20add/m20add.c
+++ b/keyboards/matrix/m20add/m20add.c
@@ -27,13 +27,6 @@ uint8_t read_pin(uint16_t pin)
return (data & (1<<GET_PIN(pin))) ? 1 : 0;
}
-void matrix_init_kb(void) {
-#ifdef RGBLIGHT_ENABLE
- rgb_ring_init();
-#endif
- matrix_init_user();
-}
-
void housekeeping_task_kb(void) {
#ifdef RGBLIGHT_ENABLE
rgb_ring_task();
diff --git a/keyboards/matrix/m20add/rgb_ring.c b/keyboards/matrix/m20add/rgb_ring.c
index d629a5d2ec..9b0e54a6b9 100644
--- a/keyboards/matrix/m20add/rgb_ring.c
+++ b/keyboards/matrix/m20add/rgb_ring.c
@@ -361,27 +361,22 @@ static void custom_effects(void)
effect_funcs[rgb_ring.effect]();
}
-void setleds_custom(rgb_led_t *start_led, uint16_t num_leds)
-{
+void flush_custom(void) {
if (rgb_ring.state != RING_STATE_QMK) {
return;
}
- for (uint8_t i = 0; i < num_leds; i++) {
- is31fl3731_set_color(i, start_led[i].r, start_led[i].g, start_led[i].b);
- }
+ is31fl3731_flush();
}
const rgblight_driver_t rgblight_driver = {
- .setleds = setleds_custom,
+ .init = is31fl3731_init_drivers,
+ .set_color = is31fl3731_set_color,
+ .set_color_all = is31fl3731_set_color_all,
+ .flush = flush_custom,
};
-void rgb_ring_init(void)
-{
- is31fl3731_init_drivers();
-}
-
void rgb_ring_task(void)
{
switch (rgb_ring.state) {
@@ -397,8 +392,6 @@ void rgb_ring_task(void)
default:
break;
};
-
- is31fl3731_flush();
}
bool process_record_kb(uint16_t keycode, keyrecord_t *record)
diff --git a/keyboards/matrix/m20add/rgb_ring.h b/keyboards/matrix/m20add/rgb_ring.h
index 1e96b68367..25937e6500 100644
--- a/keyboards/matrix/m20add/rgb_ring.h
+++ b/keyboards/matrix/m20add/rgb_ring.h
@@ -19,5 +19,4 @@
#pragma once
-void rgb_ring_init(void);
void rgb_ring_task(void);
diff --git a/keyboards/matrix/noah/keyboard.json b/keyboards/matrix/noah/keyboard.json
index 3ba9be21eb..53c8dc2458 100644
--- a/keyboards/matrix/noah/keyboard.json
+++ b/keyboards/matrix/noah/keyboard.json
@@ -10,7 +10,7 @@
"no_startup_check": true
},
"rgblight": {
- "driver": "custom",
+ "driver": "ws2812",
"led_count": 7,
"animations": {
"breathing": true,
diff --git a/keyboards/matrix/noah/noah.c b/keyboards/matrix/noah/noah.c
index 99f4e063d1..22d159328a 100644
--- a/keyboards/matrix/noah/noah.c
+++ b/keyboards/matrix/noah/noah.c
@@ -9,57 +9,6 @@ void bootloader_jump(void) {
NVIC_SystemReset();
}
-#ifdef RGBLIGHT_ENABLE
-#include <string.h>
-#include "rgblight.h"
-#include "ws2812.h"
-extern rgblight_config_t rgblight_config;
-
-// led 0 for caps lock, led 1 for scroll lock, led 3 for num lock
-// led 4 for layer 1, led 5 for layer 2, led 6 for layer 3, led 7 for layer 4
-#if RGBLIGHT_LED_COUNT < 7
-#error "MUST set the RGBLIGHT_LED_COUNT bigger than 7"
-#endif
-rgb_led_t noah_leds[RGBLIGHT_LED_COUNT];
-static bool noah_led_mode = false;
-void setleds_custom(rgb_led_t *ledarray, uint16_t num_leds) {
- memset(&noah_leds[0], 0, sizeof(noah_leds));
- if (!rgblight_config.enable) {
- for (uint8_t i = 0; i < RGBLIGHT_LED_COUNT; i++) {
- ledarray[i].r = 0;
- ledarray[i].g = 0;
- ledarray[i].b = 0;
- }
- }
- if (noah_led_mode) {
- led_t led_state = host_keyboard_led_state();
- if (led_state.caps_lock) {
- noah_leds[0] = ledarray[0];
- }
- if (led_state.scroll_lock) {
- noah_leds[1] = ledarray[1];
- }
- if (led_state.num_lock) {
- noah_leds[2] = ledarray[2];
- }
- for (int32_t i = 0; i < 4; i++) {
- if(layer_state_is(i+1)) {
- noah_leds[i + 3] = ledarray[i + 3];
- }
- }
- } else {
- memcpy(&noah_leds[0], &ledarray[0], sizeof(noah_leds));
- }
-
- ws2812_setleds(noah_leds, RGBLIGHT_LED_COUNT);
-}
-
-const rgblight_driver_t rgblight_driver = {
- .init = ws2812_init,
- .setleds = setleds_custom,
-};
-#endif
-
#ifdef RGB_MATRIX_ENABLE
const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
@@ -150,11 +99,6 @@ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch(keycode) {
- #ifdef RGBLIGHT_ENABLE
- case KC_F24: // switch the led mode on or off
- noah_led_mode = !noah_led_mode;
- return false;
-
#ifdef RGB_MATRIX_ENABLE
case KC_F13: // toggle rgb matrix
rgb_matrix_toggle();
@@ -163,7 +107,6 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
rgb_matrix_step();
return false;
#endif
- #endif
default:
break;
}
diff --git a/keyboards/neson_design/700e/700e.c b/keyboards/neson_design/700e/700e.c
index c6ba94c834..cee22cf78d 100644
--- a/keyboards/neson_design/700e/700e.c
+++ b/keyboards/neson_design/700e/700e.c
@@ -18,9 +18,11 @@
*/
#include "quantum.h"
-#include "i2c_master.h"
-#include "drivers/led/issi/is31fl3731.h"
-#include "ws2812.h"
+
+#ifdef RGBLIGHT_ENABLE
+# include "i2c_master.h"
+# include "drivers/led/issi/is31fl3731.h"
+# include "ws2812.h"
enum {
SELF_TESTING,
@@ -67,7 +69,6 @@ enum {
#endif
#define ST_RIGHT_END (ST_RIGHT_BEGIN+ST_RIGHT_SIZE-1)
-#ifdef RGBLIGHT_ENABLE
typedef struct {
uint8_t state;
@@ -295,7 +296,6 @@ void matrix_init_kb(void)
gpio_set_pin_output(LED_CAPS_LOCK_PIN);
gpio_write_pin_low(LED_CAPS_LOCK_PIN);
- is31fl3731_init_drivers();
update_ticks();
matrix_init_user();
@@ -313,17 +313,10 @@ void housekeeping_task_kb(void)
} else if (rgb_state.state == CAPS_ALERT) {
if (rgb_state.alert) {
is31fl3731_set_color_all(ALERM_LED_R, ALERM_LED_G, ALERM_LED_B);
- rgb_led_t leds[4];
- for (int i = 0; i < 4; i++) {
- leds[i].r = ALERM_LED_G;
- leds[i].g = ALERM_LED_R;
- leds[i].b = ALERM_LED_B;
- }
- ws2812_setleds(leds, 4);
+ ws2812_set_color_all(ALERM_LED_G, ALERM_LED_R, ALERM_LED_B);
} else {
is31fl3731_set_color_all(0, 0, 0);
- rgb_led_t leds[4] = {0};
- ws2812_setleds(leds, 4);
+ ws2812_set_color_all(0, 0, 0);
}
if (timer_elapsed(rgb_state.ticks) > ALERT_INTERVAL) {
@@ -333,28 +326,40 @@ void housekeeping_task_kb(void)
}
is31fl3731_flush();
+ ws2812_flush();
}
-void setleds_custom(rgb_led_t *start_led, uint16_t num_leds)
-{
- if (rgb_state.state != NORMAL) return;
+void init_custom(void) {
+ is31fl3731_init_drivers();
+ ws2812_init();
+}
- for (uint8_t i = 0; i < IS31FL3731_LED_COUNT; i++) {
- is31fl3731_set_color(i, start_led[i].r, start_led[i].g, start_led[i].b);
+void set_color_custom(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ if (index < IS31FL3731_LED_COUNT) {
+ is31fl3731_set_color(index, red, green, blue);
+ } else if (index < IS31FL3731_LED_COUNT + WS2812_LED_COUNT) {
+ ws2812_set_color(index - IS31FL3731_LED_COUNT, green, red, blue);
}
- rgb_led_t leds[4];
- for (int i = 0; i < 4; i++) {
- leds[i].r = start_led[IS31FL3731_LED_COUNT+i].g;
- leds[i].g = start_led[IS31FL3731_LED_COUNT+i].r;
- leds[i].b = start_led[IS31FL3731_LED_COUNT+i].b;
+}
+
+void set_color_all_custom(uint8_t red, uint8_t green, uint8_t blue) {
+ for (int i = 0; i < RGBLIGHT_LED_COUNT; i++) {
+ set_color_custom(i, red, green, blue);
}
- //ws2812_setleds(start_led+IS31FL3731_LED_COUNT, 4);
- ws2812_setleds(leds, 4);
+}
+
+void flush_custom(void) {
+ if (rgb_state.state != NORMAL) return;
+
+ is31fl3731_flush();
+ ws2812_flush();
}
const rgblight_driver_t rgblight_driver = {
- .init = ws2812_init,
- .setleds = setleds_custom,
+ .init = init_custom,
+ .set_color = set_color_custom,
+ .set_color_all = set_color_all_custom,
+ .flush = flush_custom,
};
bool led_update_kb(led_t led_state)
diff --git a/keyboards/neson_design/700e/config.h b/keyboards/neson_design/700e/config.h
index d92c9deb5d..2c2d02cad1 100644
--- a/keyboards/neson_design/700e/config.h
+++ b/keyboards/neson_design/700e/config.h
@@ -21,5 +21,6 @@
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
#define IS31FL3731_LED_COUNT 64
+#define WS2812_LED_COUNT 4
#define USB_SUSPEND_WAKEUP_DELAY 1000
diff --git a/keyboards/neson_design/n6/config.h b/keyboards/neson_design/n6/config.h
index 92aa189fae..dd67c11851 100644
--- a/keyboards/neson_design/n6/config.h
+++ b/keyboards/neson_design/n6/config.h
@@ -21,3 +21,4 @@
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_VCC
#define IS31FL3731_LED_COUNT 64
+#define WS2812_LED_COUNT 1
diff --git a/keyboards/neson_design/n6/n6.c b/keyboards/neson_design/n6/n6.c
index ef5035dcde..03bb88c40b 100644
--- a/keyboards/neson_design/n6/n6.c
+++ b/keyboards/neson_design/n6/n6.c
@@ -18,9 +18,11 @@
*/
#include "quantum.h"
-#include "i2c_master.h"
-#include "drivers/led/issi/is31fl3731.h"
-#include "ws2812.h"
+
+#ifdef RGBLIGHT_ENABLE
+# include "i2c_master.h"
+# include "drivers/led/issi/is31fl3731.h"
+# include "ws2812.h"
enum {
SELF_TESTING,
@@ -67,7 +69,6 @@ enum {
#endif
#define ST_RIGHT_END (ST_RIGHT_BEGIN+ST_RIGHT_SIZE-1)
-#ifdef RGBLIGHT_ENABLE
extern rgblight_config_t rgblight_config;
typedef struct {
@@ -299,8 +300,6 @@ void matrix_init_kb(void)
gpio_set_pin_output(LED_CAPS_LOCK_PIN);
gpio_write_pin_low(LED_CAPS_LOCK_PIN);
- is31fl3731_init_drivers();
-
update_ticks();
matrix_init_user();
}
@@ -310,22 +309,12 @@ void housekeeping_task_kb(void)
if (rgb_state.state == SELF_TESTING) {
self_testing();
} else if (rgb_state.state == CAPS_ALERT) {
- //gold 0xFF, 0xD9, 0x00
- rgb_led_t led = {
- .r = 0xFF,
- //.g = 0xD9,
- .g = 0xA5,
- .b = 0x00,
- };
if (rgb_state.alert) {
- is31fl3731_set_color_all(led.r, led.g, led.b);
- ws2812_setleds(&led, 1);
+ is31fl3731_set_color_all(0xFF, 0xA5, 0x00);
+ ws2812_set_color_all(0xFF, 0xA5, 0x00);
} else {
- led.r = 0;
- led.g = 0;
- led.b = 0;
is31fl3731_set_color_all(0, 0, 0);
- ws2812_setleds(&led, 1);
+ ws2812_set_color_all(0, 0, 0);
}
if (timer_elapsed(rgb_state.ticks) > ALERT_INTERVAL) {
@@ -337,19 +326,37 @@ void housekeeping_task_kb(void)
is31fl3731_flush();
}
-void setleds_custom(rgb_led_t *start_led, uint16_t num_leds)
-{
- if (rgb_state.state != NORMAL) return;
+void init_custom(void) {
+ is31fl3731_init_drivers();
+ ws2812_init();
+}
- for (uint8_t i = 0; i < IS31FL3731_LED_COUNT; i++) {
- is31fl3731_set_color(i, start_led[i].r, start_led[i].g, start_led[i].b);
+void set_color_custom(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ if (index < IS31FL3731_LED_COUNT) {
+ is31fl3731_set_color(index, red, green, blue);
+ } else if (index < IS31FL3731_LED_COUNT + WS2812_LED_COUNT) {
+ ws2812_set_color(index - IS31FL3731_LED_COUNT, red, green, blue);
}
- ws2812_setleds(start_led+IS31FL3731_LED_COUNT, 1);
+}
+
+void set_color_all_custom(uint8_t red, uint8_t green, uint8_t blue) {
+ for (int i = 0; i < RGBLIGHT_LED_COUNT; i++) {
+ set_color_custom(i, red, green, blue);
+ }
+}
+
+void flush_custom(void) {
+ if (rgb_state.state != NORMAL) return;
+
+ is31fl3731_flush();
+ ws2812_flush();
}
const rgblight_driver_t rgblight_driver = {
- .init = ws2812_init,
- .setleds = setleds_custom,
+ .init = init_custom,
+ .set_color = set_color_custom,
+ .set_color_all = set_color_all_custom,
+ .flush = flush_custom,
};
bool led_update_kb(led_t led_state)
diff --git a/keyboards/oddforge/vea/ws2812_custom.c b/keyboards/oddforge/vea/ws2812_custom.c
index 317f98130b..568f0e176d 100644
--- a/keyboards/oddforge/vea/ws2812_custom.c
+++ b/keyboards/oddforge/vea/ws2812_custom.c
@@ -17,12 +17,25 @@
# define WS2812_I2C_TIMEOUT 100
#endif
+ws2812_led_t ws2812_leds[WS2812_LED_COUNT];
+
void ws2812_init(void) {
i2c_init();
}
-// Setleds for standard RGB
-void ws2812_setleds(rgb_led_t *ledarray, uint16_t leds) {
- i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(rgb_led_t) * (leds >> 1), WS2812_I2C_TIMEOUT);
- i2c_transmit(WS2812_I2C_ADDRESS_RIGHT, (uint8_t *)ledarray+(sizeof(rgb_led_t) * (leds >> 1)), sizeof(rgb_led_t) * (leds - (leds >> 1)), WS2812_I2C_TIMEOUT);
+void ws2812_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ ws2812_leds[index].r = red;
+ ws2812_leds[index].g = green;
+ ws2812_leds[index].b = blue;
+}
+
+void ws2812_set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
+ for (int i = 0; i < WS2812_LED_COUNT; i++) {
+ ws2812_set_color(i, red, green, blue);
+ }
+}
+
+void ws2812_flush(void) {
+ i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ws2812_leds, sizeof(ws2812_led_t) * (WS2812_LED_COUNT >> 1), WS2812_I2C_TIMEOUT);
+ i2c_transmit(WS2812_I2C_ADDRESS_RIGHT, (uint8_t *)ws2812_leds + (sizeof(ws2812_led_t) * (WS2812_LED_COUNT >> 1)), sizeof(ws2812_led_t) * (WS2812_LED_COUNT - (WS2812_LED_COUNT >> 1)), WS2812_I2C_TIMEOUT);
}
diff --git a/keyboards/orthograph/orthograph.c b/keyboards/orthograph/orthograph.c
index 9d824574d1..0649115aa3 100644
--- a/keyboards/orthograph/orthograph.c
+++ b/keyboards/orthograph/orthograph.c
@@ -125,4 +125,7 @@ const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{0, SW7_CS7, SW8_CS7, SW9_CS7}
};
+int rgb_matrix_led_index(int index) {
+ return index;
+}
#endif
diff --git a/keyboards/rgbkb/pan/config.h b/keyboards/rgbkb/pan/config.h
index abb9620a5d..be719c1437 100644
--- a/keyboards/rgbkb/pan/config.h
+++ b/keyboards/rgbkb/pan/config.h
@@ -17,3 +17,4 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#define RGB_MATRIX_LED_COUNT 64
+#define WS2812_LED_COUNT 64
diff --git a/keyboards/rgbkb/pan/pan.c b/keyboards/rgbkb/pan/pan.c
index 401831e0e2..20cc4dd248 100644
--- a/keyboards/rgbkb/pan/pan.c
+++ b/keyboards/rgbkb/pan/pan.c
@@ -21,43 +21,23 @@
# if defined(KEYBOARD_rgbkb_pan_rev1)
# include "ws2812.h"
-// LED color buffer
-rgb_led_t rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT];
-
-static void flush(void) {
- ws2812_setleds(rgb_matrix_ws2812_array, RGB_MATRIX_LED_COUNT);
-}
-
// Set an led in the buffer to a color
static inline void setled(int i, uint8_t r, uint8_t g, uint8_t b) {
# if defined(RGB_ENCODERS) || defined(STAGGERED_RGB_ENCODERS)
if (i == 0 || i == 1) { // if encoder LEDs, change LEDs
- rgb_matrix_ws2812_array[i].r = g;
- rgb_matrix_ws2812_array[i].g = b;
- rgb_matrix_ws2812_array[i].b = r;
+ ws2812_set_color(i, g, b, r);
} else
# endif
{
- rgb_matrix_ws2812_array[i].r = r;
- rgb_matrix_ws2812_array[i].g = g;
- rgb_matrix_ws2812_array[i].b = b;
- }
-# ifdef WS2812_RGBW
- convert_rgb_to_rgbw(&rgb_matrix_ws2812_array[i]);
-# endif
-}
-
-static void setled_all(uint8_t r, uint8_t g, uint8_t b) {
- for (int i = 0; i < ARRAY_SIZE(rgb_matrix_ws2812_array); i++) {
- setled(i, r, g, b);
+ ws2812_set_color(i, r, g, b);
}
}
const rgb_matrix_driver_t rgb_matrix_driver = {
.init = ws2812_init,
- .flush = flush,
+ .flush = ws2812_flush,
.set_color = setled,
- .set_color_all = setled_all,
+ .set_color_all = ws2812_set_color_all,
};
# endif
diff --git a/keyboards/steelseries/prime_plus/rgblight_custom.c b/keyboards/steelseries/prime_plus/rgblight_custom.c
index cdb9e10078..d2be789203 100644
--- a/keyboards/steelseries/prime_plus/rgblight_custom.c
+++ b/keyboards/steelseries/prime_plus/rgblight_custom.c
@@ -1,45 +1,65 @@
// Copyright 2024 Dasky (@daskygit)
// SPDX-License-Identifier: GPL-2.0-or-later
-#include "quantum.h"
+#include <hal.h>
+#include "chibios_config.h"
+#include "gpio.h"
+#include "color.h"
+#include "rgblight_drivers.h"
static PWMConfig pwmCFG = {
.frequency = 0xFFFF,
.period = 256,
};
-void prime_setleds(rgb_led_t *start_led, uint16_t num_leds) {
- if (start_led[0].r == 0) {
+rgb_led_t prime_leds[RGBLIGHT_LED_COUNT];
+
+void init_custom(void) {
+ palSetPadMode(PAL_PORT(RGB_RED_PIN), PAL_PAD(RGB_RED_PIN), PAL_MODE_ALTERNATE_PUSHPULL);
+ palSetPadMode(PAL_PORT(RGB_GREEN_PIN), PAL_PAD(RGB_GREEN_PIN), PAL_MODE_ALTERNATE_PUSHPULL);
+ palSetPadMode(PAL_PORT(RGB_BLUE_PIN), PAL_PAD(RGB_BLUE_PIN), PAL_MODE_ALTERNATE_PUSHPULL);
+ pwmCFG.channels[RGB_RED_PWM_CHANNEL - 1].mode = PWM_OUTPUT_ACTIVE_HIGH;
+ pwmCFG.channels[RGB_GREEN_PWM_CHANNEL - 1].mode = PWM_OUTPUT_ACTIVE_HIGH;
+ pwmCFG.channels[RGB_BLUE_PWM_CHANNEL - 1].mode = PWM_OUTPUT_ACTIVE_HIGH;
+ pwmStart(&RGB_PWM_DRIVER, &pwmCFG);
+}
+
+void set_color_custom(int index, uint8_t red, uint8_t green, uint8_t blue) {
+ prime_leds[index].r = red;
+ prime_leds[index].g = green;
+ prime_leds[index].b = blue;
+}
+
+void set_color_all_custom(uint8_t red, uint8_t green, uint8_t blue) {
+ for (int i = 0; i < RGBLIGHT_LED_COUNT; i++) {
+ set_color_custom(i, red, green, blue);
+ }
+}
+
+void flush_custom(void) {
+ if (prime_leds[0].r == 0) {
pwmDisableChannel(&RGB_PWM_DRIVER, RGB_RED_PWM_CHANNEL - 1);
} else {
- uint32_t duty = ((uint32_t)0xFFFF * start_led[0].r) / 0xFF;
+ uint32_t duty = ((uint32_t)0xFFFF * prime_leds[0].r) / 0xFF;
pwmEnableChannel(&RGB_PWM_DRIVER, RGB_RED_PWM_CHANNEL - 1, PWM_FRACTION_TO_WIDTH(&RGB_PWM_DRIVER, 0xFFFF, duty));
}
- if (start_led[0].g == 0) {
+ if (prime_leds[0].g == 0) {
pwmDisableChannel(&RGB_PWM_DRIVER, RGB_GREEN_PWM_CHANNEL - 1);
} else {
- uint32_t duty = ((uint32_t)0xFFFF * start_led[0].g) / 0xFF;
+ uint32_t duty = ((uint32_t)0xFFFF * prime_leds[0].g) / 0xFF;
pwmEnableChannel(&RGB_PWM_DRIVER, RGB_GREEN_PWM_CHANNEL - 1, PWM_FRACTION_TO_WIDTH(&RGB_PWM_DRIVER, 0xFFFF, duty));
}
- if (start_led[0].b == 0) {
+ if (prime_leds[0].b == 0) {
pwmDisableChannel(&RGB_PWM_DRIVER, RGB_BLUE_PWM_CHANNEL - 1);
} else {
- uint32_t duty = ((uint32_t)0xFFFF * start_led[0].b) / 0xFF;
+ uint32_t duty = ((uint32_t)0xFFFF * prime_leds[0].b) / 0xFF;
pwmEnableChannel(&RGB_PWM_DRIVER, RGB_BLUE_PWM_CHANNEL - 1, PWM_FRACTION_TO_WIDTH(&RGB_PWM_DRIVER, 0xFFFF, duty));
}
}
-void prime_initleds(void) {
- palSetPadMode(PAL_PORT(RGB_RED_PIN), PAL_PAD(RGB_RED_PIN), PAL_MODE_ALTERNATE_PUSHPULL);
- palSetPadMode(PAL_PORT(RGB_GREEN_PIN), PAL_PAD(RGB_GREEN_PIN), PAL_MODE_ALTERNATE_PUSHPULL);
- palSetPadMode(PAL_PORT(RGB_BLUE_PIN), PAL_PAD(RGB_BLUE_PIN), PAL_MODE_ALTERNATE_PUSHPULL);
- pwmCFG.channels[RGB_RED_PWM_CHANNEL - 1].mode = PWM_OUTPUT_ACTIVE_HIGH;
- pwmCFG.channels[RGB_GREEN_PWM_CHANNEL - 1].mode = PWM_OUTPUT_ACTIVE_HIGH;
- pwmCFG.channels[RGB_BLUE_PWM_CHANNEL - 1].mode = PWM_OUTPUT_ACTIVE_HIGH;
- pwmStart(&RGB_PWM_DRIVER, &pwmCFG);
-}
-
const rgblight_driver_t rgblight_driver = {
- .init = prime_initleds,
- .setleds = prime_setleds,
+ .init = init_custom,
+ .set_color = set_color_custom,
+ .set_color_all = set_color_all_custom,
+ .flush = flush_custom,
};
diff --git a/keyboards/wilba_tech/wt_rgb_backlight.c b/keyboards/wilba_tech/wt_rgb_backlight.c
index 936286c2ee..645ee2b32a 100644
--- a/keyboards/wilba_tech/wt_rgb_backlight.c
+++ b/keyboards/wilba_tech/wt_rgb_backlight.c
@@ -60,7 +60,6 @@
#if defined(RGB_BACKLIGHT_DAWN60)
#include "ws2812.h"
-rgb_led_t g_ws2812_leds[WS2812_LED_TOTAL];
#endif
#include "progmem.h"
@@ -1011,6 +1010,9 @@ void backlight_update_pwm_buffers(void)
driver = 0;
}
#else
+#if defined(RGB_BACKLIGHT_DAWN60)
+ ws2812_flush();
+#endif
is31fl3731_update_pwm_buffers( 0 );
is31fl3731_update_pwm_buffers( 1 );
is31fl3731_update_led_control_registers( 0 );
@@ -1037,10 +1039,7 @@ void backlight_set_color( int index, uint8_t red, uint8_t green, uint8_t blue )
if( index < IS31FL3731_LED_COUNT ) {
is31fl3731_set_color( index, red, green, blue );
} else {
- g_ws2812_leds[index - IS31FL3731_LED_COUNT].r = red;
- g_ws2812_leds[index - IS31FL3731_LED_COUNT].g = green;
- g_ws2812_leds[index - IS31FL3731_LED_COUNT].b = blue;
- ws2812_setleds(g_ws2812_leds, WS2812_LED_TOTAL);
+ ws2812_set_color( index - IS31FL3731_LED_COUNT, red, green, blue );
}
#else
is31fl3731_set_color( index, red, green, blue );
@@ -1075,12 +1074,7 @@ void backlight_set_color_all( uint8_t red, uint8_t green, uint8_t blue )
}
#elif defined(RGB_BACKLIGHT_DAWN60)
is31fl3731_set_color_all( red, green, blue );
- for (uint8_t i = 0; i < WS2812_LED_TOTAL; i++) {
- g_ws2812_leds[i].r = red;
- g_ws2812_leds[i].g = green;
- g_ws2812_leds[i].b = blue;
- }
- ws2812_setleds(g_ws2812_leds, WS2812_LED_TOTAL);
+ ws2812_set_color_all( red, green, blue );
#else
is31fl3731_set_color_all( red, green, blue );
#endif
@@ -1325,7 +1319,7 @@ void backlight_effect_alphas_mods(void)
}
}
#if defined(RGB_BACKLIGHT_DAWN60)
- for (int i = 0; i < WS2812_LED_TOTAL; i++) {
+ for (int i = 0; i < WS2812_LED_COUNT; i++) {
if ((RGB_UNDERGLOW_ALPHA_TOP_START <= i && i <= RGB_UNDERGLOW_ALPHA_TOP_END) ||
(RGB_UNDERGLOW_ALPHA_BOT_START <= i && i <= RGB_UNDERGLOW_ALPHA_BOT_END)) {
backlight_set_color(i + IS31FL3731_LED_COUNT, rgb1.r, rgb1.g, rgb1.b);
diff --git a/keyboards/work_louder/rgb_functions.c b/keyboards/work_louder/rgb_functions.c
index bc31aab7c1..fb99c0b008 100644
--- a/keyboards/work_louder/rgb_functions.c
+++ b/keyboards/work_louder/rgb_functions.c
@@ -26,13 +26,17 @@
#define WS2812_DI_PIN RGBLIGHT_DI_PIN
#define ws2812_init ws2812_rgb_init
-#define ws2812_setleds ws2812_rgb_setleds
+#define ws2812_set_color ws2812_rgb_set_color
+#define ws2812_set_color_all ws2812_rgb_set_color_all
+#define ws2812_flush ws2812_rgb_flush
#include "ws2812_bitbang.c"
const rgblight_driver_t rgblight_driver = {
- .init = ws2812_init,
- .setleds = ws2812_setleds,
+ .init = ws2812_init,
+ .set_color = ws2812_set_color,
+ .set_color_all = ws2812_set_color_all,
+ .flush = ws2812_flush,
};
#endif
diff --git a/keyboards/xelus/dawn60/rev1/config.h b/keyboards/xelus/dawn60/rev1/config.h
index e64b0895fa..7ff2294ddd 100644
--- a/keyboards/xelus/dawn60/rev1/config.h
+++ b/keyboards/xelus/dawn60/rev1/config.h
@@ -42,7 +42,7 @@
#define RGB_BACKLIGHT_DAWN60
//RGB Underglow defines
-#define WS2812_LED_TOTAL 20
+#define WS2812_LED_COUNT 20
#define RGB_UNDERGLOW_ALPHA_TOP_START 0
#define RGB_UNDERGLOW_ALPHA_TOP_END 6
diff --git a/keyboards/xelus/dawn60/rev1_qmk/config.h b/keyboards/xelus/dawn60/rev1_qmk/config.h
index b54fcaee2a..12f0dad8df 100644
--- a/keyboards/xelus/dawn60/rev1_qmk/config.h
+++ b/keyboards/xelus/dawn60/rev1_qmk/config.h
@@ -16,14 +16,14 @@
#pragma once
//RGB Underglow defines
-#define WS2812_LED_TOTAL 20
+#define WS2812_LED_COUNT 20
//RGB Matrix defines
#define IS31FL3731_I2C_ADDRESS_1 IS31FL3731_I2C_ADDRESS_GND
#define IS31FL3731_I2C_ADDRESS_2 IS31FL3731_I2C_ADDRESS_SDA
#define IS31FL3731_LED_COUNT 64
-#define RGB_MATRIX_LED_COUNT (IS31FL3731_LED_COUNT + WS2812_LED_TOTAL)
+#define RGB_MATRIX_LED_COUNT (IS31FL3731_LED_COUNT + WS2812_LED_COUNT)
// enable/disable LEDs based on layout
// switch between split backspace (1) or normal backspace(0)
diff --git a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c
index a153a7cf83..746c68950b 100644
--- a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c
+++ b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c
@@ -23,8 +23,6 @@
#include "ws2812.h"
#ifdef RGB_MATRIX_ENABLE
-rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
-
const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
@@ -161,26 +159,20 @@ static void init(void) {
static void flush(void) {
is31fl3731_update_pwm_buffers(0);
is31fl3731_update_pwm_buffers(1);
- ws2812_setleds(rgb_matrix_ws2812_array, WS2812_LED_TOTAL);
+ ws2812_flush();
}
static void set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
if (index < IS31FL3731_LED_COUNT) {
is31fl3731_set_color(index, red, green, blue);
} else {
- rgb_matrix_ws2812_array[index - IS31FL3731_LED_COUNT].r = red;
- rgb_matrix_ws2812_array[index - IS31FL3731_LED_COUNT].g = green;
- rgb_matrix_ws2812_array[index - IS31FL3731_LED_COUNT].b = blue;
+ ws2812_set_color(index - IS31FL3731_LED_COUNT, red, green, blue);
}
}
static void set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
is31fl3731_set_color_all( red, green, blue );
- for (uint8_t i = 0; i < WS2812_LED_TOTAL; i++) {
- rgb_matrix_ws2812_array[i].r = red;
- rgb_matrix_ws2812_array[i].g = green;
- rgb_matrix_ws2812_array[i].b = blue;
- }
+ ws2812_set_color_all( red, green, blue );
}
diff --git a/keyboards/xiudi/xd002/keymaps/rgb_lite/config.h b/keyboards/xiudi/xd002/keymaps/rgb_lite/config.h
new file mode 100644
index 0000000000..bb9f2fc153
--- /dev/null
+++ b/keyboards/xiudi/xd002/keymaps/rgb_lite/config.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#define WS2812_LED_COUNT 2
diff --git a/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h b/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h
index 0bb0582415..3ee8c44b87 100644
--- a/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h
+++ b/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h
@@ -7,9 +7,9 @@ static inline void rgblite_init(void) {
ws2812_init();
}
-static inline void rgblite_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) {
- rgb_led_t leds[RGBLIGHT_LED_COUNT] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}};
- ws2812_setleds(leds, RGBLIGHT_LED_COUNT);
+static inline void rgblite_setrgb(uint8_t r, uint8_t g, uint8_t b) {
+ ws2812_set_color_all(r, g, b);
+ ws2812_flush();
}
static void rgblite_increase_hue(void) {