# SPDX-License-Identifier: GPL-2.0-only
config LEDS_GPIO_REGISTER
	bool
	help
	  This option provides the function gpio_led_register_device.
	  As this function is used by arch code it must not be compiled as a
	  module.

# This library does not depend on NEW_LEDS and must be independent so it can be
# selected from other subsystems (specifically backlight).
config LEDS_EXPRESSWIRE
	bool
	depends on GPIOLIB

menuconfig NEW_LEDS
	bool "LED Support"
	help
	  Say Y to enable Linux LED support.  This allows control of supported
	  LEDs from both userspace and optionally, by kernel events (triggers).

if NEW_LEDS

config LEDS_CLASS
	tristate "LED Class Support"
	help
	  This option enables the LED sysfs class in /sys/class/leds.  You'll
	  need this to do anything useful with LEDs.  If unsure, say Y.

config LEDS_CLASS_FLASH
	tristate "LED Flash Class Support"
	depends on LEDS_CLASS
	help
	  This option enables the flash LED sysfs class in /sys/class/leds.
	  It wraps LED Class and adds flash LEDs specific sysfs attributes
	  and kernel internal API to it. You'll need this to provide support
	  for the flash related features of a LED device. It can be built
	  as a module.

config LEDS_CLASS_MULTICOLOR
	tristate "LED Multicolor Class Support"
	depends on LEDS_CLASS
	help
	  This option enables the multicolor LED sysfs class in /sys/class/leds.
	  It wraps LED class and adds multicolor LED specific sysfs attributes
	  and kernel internal API to it. You'll need this to provide support
	  for multicolor LEDs that are grouped together. This class is not
	  intended for single color LEDs. It can be built as a module.

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

	  See Documentation/ABI/testing/sysfs-class-led for details.

config LEDS_KUNIT_TEST
	tristate "KUnit tests for LEDs"
	depends on KUNIT && LEDS_CLASS
	default KUNIT_ALL_TESTS
	help
	  Say Y here to enable KUnit testing for the LEDs framework.

comment "LED drivers"

config LEDS_88PM860X
	tristate "LED Support for Marvell 88PM860x PMIC"
	depends on LEDS_CLASS
	depends on MFD_88PM860X
	help
	  This option enables support for on-chip LED drivers found on Marvell
	  Semiconductor 88PM8606 PMIC.

config LEDS_AN30259A
	tristate "LED support for Panasonic AN30259A"
	depends on LEDS_CLASS && I2C && OF
	help
	  This option enables support for the AN30259A 3-channel
	  LED driver.

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

config LEDS_APU
	tristate "Front panel LED support for PC Engines APU/APU2/APU3 boards"
	depends on LEDS_CLASS
	depends on X86 && DMI
	help
	  This driver makes the PC Engines APU1 front panel LEDs
	  accessible from userspace programs through the LED subsystem.

	  If you're looking for APU2/3, use the pcengines-apu2 driver.
	  (symbol CONFIG_PCENGINES_APU2)

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

config LEDS_ARIEL
	tristate "Dell Wyse 3020 status LED support"
	depends on LEDS_CLASS
	depends on (MACH_MMP3_DT && MFD_ENE_KB3930) || COMPILE_TEST
	help
	  This driver adds support for controlling the front panel status
	  LEDs on Dell Wyse 3020 (Ariel) board via the KB3930 Embedded
	  Controller.

	  Say Y to if your machine is a Dell Wyse 3020 thin client.

config LEDS_AW200XX
	tristate "LED support for Awinic AW20036/AW20054/AW20072/AW20108"
	depends on LEDS_CLASS
	depends on I2C
	help
	  This option enables support for the Awinic AW200XX LED controllers.
	  It is a matrix LED driver programmed via an I2C interface. Devices have
	  a set of individually controlled LEDs and support 3 pattern controllers
	  for auto breathing or group dimming control. Supported devices:
	    - AW20036 (3x12) 36 LEDs
	    - AW20054 (6x9)  54 LEDs
	    - AW20072 (6x12) 72 LEDs
	    - AW20108 (9x12) 108 LEDs

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

config LEDS_AW2013
	tristate "LED support for Awinic AW2013"
	depends on LEDS_CLASS && I2C && OF
	select REGMAP_I2C
	help
	  This option enables support for the AW2013 3-channel
	  LED driver.

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

