#
# 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.

config USERLED_EFFECTS
	bool "LED driver supports LED effects"
	default n
	---help---
		Enable support for LED effects (PWM, blinking, breathing).

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_PWM_FREQ
	int "PWM Frequency (Hz)"
	depends on RGBLED
	default 100
	---help---
		This controls the frequency of the PWM channel powering each led.

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 LP503X

	bool "LP503X I2C LED Driver"
	default n
	select I2C
	---help---
		Enable support for the TI LP503X LED driver which can be
		utilized to drive up to 36 (12 RGB) LEDs.

if LP503X

config LP503X_LOG_MODE
	bool "Enable logarithmic mode (y) or linear mode (n)"
	default y
	---help---
		Determines whether brightness scale is logarithmic or linear

config LP503X_POWER_SAVE
	bool "Enable power save mode"
	default y
	---help---
	Enable/disable automatic power saving mode

config LP503X_DITHER_MODE
	bool "Enable PWM dithering"
	default y
	---help---
	Enable/disable PWM dithering mode

config LP503X_MAX_CURRENT
	bool "Enable Max current option (25.5mA (n), or 35mA (y))"
	default n
	---help---
		Sets maximum output current to 25.5mA (default) or 35mA

config LP503X_GLOBAL_SHUTDOWN
	bool "Enable global LED shutdown"
	default n
	---help---
		When enabled (y), all LEDs will be turned off/disabled until re-enabled

config DEBUG_LP503X
	bool "Enable debug support for the LP503X"
	default n
	---help---
		Enables debug support for the LP503X

endif # LP503X

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: Depending on the board selected, 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---
		Frequency in Hz.
		On SPI mode (WS2812_NON_SPI_DRIVER not selected), this is
		the SPI frequency (commonly a few MHz) to generate the required
		waveforms to represent a 0/1 symbol.
		On non SPI mode (WS2812_NON_SPI_DRIVER selected), this 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