blob: fc91250c2f221de18afcd47b9d2c821f410c0d2e [file] [log] [blame]
# Copyright (c) 2017 Linaro Limited
# Copyright (c) 2019 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
# The following blog post is an excellent resource about pulse timing:
#
# https://wp.josh.com/2014/05/13/ws2812-neopixels-are-not-so-finicky-once-you-get-to-know-them/
menuconfig WS2812_STRIP
bool "WS2812 (and compatible) LED strip driver"
select LED_STRIP_RGB_SCRATCH
help
Enable LED strip driver for daisy chains of WS2812-ish (or WS2812B,
WS2813, SK6812, Everlight B1414, or compatible) devices.
choice WS2812_STRIP_DRIVER
prompt "Driver backend"
default WS2812_STRIP_SPI
depends on WS2812_STRIP
config WS2812_STRIP_SPI
bool "SPI driver"
depends on SPI
help
The SPI driver is portable, but requires significantly more
memory (1 byte of overhead per bit of pixel data).
config WS2812_STRIP_I2S
bool "I2S driver"
depends on I2S
help
Uses the I2S peripheral, memory usage is 4 bytes per color,
times the number of pixels. A few more for the start and end
delay. The reset delay has a coarse resolution of ~20us.
config WS2812_STRIP_GPIO
bool "GPIO driver"
# Only an Cortex-M0 inline assembly implementation for the nRF51
# is supported currently.
depends on SOC_SERIES_NRF51X
help
The GPIO driver does bit-banging with inline assembly,
and is not available on all SoCs.
Note that this driver is not compatible with the Everlight B1414
controller.
endchoice