config LEDS_BCM6328
	tristate "LED Support for Broadcom BCM6328"
	depends on LEDS_CLASS
	depends on HAS_IOMEM
	depends on OF
	help
	  This option enables support for LEDs connected to the BCM6328
	  LED HW controller accessed via MMIO registers.

config LEDS_BCM6358
	tristate "LED Support for Broadcom BCM6358"
	depends on LEDS_CLASS
	depends on HAS_IOMEM
	depends on OF
	help
	  This option enables support for LEDs connected to the BCM6358
	  LED HW controller accessed via MMIO registers.

config LEDS_CHT_WCOVE
	tristate "LED support for Intel Cherry Trail Whiskey Cove PMIC"
	depends on LEDS_CLASS
	depends on INTEL_SOC_PMIC_CHTWC
	help
	  This option enables support for charger and general purpose LEDs
	  connected to the Intel Cherrytrail Whiskey Cove PMIC.

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

config LEDS_CPCAP
	tristate "LED Support for Motorola CPCAP"
	depends on LEDS_CLASS
	depends on MFD_CPCAP
	depends on OF
	help
	  This option enables support for LEDs offered by Motorola's
	  CPCAP PMIC.

config LEDS_CR0014114
	tristate "LED Support for Crane CR0014114"
	depends on LEDS_CLASS
	depends on SPI
	depends on OF
	help
	  This option enables support for CR0014114 LED Board which
	  is widely used in vending machines produced by
	  Crane Merchandising Systems.

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

config LEDS_CROS_EC
	tristate "LED Support for ChromeOS EC"
	depends on MFD_CROS_EC_DEV
	depends on LEDS_CLASS_MULTICOLOR
	select LEDS_TRIGGERS
	default MFD_CROS_EC_DEV
	help
	  This option enables support for LEDs managed by ChromeOS ECs.
	  All LEDs exposed by the EC are supported in multicolor mode.
	  A hardware trigger to switch back to the automatic behaviour is
	  provided.

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

config LEDS_EL15203000
	tristate "LED Support for Crane EL15203000"
	depends on LEDS_CLASS
	depends on SPI
	depends on OF
	help
	  This option enables support for EL15203000 LED Board
	  (aka RED LED board) which is widely used in coffee vending
	  machines produced by Crane Merchandising Systems.

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

config LEDS_EXPRESSWIRE
	bool
	depends on GPIOLIB

config LEDS_TURRIS_OMNIA
	tristate "LED support for CZ.NIC's Turris Omnia"
	depends on LEDS_CLASS_MULTICOLOR
	depends on I2C
	depends on MACH_ARMADA_38X || COMPILE_TEST
	depends on OF
	depends on TURRIS_OMNIA_MCU
	depends on TURRIS_OMNIA_MCU_GPIO
	select LEDS_TRIGGERS
	help
	  This option enables basic support for the LEDs found on the front
	  side of CZ.NIC's Turris Omnia router. There are 12 RGB LEDs on the
	  front panel.

config LEDS_LM3530
	tristate "LCD Backlight driver for LM3530"
	depends on LEDS_CLASS
	depends on I2C
	help
	  This option enables support for the LCD backlight using
	  LM3530 ambient light sensor chip. This ALS chip can be
	  controlled manually or using PWM input or using ambient
	  light automatically.

config LEDS_LM3532
	tristate "LCD Backlight driver for LM3532"
	select REGMAP_I2C
	depends on LEDS_CLASS
	depends on I2C
	help
	  This option enables support for the LCD backlight using
	  LM3532 ambient light sensor chip. This ALS chip can be
	  controlled manually or using PWM input or using ambient
	  light automatically.

config LEDS_LM3533
	tristate "LED support for LM3533"
	depends on LEDS_CLASS
	depends on MFD_LM3533
	help
	  This option enables support for the LEDs on National Semiconductor /
	  TI LM3533 Lighting Power chips.

	  The LEDs can be controlled directly, through PWM input, or by the
	  ambient-light-sensor interface. The chip supports
	  hardware-accelerated blinking with maximum on and off periods of 9.8
	  and 77 seconds respectively.

config LEDS_LM3642
	tristate "LED support for LM3642 Chip"
	depends on LEDS_CLASS && I2C
	select REGMAP_I2C
	help
	  This option enables support for LEDs connected to LM3642.
	  The LM3642 is a 4MHz fixed-frequency synchronous boost
	  converter plus 1.5A constant current driver for a high-current
	  white LED.

