diff --git a/drivers/ws2812.h b/drivers/ws2812.h
index 5985b5340c..8750b0110e 100644
--- a/drivers/ws2812.h
+++ b/drivers/ws2812.h
@@ -56,6 +56,12 @@
 #    define WS2812_TRST_US 280
 #endif
 
+#if defined(RGBLED_NUM)
+#    define WS2812_LED_COUNT RGBLED_NUM
+#elif defined(RGB_MATRIX_LED_COUNT)
+#    define WS2812_LED_COUNT RGB_MATRIX_LED_COUNT
+#endif
+
 /* User Interface
  *
  * Input:
diff --git a/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c b/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c
index bc34eded14..4470e2c826 100644
--- a/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c
+++ b/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c
@@ -36,10 +36,10 @@ static int state_machine = -1;
 // clang-format off
 static const uint16_t ws2812_program_instructions[] = {
             //     .wrap_target
-    0x7221, //  0: out    x, 1            side 1 [2] 
-    0x0123, //  1: jmp    !x, 3           side 0 [1] 
-    0x0400, //  2: jmp    0               side 0 [4] 
-    0xb442, //  3: nop                    side 1 [4] 
+    0x7221, //  0: out    x, 1            side 1 [2]
+    0x0123, //  1: jmp    !x, 3           side 0 [1]
+    0x0400, //  2: jmp    0               side 0 [4]
+    0xb442, //  3: nop                    side 1 [4]
             //     .wrap
 };
 
@@ -62,7 +62,7 @@ static const pio_program_t ws2812_program = {
     .origin       = -1,
 };
 
-static uint32_t                WS2812_BUFFER[RGBLED_NUM];
+static uint32_t                WS2812_BUFFER[WS2812_LED_COUNT];
 static const rp_dma_channel_t* WS2812_DMA_CHANNEL;
 
 bool ws2812_init(void) {
@@ -154,7 +154,7 @@ static inline void sync_ws2812_transfer(void) {
             // Abort the synchronization if we have to wait longer than the total
             // count of LEDs in millisecounds. This is safely much longer than it
             // would take to push all the data out.
-            if (unlikely(timer_elapsed_fast(start) > RGBLED_NUM)) {
+            if (unlikely(timer_elapsed_fast(start) > WS2812_LED_COUNT)) {
                 dprintln("ERROR: WS2812 DMA transfer has stalled, aborting!");
                 dmaChannelDisableX(WS2812_DMA_CHANNEL);
                 return;
diff --git a/platforms/chibios/drivers/ws2812_pwm.c b/platforms/chibios/drivers/ws2812_pwm.c
index 792de85ce9..c4a591c10b 100644
--- a/platforms/chibios/drivers/ws2812_pwm.c
+++ b/platforms/chibios/drivers/ws2812_pwm.c
@@ -88,8 +88,8 @@
  */
 #define WS2812_COLOR_BITS (WS2812_CHANNELS * 8)
 #define WS2812_RESET_BIT_N (1000 * WS2812_TRST_US / WS2812_TIMING)
