Messages in this thread |  | | From | Chuanhong Guo <> | Subject | [PATCH v4 0/3] leds: add driver for SPI driven WorldSemi WS2812B RGB LEDs | Date | Mon, 12 Dec 2022 12:55:55 +0800 |
| |
This patch adds support for driving a chain of WS2812B LED chips using SPI bus.
WorldSemi WS2812B is a individually addressable LED chip that can be chained together and controlled individually using a single wire. The chip recognize a long pulse as a bit of 1 and a short pulse as a bit of 0. Host sends a continuous stream of 24-bits color values, each LED chip takes the first 3 byte it receives as its color value and passes the leftover bytes to the next LED on the chain.
This driver simulates this protocol using SPI bus by sending a long pulse as 3'b110 and a short pulse as 3'b100. The SPI frequency needs to be 2.105MHz~2.85MHz for the timing to be correct and the controller needs to transfer all the bytes continuously.
Changes since v1: various dt binding fixes add support for default-brightness
Changes since v2: more dt binding fixes drop default-brightness and default-intensity
Changes since v3: 1. add more comments 2. rename reg to cascade 3. redo some line breaking 4. move duplicated pointer calculation into ws2812b_set_byte 5. reword error message 6. get ws2812b_priv from led cdev->dev->parent
Chuanhong Guo (3): dt-bindings: vendor-prefixes: add an entry for WorldSemi dt-bindings: leds: add worldsemi,ws2812b leds: add driver for SPI driven WorldSemi WS2812B RGB LEDs
.../bindings/leds/worldsemi,ws2812b.yaml | 116 +++++++++ .../devicetree/bindings/vendor-prefixes.yaml | 2 + drivers/leds/rgb/Kconfig | 11 + drivers/leds/rgb/Makefile | 1 + drivers/leds/rgb/leds-ws2812b.c | 231 ++++++++++++++++++ 5 files changed, 361 insertions(+) create mode 100644 Documentation/devicetree/bindings/leds/worldsemi,ws2812b.yaml create mode 100644 drivers/leds/rgb/leds-ws2812b.c
-- 2.38.1
|  |