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

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

endif # LEDS_CLASS_FLASH
