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