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

	  This is not related to standard keyboard LEDs which are controlled
	  via the input system.

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

if LEDS_CLASS

comment "LED drivers"

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

config LEDS_ATMEL_PWM
	tristate "LED Support using Atmel PWM outputs"
	depends on ATMEL_PWM
	help
	  This option enables support for LEDs driven using outputs
	  of the dedicated PWM controller found on newer Atmel SOCs.

config LEDS_LOCOMO
	tristate "LED Support for Locomo device"
	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 MIKROTIK_RB532
	help
	  This option enables support for the so called "User LED" of
	  Mikrotik's Routerboard 532.

config LEDS_S3C24XX
	tristate "LED Support for Samsung S3C24XX GPIO LEDs"
	depends on ARCH_S3C2410
	help
	  This option enables support for LEDs connected to GPIO lines
	  on Samsung S3C24XX series CPUs, such as the S3C2410 and S3C2440.

config LEDS_AMS_DELTA
	tristate "LED Support for the Amstrad Delta (E3)"
	depends on MACH_AMS_DELTA
	help
	  This option enables support for the LEDs on Amstrad Delta (E3).

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

config LEDS_NET5501
	tristate "LED Support for Soekris net5501 series Error LED"
	depends on LEDS_TRIGGERS
	depends on X86 && LEDS_GPIO_PLATFORM && GPIO_CS5535
	select LEDS_TRIGGER_DEFAULT_ON
	default n
	help
	  Add support for the Soekris net5501 board (detection, error led
	  and GPIO).

config LEDS_FSG
	tristate "LED Support for the Freecom FSG-3"
	depends on MACH_FSG
	help
	  This option enables support for the LEDs on the Freecom FSG-3.

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

config LEDS_ALIX2
	tristate "LED Support for ALIX.2 and ALIX.3 series"
	depends on X86 && !GPIO_CS5535 && !CS5535_GPIO
	help
	  This option enables support for the PCEngines ALIX.2 and ALIX.3 LEDs.
	  You have to set leds-alix2.force=1 for boards with Award BIOS.

config LEDS_H1940
	tristate "LED Support for iPAQ H1940 device"
	depends on ARCH_H1940
	help
	  This option enables support for the LEDs on the h1940.

config LEDS_COBALT_QUBE
	tristate "LED Support for the Cobalt Qube series front LED"
	depends on MIPS_COBALT
	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
	select LEDS_TRIGGERS
	help
	  This option enables support for the Cobalt Raq series LEDs.

config LEDS_SUNFIRE
	tristate "LED support for SunFire servers."
	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_HP6XX
	tristate "LED Support for the HP Jornada 6xx"
	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 I2C && INPUT && EXPERIMENTAL
	help
	  This option enables support for NXP pca9532
	  LED controller. It is generally only useful
	  as a platform driver

config LEDS_GPIO
	tristate "LED Support for GPIO connected LEDs"
	depends on GENERIC_GPIO
	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_GPIO_PLATFORM
	bool "Platform device bindings for GPIO LEDs"
	depends on LEDS_GPIO
	default y
	help
	  Let the leds-gpio driver drive LEDs which have been defined as
	  platform devices.  If you don't know what this means, say yes.

config LEDS_GPIO_OF
	bool "OpenFirmware platform device bindings for GPIO LEDs"
	depends on LEDS_GPIO && OF_DEVICE
	default y
	help
	  Let the leds-gpio driver drive LEDs which have been defined as
	  of_platform devices.  For instance, LEDs which are listed in a "dts"
	  file.

config LEDS_LP3944
	tristate "LED Support for N.S. LP3944 (Fun Light) I2C chip"
	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_CLEVO_MAIL
	tristate "Mail LED on Clevo notebook"
	depends on X86 && SERIO_I8042 && DMI
	help
	  This driver makes the mail LED accessible from userspace
	  programs through the leds subsystem. This LED have three
	  known mode: 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 it's 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 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_WM831X_STATUS
	tristate "LED support for status LEDs on WM831x PMICs"
	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 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 PMIC_DA903X
	help
	  This option enables support for on-chip LED drivers found
	  on Dialog Semiconductor DA9030/DA9034 PMICs.

config LEDS_DAC124S085
	tristate "LED Support for DAC124S085 SPI DAC"
	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 HAVE_PWM
	help
	  This option enables support for pwm driven LEDs

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

config LEDS_BD2802
	tristate "LED driver for BD2802 RGB LED"
	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 PCI && DMI
	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 GENERIC_GPIO
	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 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_DELL_NETBOOKS
	tristate "External LED on Dell Business Netbooks"
	depends on X86 && ACPI_WMI
	help
	  This adds support for the Latitude 2100 and similar
	  notebooks that have an external LED.

config LEDS_MC13783
	tristate "LED Support for MC13783 PMIC"
	depends on MFD_MC13783
	help
	  This option enable support for on-chip LED drivers found
	  on Freescale Semiconductor MC13783 PMIC.

config LEDS_TRIGGERS
	bool "LED Trigger support"
	help
	  This option enables trigger support for the leds class.
	  These triggers allow kernel events to drive the LEDs and can
	  be configured via sysfs. If unsure, say Y.

if LEDS_TRIGGERS

comment "LED Triggers"

config LEDS_TRIGGER_TIMER
	tristate "LED Timer Trigger"
	help
	  This allows LEDs to be controlled by a programmable timer
	  via sysfs. Some LED hardware can be programmed to start
	  blinking the LED without any further software interaction.
	  For more details read Documentation/leds-class.txt.

	  If unsure, say Y.

config LEDS_TRIGGER_IDE_DISK
	bool "LED IDE Disk Trigger"
	depends on IDE_GD_ATA
	help
	  This allows LEDs to be controlled by IDE disk activity.
	  If unsure, say Y.

config LEDS_TRIGGER_HEARTBEAT
	tristate "LED Heartbeat Trigger"
	help
	  This allows LEDs to be controlled by a CPU load average.
	  The flash frequency is a hyperbolic function of the 1-minute
	  load average.
	  If unsure, say Y.

config LEDS_TRIGGER_BACKLIGHT
	tristate "LED backlight Trigger"
	help
	  This allows LEDs to be controlled as a backlight device: they
	  turn off and on when the display is blanked and unblanked.

	  If unsure, say N.

config LEDS_TRIGGER_GPIO
	tristate "LED GPIO Trigger"
	depends on GPIOLIB
	help
	  This allows LEDs to be controlled by gpio events. It's good
	  when using gpios as switches and triggering the needed LEDs
	  from there. One use case is n810's keypad LEDs that could
	  be triggered by this trigger when user slides up to show
	  keypad.

	  If unsure, say N.

config LEDS_TRIGGER_DEFAULT_ON
	tristate "LED Default ON Trigger"
	help
	  This allows LEDs to be initialised in the ON state.
	  If unsure, say Y.

comment "iptables trigger is under Netfilter config (LED target)"
	depends on LEDS_TRIGGERS

endif # LEDS_TRIGGERS

endif # LEDS_CLASS

endif # NEW_LEDS
