menu "LED Support"

config LED
	bool "Enable LED support"
	depends on DM
	help
	  Many boards have LEDs which can be used to signal status or alerts.
	  U-Boot provides a uclass API to implement this feature. LED drivers
	  can provide access to board-specific LEDs. Use of the device tree
	  for configuration is encouraged.

config LED_BCM6328
	bool "LED Support for BCM6328"
	depends on LED && ARCH_BMIPS
	help
	  This option enables support for LEDs connected to the BCM6328
	  LED HW controller accessed via MMIO registers.
	  HW blinking is supported and up to 24 LEDs can be controlled.
	  All LEDs can blink at the same time but the delay is shared, which
	  means that if one LED is set to blink at 100ms and then a different
	  LED is set to blink at 200ms, both will blink at 200ms.

config LED_BCM6358
	bool "LED Support for BCM6358"
	depends on LED && ARCH_BMIPS
	help
	  This option enables support for LEDs connected to the BCM6358
	  LED HW controller accessed via MMIO registers.
	  HW has no blinking capabilities and up to 32 LEDs can be controlled.

config LED_BLINK
	bool "Support LED blinking"
	depends on LED
	help
	  Some drivers can support automatic blinking of LEDs with a given
	  period, without needing timers or extra code to handle the timing.
	  This option enables support for this which adds slightly to the
	  code size.

config SPL_LED
	bool "Enable LED support in SPL"
	depends on SPL && SPL_DM
	help
	  The LED subsystem adds a small amount of overhead to the image.
	  If this is acceptable and you have a need to use LEDs in SPL,
	  enable this option. You will need to enable device tree in SPL
	  for this to work.

config LED_GPIO
	bool "LED support for GPIO-connected LEDs"
	depends on LED && DM_GPIO
	help
	  Enable support for LEDs which are connected to GPIO lines. These
	  GPIOs may be on the SoC or some other device which provides GPIOs.
	  The GPIO driver must used driver model. LEDs are configured using
	  the device tree.

config LED_UNIPOLAR_GPIO
	bool "LED support for GPIO-connected unipolar LEDs"
	depends on LED && DM_GPIO
	help
	  Enable support for LEDs which are connected to GPIO lines. These
	  GPIOs may be on the SOC or some other device which provides GPIOs.
	  The GPIO driver must used driver model. LEDs are configured using
	  the device tree. Those LEDs are receiving unipolar code to control
	  its rgb state.

config AML_LED_PWM
	bool "LED support for AMLOGIC LED_PWM LEDs"
	depends on LED && DM_PWM
	help
	  Enable support for LEDs which are connected to PWM lines.
	  The PWM driver must used driver model. LEDs are configured using
	  the device tree.

config SPL_LED_GPIO
	bool "LED support for GPIO-connected LEDs in SPL"
        depends on SPL_LED && DM_GPIO
	help
	  This option is an SPL-variant of the LED_GPIO option.
	  See the help of LED_GPIO for details.

config LED_STATUS
	bool "Enable status LED API"
	help
	  Allows common u-boot commands to use a board's leds to
	  provide status for activities like booting and downloading files.

if LED_STATUS

# Hidden constants

config LED_STATUS_OFF
	int
	default 0

config LED_STATUS_BLINKING
	int
	default 1

config LED_STATUS_ON
	int
	default 2

# Hidden constants end

config LED_STATUS_GPIO
	bool "GPIO status LED implementation"
	help
	  The status LED can be connected to a GPIO pin. In such cases, the
	  gpio_led driver can be used as a status LED backend implementation.

config LED_STATUS_BOARD_SPECIFIC
	bool "Specific board"
	default y
	help
	  LED support is only for a specific board.

comment "LEDs parameters"

config LED_STATUS0
	bool "Enable status LED 0"

if LED_STATUS0