config LEDS_LM3692X
	tristate "LED support for LM3692x Chips"
	depends on LEDS_CLASS && I2C && OF
	select REGMAP_I2C
	help
	  This option enables support for the TI LM3692x family
	  of white LED string drivers used for backlighting.

config LEDS_LOCOMO
	tristate "LED Support for Locomo device"
	depends on LEDS_CLASS
	depends on SHARP_LOCOMO
	help
	  This option enables support for the LEDs on Sharp Locomo.
	  Zaurus models SL-5500 and SL-5600.

config LEDS_MIKROTIK_RB532
	tristate "LED Support for Mikrotik Routerboard 532"
	depends on LEDS_CLASS
	depends on MIKROTIK_RB532
	help
	  This option enables support for the so called "User LED" of
	  Mikrotik's Routerboard 532.

config LEDS_MT6323
	tristate "LED Support for Mediatek MT6323 PMIC"
	depends on LEDS_CLASS
	depends on MFD_MT6397
	help
	  This option enables support for on-chip LED drivers found on
	  Mediatek MT6323 PMIC.

config LEDS_NET48XX
	tristate "LED Support for Soekris net48xx series Error LED"
	depends on LEDS_CLASS
	depends on SCx200_GPIO
	help
	  This option enables support for the Soekris net4801 and net4826 error
	  LED.

config LEDS_WRAP
	tristate "LED Support for the WRAP series LEDs"
	depends on LEDS_CLASS
	depends on SCx200_GPIO
	help
	  This option enables support for the PCEngines WRAP programmable LEDs.

config LEDS_COBALT_QUBE
	tristate "LED Support for the Cobalt Qube series front LED"
	depends on LEDS_CLASS
	depends on MIPS_COBALT || COMPILE_TEST
	help
	  This option enables support for the front LED on Cobalt Qube series

config LEDS_COBALT_RAQ
	bool "LED Support for the Cobalt Raq series"
	depends on LEDS_CLASS=y && (MIPS_COBALT || COMPILE_TEST)
	select LEDS_TRIGGERS
	help
	  This option enables support for the Cobalt Raq series LEDs.

config LEDS_SUN50I_A100
	tristate "LED support for Allwinner A100 RGB LED controller"
	depends on LEDS_CLASS_MULTICOLOR
	depends on ARCH_SUNXI || COMPILE_TEST
	help
	  This option enables support for the RGB LED controller found
	  in some Allwinner sunxi SoCs, including A100, R329, and D1.
	  It uses a one-wire interface to control up to 1024 LEDs.

config LEDS_SUNFIRE
	tristate "LED support for SunFire servers."
	depends on LEDS_CLASS
	depends on SPARC64
	select LEDS_TRIGGERS
	help
	  This option enables support for the Left, Middle, and Right
	  LEDs on the I/O and CPU boards of SunFire UltraSPARC servers.

config LEDS_IPAQ_MICRO
	tristate "LED Support for the Compaq iPAQ h3xxx"
	depends on LEDS_CLASS
	depends on MFD_IPAQ_MICRO
	help
	  Choose this option if you want to use the notification LED on
	  Compaq/HP iPAQ h3100 and h3600.

config LEDS_HP6XX
	tristate "LED Support for the HP Jornada 6xx"
	depends on LEDS_CLASS
	depends on SH_HP6XX
	help
	  This option enables LED support for the handheld
	  HP Jornada 620/660/680/690.

config LEDS_PCA9532
	tristate "LED driver for PCA9532 dimmer"
	depends on LEDS_CLASS
	depends on I2C && INPUT
	help
	  This option enables support for NXP pca9532
	  LED controller. It is generally only useful
	  as a platform driver

config LEDS_PCA9532_GPIO
	bool "Enable GPIO support for PCA9532"
	depends on LEDS_PCA9532
	depends on GPIOLIB
	help
	  Allow unused pins on PCA9532 to be used as gpio.

	  To use a pin as gpio pca9532_type in pca9532_platform data needs to
	  set to PCA9532_TYPE_GPIO.

config LEDS_GPIO
	tristate "LED Support for GPIO connected LEDs"
	depends on LEDS_CLASS
	depends on GPIOLIB || COMPILE_TEST
	help
	  This option enables support for the LEDs connected to GPIO
	  outputs. To be useful the particular board must have LEDs
	  and they must be connected to the GPIO lines.  The LEDs must be
	  defined as platform devices and/or OpenFirmware platform devices.
	  The code to use these bindings can be selected below.

