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_BCM6753
	bool "LED Support for BCM6753"
	depends on LED && ARCH_BCM6753
	help
	  This option enables support for LEDs connected to the BCM6753
	  HW has blinking and fading capabilities and up to 32 LEDs can be controlled.

config LED_BCM6858
	bool "LED Support for BCM6858"
	depends on LED && (ARCH_BCM68360 || ARCH_BCM6858 || ARCH_BCM63158)
	help
	  This option enables support for LEDs connected to the BCM6858
	  HW has blinking capabilities and up to 32 LEDs can be controlled.

config LED_CORTINA
	bool "LED Support for Cortina Access CAxxxx SoCs"
	depends on LED && (CORTINA_PLATFORM)
	help
	  This option enables support for LEDs connected to the Cortina
	  Access CAxxxx SOCs.


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