# SPDX-License-Identifier: GPL-2.0

if LEDS_CLASS_MULTICOLOR

config LEDS_GROUP_MULTICOLOR
	tristate "LEDs group multi-color support"
	depends on OF
	help
	  This option enables support for monochrome LEDs that are grouped
	  into multicolor LEDs which is useful in the case where LEDs of
	  different colors are physically grouped in a single multi-color LED
	  and driven by a controller that doesn't have multi-color support.

	  To compile this driver as a module, choose M here: the module
	  will be called leds-group-multicolor.

config LEDS_KTD202X
	tristate "LED support for KTD202x Chips"
	depends on I2C
	depends on OF
	select REGMAP_I2C
	help
	  This option enables support for the Kinetic KTD2026/KTD2027
	  RGB/White LED driver found in different BQ mobile phones.
	  It is a 3 or 4 channel LED driver programmed via an I2C interface.

	  To compile this driver as a module, choose M here: the module
	  will be called leds-ktd202x.

config LEDS_PWM_MULTICOLOR
	tristate "PWM driven multi-color LED Support"
	depends on PWM
	help
	  This option enables support for PWM driven monochrome LEDs that are
	  grouped into multicolor LEDs.

	  To compile this driver as a module, choose M here: the module
	  will be called leds-pwm-multicolor.

config LEDS_QCOM_LPG
	tristate "LED support for Qualcomm LPG"
	depends on OF
	depends on PWM
	depends on SPMI
	help
	  This option enables support for the Light Pulse Generator found in a
	  wide variety of Qualcomm PMICs. The LPG consists of a number of PWM
	  channels and typically a shared pattern lookup table and a current
	  sink, intended to drive RGB LEDs. Each channel can either be used as
	  a LED, grouped to represent a RGB LED or exposed as PWM channels.

	  If compiled as a module, the module will be named leds-qcom-lpg.

config LEDS_MT6370_RGB
	tristate "LED Support for MediaTek MT6370 PMIC"
	depends on MFD_MT6370
	select LINEAR_RANGES
	help
	  Say Y here to enable support for MT6370_RGB LED device.
	  In MT6370, there are four channel current-sink LED drivers that
	  support hardware pattern for constant current, PWM, and breath mode.
	  Isink4 channel can also be used as a CHG_VIN power good indicator.

	  This driver can also be built as a module. If so, the module
	  will be called "leds-mt6370-rgb".

endif # LEDS_CLASS_MULTICOLOR