config LEDS_LP3944
	tristate "LED Support for N.S. LP3944 (Fun Light) I2C chip"
	depends on LEDS_CLASS
	depends on I2C
	help
	  This option enables support for LEDs connected to the National
	  Semiconductor LP3944 Lighting Management Unit (LMU) also known as
	  Fun Light Chip.

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

config LEDS_LP3952
	tristate "LED Support for TI LP3952 2 channel LED driver"
	depends on LEDS_CLASS
	depends on I2C
	depends on GPIOLIB
	select REGMAP_I2C
	help
	  This option enables support for LEDs connected to the Texas
	  Instruments LP3952 LED driver.

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

config LEDS_LP50XX
	tristate "LED Support for TI LP5036/30/24/18/12/09 LED driver chip"
	depends on LEDS_CLASS && REGMAP_I2C
	depends on LEDS_CLASS_MULTICOLOR
	help
	  If you say yes here you get support for the Texas Instruments
	  LP5036, LP5030, LP5024, LP5018, LP5012 and LP5009 LED driver.

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

config LEDS_LP55XX_COMMON
	tristate "Common Driver for TI/National LP5521/5523/55231/5562/5569/8501"
	depends on LEDS_CLASS
	depends on LEDS_CLASS_MULTICOLOR
	depends on OF
	depends on I2C
	select FW_LOADER
	select FW_LOADER_USER_HELPER
	help
	  This option supports common operations for LP5521/5523/55231/5562/5569/
	  8501 devices.

config LEDS_LP5521
	tristate "LED Support for N.S. LP5521 LED driver chip"
	depends on LEDS_CLASS && I2C
	depends on LEDS_LP55XX_COMMON
	help
	  If you say yes here you get support for the National Semiconductor
	  LP5521 LED driver. It is 3 channel chip with programmable engines.
	  Driver provides direct control via LED class and interface for
	  programming the engines.

config LEDS_LP5523
	tristate "LED Support for TI/National LP5523/55231 LED driver chip"
	depends on LEDS_CLASS && I2C
	depends on LEDS_LP55XX_COMMON
	help
	  If you say yes here you get support for TI/National Semiconductor
	  LP5523/55231 LED driver.
	  It is 9 channel chip with programmable engines.
	  Driver provides direct control via LED class and interface for
	  programming the engines.

config LEDS_LP5562
	tristate "LED Support for TI LP5562 LED driver chip"
	depends on LEDS_CLASS && I2C
	depends on LEDS_LP55XX_COMMON
	help
	  If you say yes here you get support for TI LP5562 LED driver.
	  It is 4 channels chip with programmable engines.
	  Driver provides direct control via LED class and interface for
	  programming the engines.

config LEDS_LP5569
	tristate "LED Support for TI LP5569 LED driver chip"
	depends on LEDS_CLASS && I2C
	depends on LEDS_LP55XX_COMMON
	help
	  If you say yes here you get support for TI LP5569 LED driver.
	  It is 9 channels chip with programmable engines.
	  Driver provides direct control via LED class and interface for
	  programming the engines.

config LEDS_LP8501
	tristate "LED Support for TI LP8501 LED driver chip"
	depends on LEDS_CLASS && I2C
	depends on LEDS_LP55XX_COMMON
	help
	  If you say yes here you get support for TI LP8501 LED driver.
	  It is 9 channel chip with programmable engines.
	  Driver provides direct control via LED class and interface for
	  programming the engines.
	  It is similar as LP5523, but output power selection is available.
	  And register layout and engine program schemes are different.

config LEDS_LP8788
	tristate "LED support for the TI LP8788 PMIC"
	depends on LEDS_CLASS
	depends on MFD_LP8788
	help
	  This option enables support for the Keyboard LEDs on the LP8788 PMIC.

config LEDS_LP8860
	tristate "LED support for the TI LP8860 4 channel LED driver"
	depends on LEDS_CLASS && I2C && OF
	select REGMAP_I2C
	help
	  If you say yes here you get support for the TI LP8860 4 channel
	  LED driver.
	  This option enables support for the display cluster LEDs
	  on the LP8860 4 channel LED driver using the I2C communication
	  bus.

