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_BOOT
	bool "Enable LED boot support"
	depends on LED
	help
	  Enable LED boot support.

	  LED boot is a specific LED assigned to signal boot operation status.
	  Defined in Device Tree /options/u-boot node. Refer here for the supported
	  options [1].

	  [1] dtschema/schemas/options/u-boot.yaml

config LED_ACTIVITY
	bool "Enable LED activity support"
	depends on LED
	help
	  Enable LED activity support.

	  LED activity is a specific LED assigned to signal activity operation
	  like file trasnfer, flash write/erase...

	  Defined in Device Tree /options/u-boot node. Refer here for the supported
	  options [1].

	  [1] dtschema/schemas/options/u-boot.yaml

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 && BCM6855
	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 && (BCM6856 || BCM6858 || 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_LP5562
	bool "LED Support for LP5562"
	depends on LED && DM_I2C
	help
	  This option enables support for LEDs connected to the TI LP5562
	  4 channel I2C LED controller.  Driver fully supports blink on the
	  B/G/R LEDs.  White LED can blink, but re-uses the period from blue.

config LED_PWM
	bool "LED PWM"
	depends on LED && DM_PWM
	help
	  Enable support for LEDs connected to PWM.
	  Linux compatible ofdata.

config LED_BLINK
	bool "Support hardware 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 LED_SW_BLINK
	bool "Support software LED blinking"
	depends on LED
	select CYCLIC
	help
	  Turns on led blinking implemented in the software, useful when
	  the hardware doesn't support led blinking. Half of the period
	  led will be ON and the rest time it will be OFF. Standard
	  led commands can be used to configure blinking. Does nothing
	  if driver supports hardware blinking.
	  WARNING: Blinking may be inaccurate during execution of time
	  consuming commands (ex. flash reading). Also it completely
	  stops during OS booting.

config SPL_LED
	bool "Enable LED support in SPL"
	depends on 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 && SPL_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 legacy status LED API"
	depends on !LED
	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_CMD
	bool "Enable status LED commands"

endif # LED_STATUS

endmenu
