status_led: Kconfig migration - introduction

Move all of the status LED feature to drivers/led/Kconfig.
doc/README.LED updated to reflect the Kconfig implementation.

Tested boards: CL-SOM-AM57x, CM-T335

Signed-off-by: Uri Mashiach <uri.mashiach@compulab.co.il>
diff --git a/drivers/led/Kconfig b/drivers/led/Kconfig
index fe74403..609b1fa 100644
--- a/drivers/led/Kconfig
+++ b/drivers/led/Kconfig
@@ -17,7 +17,6 @@
 	  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
@@ -34,4 +33,326 @@
 	  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