config LEDS_LP8864
	tristate "LED support for the TI LP8864/LP8866 4/6 channel LED drivers"
	depends on LEDS_CLASS && I2C && OF
	select REGMAP_I2C
	help
	  If you say yes here you get support for the TI LP8864-Q1,
	  LP8864S-Q1, LP8866-Q1, LP8866S-Q1 4/6 channel LED backlight
	  drivers with I2C interface.

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

config LEDS_CLEVO_MAIL
	tristate "Mail LED on Clevo notebook"
	depends on LEDS_CLASS && BROKEN
	depends on X86 && SERIO_I8042 && DMI
	help
	  This driver makes the mail LED accessible from userspace
	  programs through the LEDs subsystem. This LED has three
	  known modes: off, blink at 0.5Hz and blink at 1Hz.

	  The driver supports two kinds of interface: using ledtrig-timer
	  or through /sys/class/leds/clevo::mail/brightness. As this LED
	  cannot change its brightness it blinks instead. The brightness
	  value 0 means off, 1..127 means blink at 0.5Hz and 128..255 means
	  blink at 1Hz.

	  This module can drive the mail LED for the following notebooks:

	        Clevo D400P
	        Clevo D410J
	        Clevo D410V
	        Clevo D400V/D470V (not tested, but might work)
	        Clevo M540N
	        Clevo M5x0N (not tested, but might work)
	        Positivo Mobile (Clevo M5x0V)

	  If your model is not listed here you can try the "nodetect"
	  module parameter.

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

config LEDS_PCA955X
	tristate "LED Support for PCA955x I2C chips"
	depends on LEDS_CLASS
	depends on I2C
	help
	  This option enables support for LEDs connected to PCA955x
	  LED driver chips accessed via the I2C bus.  Supported
	  devices include PCA9550, PCA9551, PCA9552, and PCA9553.

config LEDS_PCA955X_GPIO
	bool "Enable GPIO support for PCA955X"
	depends on LEDS_PCA955X
	depends on GPIOLIB
	help
	  Allow unused pins on PCA955X to be used as gpio.

	  To use a pin as gpio the pin type should be set to
	  PCA955X_TYPE_GPIO in the device tree.


config LEDS_PCA963X
	tristate "LED support for PCA963x I2C chip"
	depends on LEDS_CLASS
	depends on I2C
	help
	  This option enables support for LEDs connected to the PCA963x
	  LED driver chip accessed via the I2C bus. Supported
	  devices include PCA9633 and PCA9634

config LEDS_PCA995X
	tristate "LED Support for PCA995x I2C chips"
	depends on LEDS_CLASS
	depends on I2C
	help
	  This option enables support for LEDs connected to PCA995x
	  LED driver chips accessed via the I2C bus. Supported
	  devices include PCA9955BTW, PCA9952TW and PCA9955TW.

config LEDS_QNAP_MCU
	tristate "LED Support for QNAP MCU controllers"
	depends on LEDS_CLASS
	depends on MFD_QNAP_MCU
	help
	  This option enables support for LEDs available on embedded
	  controllers used in QNAP NAS devices.

	  This driver can also be built as a module. If so, the module
	  will be called qnap-mcu-leds.

config LEDS_WM831X_STATUS
	tristate "LED support for status LEDs on WM831x PMICs"
	depends on LEDS_CLASS
	depends on MFD_WM831X
	help
	  This option enables support for the status LEDs of the WM831x
	  series of PMICs.

config LEDS_WM8350
	tristate "LED Support for WM8350 AudioPlus PMIC"
	depends on LEDS_CLASS
	depends on MFD_WM8350
	help
	  This option enables support for LEDs driven by the Wolfson
	  Microelectronics WM8350 AudioPlus PMIC.

config LEDS_DA903X
	tristate "LED Support for DA9030/DA9034 PMIC"
	depends on LEDS_CLASS
	depends on PMIC_DA903X
	help
	  This option enables support for on-chip LED drivers found
	  on Dialog Semiconductor DA9030/DA9034 PMICs.

config LEDS_DA9052
	tristate "Dialog DA9052/DA9053 LEDS"
	depends on LEDS_CLASS
	depends on PMIC_DA9052
	help
	  This option enables support for on-chip LED drivers found
	  on Dialog Semiconductor DA9052-BC and DA9053-AA/Bx PMICs.

config LEDS_DAC124S085
	tristate "LED Support for DAC124S085 SPI DAC"
	depends on LEDS_CLASS
	depends on SPI
	help
	  This option enables support for DAC124S085 SPI DAC from NatSemi,
	  which can be used to control up to four LEDs.