-#define WS2812_COLOR_BIT_N (RGBLED_NUM * WS2812_COLOR_BITS)    /**< Number of data bits */
-#define WS2812_BIT_N (WS2812_COLOR_BIT_N + WS2812_RESET_BIT_N) /**< Total number of bits in a frame */
+#define WS2812_COLOR_BIT_N (WS2812_LED_COUNT * WS2812_COLOR_BITS) /**< Number of data bits */
+#define WS2812_BIT_N (WS2812_COLOR_BIT_N + WS2812_RESET_BIT_N)    /**< Total number of bits in a frame */
 
 /**
  * @brief   High period for a zero, in ticks
@@ -133,7 +133,7 @@
 /**
  * @brief   Determine the index in @ref ws2812_frame_buffer "the frame buffer" of a given bit
  *
- * @param[in] led:                  The led index [0, @ref RGBLED_NUM)
+ * @param[in] led:                  The led index [0, @ref WS2812_LED_COUNT)
  * @param[in] byte:                 The byte number [0, 2]
  * @param[in] bit:                  The bit number [0, 7]
  *
@@ -147,7 +147,7 @@
  *
  * @note    The red byte is the middle byte in the color packet
  *
- * @param[in] led:                  The led index [0, @ref RGBLED_NUM)
+ * @param[in] led:                  The led index [0, @ref WS2812_LED_COUNT)
  * @param[in] bit:                  The bit number [0, 7]
  *
  * @return                          The bit index
@@ -159,7 +159,7 @@
  *
  * @note    The red byte is the first byte in the color packet
  *
- * @param[in] led:                  The led index [0, @ref RGBLED_NUM)
+ * @param[in] led:                  The led index [0, @ref WS2812_LED_COUNT)
  * @param[in] bit:                  The bit number [0, 7]
  *
  * @return                          The bit index
@@ -171,7 +171,7 @@
  *
  * @note    The red byte is the last byte in the color packet
  *
- * @param[in] led:                  The led index [0, @ref RGBLED_NUM)
+ * @param[in] led:                  The led index [0, @ref WS2812_LED_COUNT)
  * @param[in] bit:                  The bit index [0, 7]
  *
  * @return                          The bit index
@@ -184,7 +184,7 @@
  *
  * @note    The red byte is the middle byte in the color packet
  *
- * @param[in] led:                  The led index [0, @ref RGBLED_NUM)
+ * @param[in] led:                  The led index [0, @ref WS2812_LED_COUNT)
  * @param[in] bit:                  The bit number [0, 7]
  *
  * @return                          The bit index
@@ -196,7 +196,7 @@
  *
  * @note    The red byte is the first byte in the color packet
  *
- * @param[in] led:                  The led index [0, @ref RGBLED_NUM)
+ * @param[in] led:                  The led index [0, @ref WS2812_LED_COUNT)
  * @param[in] bit:                  The bit number [0, 7]
  *
  * @return                          The bit index
@@ -208,7 +208,7 @@
  *
  * @note    The red byte is the last byte in the color packet
  *
- * @param[in] led:                  The led index [0, @ref RGBLED_NUM)
+ * @param[in] led:                  The led index [0, @ref WS2812_LED_COUNT)
  * @param[in] bit:                  The bit index [0, 7]
  *
  * @return                          The bit index
@@ -221,7 +221,7 @@
  *
  * @note    The red byte is the middle byte in the color packet
  *
- * @param[in] led:                  The led index [0, @ref RGBLED_NUM)
+ * @param[in] led:                  The led index [0, @ref WS2812_LED_COUNT)
  * @param[in] bit:                  The bit number [0, 7]
  *
  * @return                          The bit index
@@ -233,7 +233,7 @@
  *
  * @note    The red byte is the first byte in the color packet
  *
- * @param[in] led:                  The led index [0, @ref RGBLED_NUM)
+ * @param[in] led:                  The led index [0, @ref WS2812_LED_COUNT)
  * @param[in] bit:                  The bit number [0, 7]
  *
  * @return                          The bit index
@@ -245,7 +245,7 @@
  *
  * @note    The red byte is the last byte in the color packet
  *
- * @param[in] led:                  The led index [0, @ref RGBLED_NUM)
+ * @param[in] led:                  The led index [0, @ref WS2812_LED_COUNT)
  * @param[in] bit:                  The bit index [0, 7]
  *
  * @return                          The bit index
diff --git a/platforms/chibios/drivers/ws2812_spi.c b/platforms/chibios/drivers/ws2812_spi.c
index 390884a2a4..03ffbd7f82 100644
--- a/platforms/chibios/drivers/ws2812_spi.c
+++ b/platforms/chibios/drivers/ws2812_spi.c
@@ -80,7 +80,7 @@
 #    define WS2812_CHANNELS 3
 #endif
 #define BYTES_FOR_LED (BYTES_FOR_LED_BYTE * WS2812_CHANNELS)
-#define DATA_SIZE (BYTES_FOR_LED * RGBLED_NUM)
+#define DATA_SIZE (BYTES_FOR_LED * WS2812_LED_COUNT)
 #define RESET_SIZE (1000 * WS2812_TRST_US / (2 * WS2812_TIMING))
 #define PREAMBLE_SIZE 4