config LED_STATUS_BIT
	int "identification"
	help
	  CONFIG_LED_STATUS_BIT is passed into the __led_* functions to identify
	  which LED is being acted on.  As such, the chosen value must be unique
	  with respect to the other CONFIG_LED_STATUS_BIT's. Mapping the value
	  to a physical LED is the responsibility of the __led_* function.

config LED_STATUS_STATE
	int "initial state"
	range LED_STATUS_OFF LED_STATUS_ON
	default LED_STATUS_OFF
	help
	  Should be set one of the following:
	  0 - off
	  1 - blinking
	  2 - on

config LED_STATUS_FREQ
	int "blink frequency"
	range 2 10
	default 2
	help
	  The LED blink period calculated from LED_STATUS_FREQ:
	  LED_STATUS_PERIOD = CONFIG_SYS_HZ/LED_STATUS_FREQ
	  Values range: 2 - 10

endif # LED_STATUS0

config LED_STATUS1
	bool "Enable status LED 1"

if LED_STATUS1

config LED_STATUS_BIT1
	int "identification"
	help
	  CONFIG_LED_STATUS_BIT1 is passed into the __led_* functions to
	  identify which LED is being acted on.  As such, the chosen value must
	  be unique with respect to the other CONFIG_LED_STATUS_BIT's. Mapping
	  the value to a physical LED is the responsibility of the __led_*
	  function.

config LED_STATUS_STATE1
	int "initial state"
	range LED_STATUS_OFF LED_STATUS_ON
	default LED_STATUS_OFF
	help
	  Should be set one of the following:
	  0 - off
	  1 - blinking
	  2 - on

config LED_STATUS_FREQ1
	int "blink frequency"
	range 2 10
	default 2
	help
	  The LED blink period calculated from LED_STATUS_FREQ1:
	  LED_STATUS_PERIOD1 = CONFIG_SYS_HZ/LED_STATUS_FREQ1
	  Values range: 2 - 10

endif # LED_STATUS1

config LED_STATUS2
	bool "Enable status LED 2"

if LED_STATUS2

config LED_STATUS_BIT2
	int "identification"
	help
	  CONFIG_LED_STATUS_BIT2 is passed into the __led_* functions to
	  identify which LED is being acted on.  As such, the chosen value must
	  be unique with respect to the other CONFIG_LED_STATUS_BIT's. Mapping
	  the value to a physical LED is the responsibility of the __led_*
	  function.

config LED_STATUS_STATE2
	int "initial state"
	range LED_STATUS_OFF LED_STATUS_ON
	default LED_STATUS_OFF
	help
	  Should be set one of the following:
	  0 - off
	  1 - blinking
	  2 - on

config LED_STATUS_FREQ2
	int "blink frequency"
	range 2 10
	default 2
	help
	  The LED blink period calculated from LED_STATUS_FREQ2:
	  LED_STATUS_PERIOD2 = CONFIG_SYS_HZ/LED_STATUS_FREQ2
	  Values range: 2 - 10

endif # LED_STATUS2

config LED_STATUS3
	bool "Enable status LED 3"

if LED_STATUS3

config LED_STATUS_BIT3
	int "identification"
	help
	  CONFIG_LED_STATUS_BIT3 is passed into the __led_* functions to
	  identify which LED is being acted on.  As such, the chosen value must
	  be unique with respect to the other CONFIG_LED_STATUS_BIT's. Mapping
	  the value to a physical LED is the responsibility of the __led_*
	  function.

config LED_STATUS_STATE3
	int "initial state"
	range LED_STATUS_OFF LED_STATUS_ON
	default LED_STATUS_OFF
	help
	  Should be set one of the following:
	  0 - off
	  1 - blinking
	  2 - on

config LED_STATUS_FREQ3
	int "blink frequency"
	range 2 10
	default 2
	help
	  The LED blink period calculated from LED_STATUS_FREQ3:
	  LED_STATUS_PERIOD3 = CONFIG_SYS_HZ/LED_STATUS_FREQ3
	  Values range: 2 - 10