config LEDS_PWM
	tristate "PWM driven LED Support"
	depends on LEDS_CLASS
	depends on PWM
	help
	  This option enables support for pwm driven LEDs

config LEDS_REGULATOR
	tristate "REGULATOR driven LED support"
	depends on LEDS_CLASS
	depends on REGULATOR
	help
	  This option enables support for regulator driven LEDs.

config LEDS_BD2606MVV
	tristate "LED driver for BD2606MVV"
	depends on LEDS_CLASS
	depends on I2C
	select REGMAP_I2C
	help
	  This option enables support for BD2606MVV LED driver chips
	  accessed via the I2C bus. It supports setting brightness, with
	  the limitation that there are groups of two channels sharing
	  a brightness setting, but not the on/off setting.

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

config LEDS_BD2802
	tristate "LED driver for BD2802 RGB LED"
	depends on LEDS_CLASS
	depends on I2C
	help
	  This option enables support for BD2802GU RGB LED driver chips
	  accessed via the I2C bus.

config LEDS_INTEL_SS4200
	tristate "LED driver for Intel NAS SS4200 series"
	depends on LEDS_CLASS
	depends on PCI && DMI
	depends on X86
	help
	  This option enables support for the Intel SS4200 series of
	  Network Attached Storage servers. You may control the hard
	  drive or power LEDs on the front panel. Using this driver
	  can stop the front LED from blinking after startup.

config LEDS_LT3593
	tristate "LED driver for LT3593 controllers"
	depends on LEDS_CLASS
	depends on GPIOLIB || COMPILE_TEST
	help
	  This option enables support for LEDs driven by a Linear Technology
	  LT3593 controller. This controller uses a special one-wire pulse
	  coding protocol to set the brightness.

config LEDS_ADP5520
	tristate "LED Support for ADP5520/ADP5501 PMIC"
	depends on LEDS_CLASS
	depends on PMIC_ADP5520
	help
	  This option enables support for on-chip LED drivers found
	  on Analog Devices ADP5520/ADP5501 PMICs.

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

config LEDS_MAX5970
	tristate "LED Support for Maxim 5970"
	depends on LEDS_CLASS
	depends on MFD_MAX5970
	help
	  This option enables support for the Maxim MAX5970 & MAX5978 smart
	  switch indication LEDs via the I2C bus.

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

config LEDS_MC13783
	tristate "LED Support for MC13XXX PMIC"
	depends on LEDS_CLASS
	depends on MFD_MC13XXX
	help
	  This option enables support for on-chip LED drivers found
	  on Freescale Semiconductor MC13783/MC13892/MC34708 PMIC.

config LEDS_NS2
	tristate "LED support for Network Space v2 GPIO LEDs"
	depends on LEDS_CLASS
	depends on MACH_KIRKWOOD || MACH_ARMADA_370 || COMPILE_TEST
	default y if MACH_KIRKWOOD || MACH_ARMADA_370
	help
	  This option enables support for the dual-GPIO LEDs found on the
	  following LaCie/Seagate boards:

		Network Space v2 (and parents: Max, Mini)
		Internet Space v2
		d2 Network v2
		n090401 (Seagate NAS 4-Bay)

config LEDS_NETXBIG
	tristate "LED support for Big Network series LEDs"
	depends on LEDS_CLASS
	depends on MACH_KIRKWOOD || COMPILE_TEST
	depends on OF_GPIO
	default MACH_KIRKWOOD
	help
	  This option enables support for LEDs found on the LaCie 2Big
	  and 5Big Network v2 boards. The LEDs are wired to a CPLD and are
	  controlled through a GPIO extension bus.

config LEDS_TCA6507
	tristate "LED Support for TCA6507 I2C chip"
	depends on LEDS_CLASS && I2C
	help
	  This option enables support for LEDs connected to TC6507
	  LED driver chips accessed via the I2C bus.
	  Driver support brightness control and hardware-assisted blinking.

config LEDS_TLC591XX
	tristate "LED driver for TLC59108 and TLC59116 controllers"
	depends on LEDS_CLASS && I2C
	select REGMAP_I2C
	help
	  This option enables support for Texas Instruments TLC59108
	  and TLC59116 LED controllers.

config LEDS_MAX77650
	tristate "LED support for Maxim MAX77650 PMIC"
	depends on LEDS_CLASS && MFD_MAX77650
	help
	  LEDs driver for MAX77650 family of PMICs from Maxim Integrated.

