* Workaround Zephyr bug for Nordic SPI(M) driver after the pinctrl refactor by using spi3 peripheral for the SPI bus for the WS2812 led_strip driver.
47 lines
851 B
Text
47 lines
851 B
Text
#include <dt-bindings/led/led.h>
|
|
|
|
&pinctrl {
|
|
spi3_default: spi3_default {
|
|
group1 {
|
|
psels = <NRF_PSEL(SPIM_MOSI, 0, 31)>;
|
|
};
|
|
};
|
|
|
|
spi3_sleep: spi3_sleep {
|
|
group1 {
|
|
psels = <NRF_PSEL(SPIM_MOSI, 0, 31)>;
|
|
low-power-enable;
|
|
};
|
|
};
|
|
};
|
|
|
|
&spi3 {
|
|
compatible = "nordic,nrf-spim";
|
|
status = "okay";
|
|
|
|
pinctrl-0 = <&spi3_default>;
|
|
pinctrl-1 = <&spi3_sleep>;
|
|
pinctrl-names = "default", "sleep";
|
|
|
|
led_strip: ws2812@0 {
|
|
compatible = "worldsemi,ws2812-spi";
|
|
label = "WS2812";
|
|
|
|
/* SPI */
|
|
reg = <0>; /* ignored, but necessary for SPI bindings */
|
|
spi-max-frequency = <4000000>;
|
|
|
|
/* WS2812 */
|
|
chain-length = <10>; /* arbitrary; change at will */
|
|
spi-one-frame = <0x70>;
|
|
spi-zero-frame = <0x40>;
|
|
|
|
color-mapping = <LED_COLOR_ID_GREEN LED_COLOR_ID_RED LED_COLOR_ID_BLUE>;
|
|
};
|
|
};
|
|
|
|
/ {
|
|
chosen {
|
|
zmk,underglow = &led_strip;
|
|
};
|
|
};
|