#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#

menu "LED Support"

config USERLED
	bool "LED driver"
	default n
	---help---
		Enable standard user LED upper half driver.

if USERLED

config USERLED_LOWER
	bool "Generic Lower Half LED Driver"
	default n
	depends on ARCH_HAVE_LEDS
	---help---
		If the board supports the standard LED interfaces as
		defined in include/nuttx/board.h header file, then this
		standard LED lower half driver might be usable.

		In order for this generic driver to be usable:

		1. The board implementation must provide the LED
		   interfaces as defined in include/nuttx/board.h

		If your board does not meet these requirements, then the
		userled_lower.c file can still be copied to your your
		board src/ directory and modified for your specific board
		requirements.

config USERLED_LOWER_READSTATE
	bool "LED Driver Read Actual Pin State"
	default n
	depends on USERLED_LOWER
	---help---
		Extends the standard LED interface as defined in the
		include/nuttx/board.h header file with a function that
		checks the actual state of the pin controlling the LED,
		which can be used to find malfunctioning LEDs.

endif # USERLED

config LEDS_APA102
	bool "APA102 LED Strip"
	default n
	select SPI
	---help---
		Enable support for the APA102 LED Strip driver.

config LEDS_MAX7219
	bool "MAX7219 Numeric Display"
	default n
	select SPI
	---help---
		Enable support for the MAX7219 to control 7-segment displays.

config RGBLED
	bool "RGB LED Driver Support"
	default n
	---help---
		This selection enables building of the "upper-half" RGB LED driver.
		See include/nuttx/rgbled.h for further PWM driver information.

config RGBLED_INVERT
	bool "Invert RGB LED Output"
	depends on RGBLED
	default n
	---help---
		If the board has a common anode RGB LED (a LOW output turns ON
		each LED), this selection inverts the outputs so that the
		colors are displayed correctly.

config RGBLED_LIGHTNESS_CORRECTION
	bool "Apply Lightness Correction"
	depends on RGBLED
	default n
	---help---
		This selection enables an approximate CIE 1931 lightness
		correction which helps the RGB LED visually fade and blend
		in a more linear, smooth, and visually appealing fashion.

config PCA9635PW
	bool "PCA9635PW I2C LED Driver"
	default n
	select I2C
	---help---
		Enable support for the NXP PCA9635PW LED driver which can be
		utilized to drive up to 16 LED's.

config NCP5623C
	bool "NCP5623C I2C LED Driver"
	default n
	select I2C
	---help---
		Enable support for the onsemi NCP5623C LED driver which can be
		utilized to drive up to 3 LED's.

config WS2812
	bool "WS2812 LED Driver"
	default n
	select SPI
	---help---
		Enable support for the Worldsemi WS2812 LED driver which commonly
		found in LED strips.
		NOTE: Depening on the board slected this device may require
		exclusive use of an SPI bus as ws2812 LEDs have no CS or
		RESET line.

# NOTE: Once the older SPI driver is migrated to the new model
#       we should remove the "select SPI" in the above config.

config WS2812_NON_SPI_DRIVER
	bool "Support the new non-SPI WS2812 driver."
	default n
	depends on WS2812
	---help---
		The original driver used SPI hardware to clock bits to the
		pixels.  The driver is being re-designed to support other
		implementations.  Selecting this option builds the new
		model driver.

config WS2812_LED_COUNT
	int "Number of ws2812s connected."
	default 1
	range 1 65535
	depends on WS2812
	---help---
		The number of ws2812s chained to this port.  Although the 
		driver allows up to 65,535 ws2812s the practical limit will
		depend on processor speed and other resources.

config WS2812_HAS_WHITE
	bool "ws2812s have white LED."
	default n
	depends on WS2812
	---help---
		Some ws2812 work-alike chips have a white LED in addition
		to the standard red, green, and blue LEDs.  This option
		enables support for such chips.  Note that the driver does
		not support chains with a mix of RGB and RGBW pixels.

config WS2812_FREQUENCY
	int "WS2812 Bit Frequency (Hz)"
	default 800000
	depends on WS2812
	---help---
		This is should be set to the bit frequency of the
		ws2812s being used.  Newer chips use an 800 kHz
		bit frequency (the default); although, some older
		chips run at 400 kHz.
		
endmenu # LED Support