config LEDS_MAX77705
	tristate "LED support for Maxim MAX77705 PMIC"
	depends on MFD_MAX77705
	depends on LEDS_CLASS
	depends on LEDS_CLASS_MULTICOLOR
	help
	  LED driver for MAX77705 PMIC from Maxim Integrated.

config LEDS_MAX8997
	tristate "LED support for MAX8997 PMIC"
	depends on LEDS_CLASS && MFD_MAX8997
	help
	  This option enables support for on-chip LED drivers on
	  MAXIM MAX8997 PMIC.

config LEDS_LM355x
	tristate "LED support for LM3554 and LM3556 chips"
	depends on LEDS_CLASS && I2C
	select REGMAP_I2C
	help
	  This option enables support for LEDs connected to LM3554
	  and LM3556. It includes Torch, Flash and Indicator functions.

config LEDS_OT200
	tristate "LED support for the Bachmann OT200"
	depends on LEDS_CLASS && HAS_IOPORT && (X86_32 || COMPILE_TEST)
	help
	  This option enables support for the LEDs on the Bachmann OT200.
	  Say Y to enable LEDs on the Bachmann OT200.

config LEDS_MENF21BMC
	tristate "LED support for the MEN 14F021P00 BMC"
	depends on LEDS_CLASS && MFD_MENF21BMC
	help
	  Say Y here to include support for the MEN 14F021P00 BMC LEDs.

	  This driver can also be built as a module. If so the module
	  will be called leds-menf21bmc.

config LEDS_IS31FL319X
	tristate "LED Support for ISSI IS31FL319x I2C LED controller family"
	depends on LEDS_CLASS && I2C
	select REGMAP_I2C
	help
	  This option enables support for LEDs connected to ISSI IS31FL319x
	  fancy LED driver chips accessed via the I2C bus.
	  Driver supports individual PWM brightness control for each channel.

	  This driver can also be built as a module. If so the module will be
	  called leds-is31fl319x.

config LEDS_IS31FL32XX
	tristate "LED support for ISSI IS31FL32XX I2C LED controller family"
	depends on LEDS_CLASS && I2C && OF
	help
	  Say Y here to include support for ISSI IS31FL32XX and Si-En SN32xx
	  LED controllers. They are I2C devices with multiple constant-current
	  channels, each with independent 256-level PWM control.

config LEDS_SC27XX_BLTC
	tristate "LED support for the SC27xx breathing light controller"
	depends on LEDS_CLASS && MFD_SC27XX_PMIC
	depends on OF
	help
	  Say Y here to include support for the SC27xx breathing light controller
	  LEDs.

	  This driver can also be built as a module. If so the module will be
	  called leds-sc27xx-bltc.

config LEDS_UPBOARD
	tristate "LED support for the UP board"
	depends on LEDS_CLASS && MFD_UPBOARD_FPGA
	help
	  This option enables support for the UP board LEDs.

	  This driver can also be built as a module. If so the module will be
	  called leds-upboard.

comment "LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)"

config LEDS_BLINKM
	tristate "LED support for the BlinkM I2C RGB LED"
	depends on LEDS_CLASS
	depends on I2C
	help
	  This option enables support for the BlinkM RGB LED connected
	  through I2C. Say Y to enable support for the BlinkM LED.

config LEDS_BLINKM_MULTICOLOR
	bool "Enable multicolor support for BlinkM I2C RGB LED"
	depends on LEDS_BLINKM
	depends on LEDS_CLASS_MULTICOLOR=y || LEDS_CLASS_MULTICOLOR=LEDS_BLINKM
	help
	  This option enables multicolor sysfs class support for BlinkM LED and
	  disables the older, separated sysfs interface

config LEDS_POWERNV
	tristate "LED support for PowerNV Platform"
	depends on LEDS_CLASS
	depends on PPC_POWERNV
	depends on OF
	help
	  This option enables support for the system LEDs present on
	  PowerNV platforms. Say 'y' to enable this support in kernel.
	  To compile this driver as a module, choose 'm' here: the module
	  will be called leds-powernv.

config LEDS_SYSCON
	bool "LED support for LEDs on system controllers"
	depends on LEDS_CLASS=y
	depends on MFD_SYSCON
	depends on OF
	help
	  This option enables support for the LEDs on syscon type
	  devices. This will only work with device tree enabled
	  devices.

