# 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_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 Technologies, Inc. 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_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
