From 3d70766327422bcd918b6940298f7557ab10d248 Mon Sep 17 00:00:00 2001
From: kb-elmo <lorwel@mailbox.org>
Date: Fri, 15 Jan 2021 22:42:30 +0100
Subject: Add BGR byte order for WS2812 drivers (#11562)

* add byte order bgr for ws2812

* update docs for driver change

* Update ws2812_driver.md

* Update docs/ws2812_driver.md

Co-authored-by: Ryan <fauxpark@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
---
 drivers/chibios/ws2812_spi.c | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'drivers/chibios/ws2812_spi.c')

diff --git a/drivers/chibios/ws2812_spi.c b/drivers/chibios/ws2812_spi.c
index a933424362..89df2987b5 100644
--- a/drivers/chibios/ws2812_spi.c
+++ b/drivers/chibios/ws2812_spi.c
@@ -70,6 +70,10 @@ static void set_led_color_rgb(LED_TYPE color, int pos) {
     for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.r, j);
     for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.g, j);
     for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.b, j);
+#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_BGR)
+    for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + j] = get_protocol_eq(color.b, j);
+    for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE + j] = get_protocol_eq(color.g, j);
+    for (int j = 0; j < 4; j++) tx_start[BYTES_FOR_LED * pos + BYTES_FOR_LED_BYTE * 2 + j] = get_protocol_eq(color.r, j);
 #endif
 }
 
-- 
cgit v1.2.3