# SPDX-License-Identifier: GPL-2.0

if LEDS_CLASS_FLASH

config LEDS_AAT1290
	tristate "LED support for the AAT1290"
	depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
	depends on GPIOLIB || COMPILE_TEST
	depends on OF
	depends on PINCTRL
	help
	  This option enables support for the LEDs on the AAT1290.

config LEDS_AS3645A
	tristate "AS3645A and LM3555 LED flash controllers support"
	depends on I2C
	depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
	help
	  Enable LED flash class support for AS3645A LED flash
	  controller. V4L2 flash API is provided as well if
	  CONFIG_V4L2_FLASH_API is enabled.

config LEDS_KTD2692
	tristate "LED support for Kinetic KTD2692 flash LED controller"
	depends on OF
	depends on GPIOLIB
	select LEDS_EXPRESSWIRE
	help
	  This option enables support for Kinetic KTD2692 LED flash connected
	  through ExpressWire interface.

	  Say Y to enable this driver.

config LEDS_LM3601X
	tristate "LED support for LM3601x Chips"
	depends on LEDS_CLASS && I2C
	select REGMAP_I2C
	help
	  This option enables support for the TI LM3601x family
	  of flash, torch and indicator classes.

config LEDS_MAX77693
	tristate "LED support for MAX77693 Flash"
	depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
	depends on MFD_MAX77693
	depends on OF
	help
	  This option enables support for the flash part of the MAX77693
	  multifunction device. It has build in control for two leds in flash
	  and torch mode.

config LEDS_MT6360
	tristate "LED Support for Mediatek MT6360 PMIC"
	depends on LEDS_CLASS && OF
	depends on LEDS_CLASS_FLASH
	depends on LEDS_CLASS_MULTICOLOR
	depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
	depends on MFD_MT6360
	help
	  This option enables support for dual Flash LED drivers found on
	  Mediatek MT6360 PMIC.
	  Independent current sources supply for each flash LED support torch
	  and strobe mode.

config LEDS_MT6370_FLASH
	tristate "Flash LED Support for MediaTek MT6370 PMIC"
	depends on LEDS_CLASS
	depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
	depends on MFD_MT6370
	help
	  Support 2 channels and torch/strobe mode.
	  Say Y here to enable support for
	  MT6370_FLASH_LED device.

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

config LEDS_QCOM_FLASH
	tristate "LED support for flash module inside Qualcomm PMIC"
	depends on MFD_SPMI_PMIC || COMPILE_TEST
	depends on LEDS_CLASS && OF
	depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
	select REGMAP
	help
	  This option enables support for the flash module found in Qualcomm
	  Technologies, Inc. PMICs. The flash module can have 3 or 4 flash LED
	  channels and each channel is programmable to support up to 1.5 A full
	  scale current. It also supports connecting two channels' output together
	  to supply one LED component to achieve current up to 2 A. In such case,
	  the total LED current will be split symmetrically on each channel and
	  they will be enabled/disabled at the same time.

	  This driver can be built as a module, it will be called "leds-qcom-flash".

config LEDS_RT4505
	tristate "LED support for RT4505 flashlight controller"
	depends on I2C && OF
	depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
	select REGMAP_I2C
	help
	  This option enables support for the RT4505 flash LED controller.
	  RT4505 includes torch and flash functions with programmable current.
	  And it's commonly used to compensate the illuminance for the camera
	  inside the mobile product like as phones or tablets.

config LEDS_RT8515
	tristate "LED support for Richtek RT8515 flash/torch LED"
	depends on GPIOLIB
	depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
	help
	  This option enables support for the Richtek RT8515 flash
	  and torch LEDs found on some mobile phones.

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

config LEDS_S2M_FLASH
	tristate "Samsung S2M series PMICs flash/torch LED support"
	depends on LEDS_CLASS
	depends on MFD_SEC_CORE
	depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
	help
	  This option enables support for the flash/torch LEDs found in certain
	  Samsung S2M series PMICs, such as the S2MU005. It has a LED channel
	  dedicated for every physical LED. The LEDs can be controlled in flash
	  and torch modes.

config LEDS_SGM3140
	tristate "LED support for the SGM3140"
	depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
	help
	  This option enables support for the SGM3140 500mA Buck/Boost Charge
	  Pump LED Driver.

config LEDS_SY7802
	tristate "LED support for the Silergy SY7802"
	depends on I2C && OF
	depends on GPIOLIB
	select REGMAP_I2C
	help
	  This option enables support for the SY7802 flash LED controller.
	  SY7802 includes torch and flash functions with programmable current.

	  This driver can be built as a module, it will be called "leds-sy7802".

config LEDS_TPS6131X
	tristate "LED support for TI TPS6131x flash LED driver"
	depends on I2C && OF
	depends on GPIOLIB
	depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
	select REGMAP_I2C
	help
	  This option enables support for Texas Instruments TPS61310/TPS61311
	  flash LED driver.

	  This driver can be built as a module, it will be called "leds-tps6131x".

endif # LEDS_CLASS_FLASH