endif # LED_STATUS3

config LED_STATUS4
	bool "Enable status LED 4"

if LED_STATUS4

config LED_STATUS_BIT4
	int "identification"
	help
	  CONFIG_LED_STATUS_BIT4 is passed into the __led_* functions to
	  identify which LED is being acted on.  As such, the chosen value must
	  be unique with respect to the other CONFIG_LED_STATUS_BIT's. Mapping
	  the value to a physical LED is the responsibility of the __led_*
	  function.

config LED_STATUS_STATE4
	int "initial state"
	range LED_STATUS_OFF LED_STATUS_ON
	default LED_STATUS_OFF
	help
	  Should be set one of the following:
	  0 - off
	  1 - blinking
	  2 - on

config LED_STATUS_FREQ4
	int "blink frequency"
	range 2 10
	default 2
	help
	  The LED blink period calculated from LED_STATUS_FREQ4:
	  LED_STATUS_PERIOD4 = CONFIG_SYS_HZ/LED_STATUS_FREQ4
	  Values range: 2 - 10

endif # LED_STATUS4

config LED_STATUS5
	bool "Enable status LED 5"

if LED_STATUS5

config LED_STATUS_BIT5
	int "identification"
	help
	  CONFIG_LED_STATUS_BIT5 is passed into the __led_* functions to
	  identify which LED is being acted on.  As such, the chosen value must
	  be unique with respect to the other CONFIG_LED_STATUS_BIT's. Mapping
	  the value to a physical LED is the responsibility of the __led_*
	  function.

config LED_STATUS_STATE5
	int "initial state"
	range LED_STATUS_OFF LED_STATUS_ON
	default LED_STATUS_OFF
	help
	  Should be set one of the following:
	  0 - off
	  1 - blinking
	  2 - on

config LED_STATUS_FREQ5
	int "blink frequency"
	range 2 10
	default 2
	help
	  The LED blink period calculated from LED_STATUS_FREQ5:
	  LED_STATUS_PERIOD5 = CONFIG_SYS_HZ/LED_STATUS_FREQ5
	  Values range: 2 - 10

endif # LED_STATUS5

config LED_STATUS_BOOT_ENABLE
	bool "Enable BOOT LED"
	help
	  Enable to turn an LED on when the board is booting.

if LED_STATUS_BOOT_ENABLE

config LED_STATUS_BOOT
	int "LED to light when the board is booting"
	help
	  Valid enabled LED device number.

endif # LED_STATUS_BOOT_ENABLE

config LED_STATUS_RED_ENABLE
	bool "Enable red LED"
	help
	  Enable red status LED.

if LED_STATUS_RED_ENABLE

config LED_STATUS_RED
	int "Red LED identification"
	help
	  Valid enabled LED device number.

endif # LED_STATUS_RED_ENABLE

config LED_STATUS_YELLOW_ENABLE
	bool "Enable yellow LED"
	help
	  Enable yellow status LED.

if LED_STATUS_YELLOW_ENABLE

config LED_STATUS_YELLOW
	int "Yellow LED identification"
	help
	  Valid enabled LED device number.

endif # LED_STATUS_YELLOW_ENABLE

config LED_STATUS_BLUE_ENABLE
	bool "Enable blue LED"
	help
	  Enable blue status LED.

if LED_STATUS_BLUE_ENABLE

config LED_STATUS_BLUE
	int "Blue LED identification"
	help
	  Valid enabled LED device number.

endif # LED_STATUS_BLUE_ENABLE

config LED_STATUS_GREEN_ENABLE
	bool "Enable green LED"
	help
	  Enable green status LED.

if LED_STATUS_GREEN_ENABLE

config LED_STATUS_GREEN
	int "Green LED identification"
	help
	  Valid enabled LED device number (0-5).

endif # LED_STATUS_GREEN_ENABLE

config LED_STATUS_CMD
	bool "Enable status LED commands"

endif # LED_STATUS

endmenu
