# SPDX-License-Identifier: GPL-2.0-only

if NEW_LEDS

config LEDS_MT6360
	tristate "LED Support for Mediatek MT6360 PMIC"
	depends on LEDS_CLASS_FLASH && OF
	depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
	depends on DEVICE_MODULES_MFD_MT6360
	help
	  This option enables support for dual Flash LED drivers found on
	  Mediatek MT6360 PMIC.
	  Support Torch and Strobe mode independently current source.
	  Include Low-VF and short protection.

config LEDS_MT6362
	tristate "MT6362 SPMI LEDS driver"
	depends on LEDS_CLASS_FLASH && OF
	depends on V4L2_FLASH_LED_CLASS || !V4L2_FLASH_LED_CLASS
	depends on MFD_MT6362
	help
	  Say yes here to have support for the MT6362 LEDS
	  Provide strobe and torch mode with flashlight, and
	  indicator and moonlight with rgbled.

	  The driver can also be build as a module.
	  If so, the module will be called leds_mt6362

config LEDS_MTK
	tristate "Mediatek COMMON LED support"
	depends on LEDS_CLASS
	help
	  This option enables support for Mediatek common LEDs
	  say 'y' to enable this

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

config LEDS_MTK_PWM
	tristate "Mediatek pwm LED support"
	depends on LEDS_CLASS && LEDS_MTK
	depends on DEVICE_MODULES_PWM_MTK_DISP
	help
	  This option enables support for Mediatek pwm LEDs.
	  say 'y' to enable this

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

config LEDS_MTK_DISP
	tristate "Mediatek DISP LED support"
	depends on LEDS_CLASS && LEDS_MTK
	depends on MTK_CMDQ_MBOX_EXT
	help
	  This option enables support for Mediatek OLED Display LEDs
	  say 'y' to enable this

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

config LEDS_MT_BRIGHTNESS_HW_CHANGED
	bool "LED Class mt_brightness_hw_changed attribute support"
	depends on LEDS_CLASS
	help
	  This option enables support for the mt_brightness_hw_changed attribute
	  for LED sysfs class devices under /sys/class/leds.

	  See Documentation/ABI/testing/sysfs-class-led for details
	  this function is the same with brightness_hw_changed


config LEDS_REGULATOR_VIBRATOR
	tristate "LED regulator vibrator support"
	depends on LEDS_CLASS
	help
	  This option enables support for LED regulator vibrator.
	  say 'y' to enable this

	  To compile this driver as a module, choose 'M' here: the module
	  will be called regulator-vibrator.

endif # NEW_LEDS
