# 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 || COMPILE_TEST
	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 || !LEDS_CLASS_FLASH
	depends on LEDS_CLASS_MULTICOLOR || !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_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_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.

endif # LEDS_CLASS_FLASH