config LEDS_PM8058
	tristate "LED Support for the Qualcomm PM8058 PMIC"
	depends on MFD_PM8XXX
	depends on LEDS_CLASS
	help
	  Choose this option if you want to use the LED drivers in
	  the Qualcomm PM8058 PMIC.

config LEDS_MLXCPLD
	tristate "LED support for the Mellanox boards"
	depends on X86 && DMI
	depends on LEDS_CLASS
	help
	  This option enables support for the LEDs on the Mellanox
	  boards. Say Y to enable these.

config LEDS_MLXREG
	tristate "LED support for the Mellanox switches management control"
	depends on LEDS_CLASS
	help
	  This option enables support for the LEDs on the Mellanox Ethernet and
	  InfiniBand switches. The driver can be activated by the platform device
	  device add call. Say Y to enable these. To compile this driver as a
	  module, choose 'M' here: the module will be called leds-mlxreg.

config LEDS_USER
	tristate "Userspace LED support"
	depends on LEDS_CLASS
	help
	  This option enables support for userspace LEDs. Say 'y' to enable this
	  support in kernel. To compile this driver as a module, choose 'm' here:
	  the module will be called uleds.

config LEDS_NIC78BX
	tristate "LED support for NI PXI NIC78bx devices"
	depends on LEDS_CLASS
	depends on HAS_IOPORT
	depends on X86 || COMPILE_TEST
	help
	  This option enables support for the User1 and User2 LEDs on NI
	  PXI NIC78bx devices.

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

config LEDS_SPI_BYTE
	tristate "LED support for SPI LED controller with a single byte"
	depends on LEDS_CLASS
	depends on SPI
	help
	  This option enables support for LED controller which use a single byte
	  for controlling the brightness. Currently the following controller is
	  supported: Ubiquiti airCube ISP microcontroller based LED controller.

config LEDS_TI_LMU_COMMON
	tristate "LED driver for TI LMU" if COMPILE_TEST
	select REGMAP
	help
	  Say Y to enable the LED driver for TI LMU devices.
	  This supports common features between the TI LM3532, LM3631, LM3632,
	  LM3633, LM3695 and LM3697.

config LEDS_LM3697
	tristate "LED driver for LM3697"
	depends on LEDS_CLASS && I2C && OF
	select LEDS_TI_LMU_COMMON
	help
	  Say Y to enable the LM3697 LED driver for TI LMU devices.
	  This supports the LED device LM3697.

config LEDS_LM36274
	tristate "LED driver for LM36274"
	depends on LEDS_CLASS && MFD_TI_LMU
	select LEDS_TI_LMU_COMMON
	help
	  Say Y to enable the LM36274 LED driver for TI LMU devices.
	  This supports the LED device LM36274.

config LEDS_ST1202
	tristate "LED Support for STMicroelectronics LED1202 I2C chips"
	depends on LEDS_CLASS
	depends on I2C
	depends on OF
	select LEDS_TRIGGERS
	select LEDS_TRIGGER_PATTERN
	help
	  Say Y to enable support for LEDs connected to LED1202
	  LED driver chips accessed via the I2C bus.

config LEDS_TPS6105X
	tristate "LED support for TI TPS6105X"
	depends on LEDS_CLASS
	depends on TPS6105X
	default y if TPS6105X
	help
	  This driver supports TPS61050/TPS61052 LED chips.
	  It is a single boost converter primarily for white LEDs and
	  audio amplifiers.

config LEDS_IP30
	tristate "LED support for SGI Octane machines"
	depends on LEDS_CLASS
	depends on SGI_MFD_IOC3 || COMPILE_TEST
	help
	  This option enables support for the Red and White LEDs of
	  SGI Octane machines.

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

config LEDS_ACER_A500
	tristate "Power button LED support for Acer Iconia Tab A500"
	depends on LEDS_CLASS && MFD_ACER_A500_EC
	help
	  This option enables support for the Power Button LED of
	  Acer Iconia Tab A500.

source "drivers/leds/blink/Kconfig"

comment "Flash and Torch LED drivers"
source "drivers/leds/flash/Kconfig"

comment "RGB LED drivers"
source "drivers/leds/rgb/Kconfig"

comment "LED Triggers"
source "drivers/leds/trigger/Kconfig"

comment "Simatic LED drivers"
source "drivers/leds/simatic/Kconfig"

endif # NEW_LEDS
