[U-Boot] [PATCH 1/2] status_led: Kconfig migration - introduction

Uri Mashiach uri.mashiach at compulab.co.il
Thu Jan 19 09:51:05 CET 2017


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 at compulab.co.il>
---
 README              |   8 +-
 doc/README.LED      |  58 +++++-----
 drivers/led/Kconfig | 323 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 355 insertions(+), 34 deletions(-)

diff --git a/README b/README
index 7e0dd35..a95348a 100644
--- a/README
+++ b/README
@@ -2033,7 +2033,7 @@ The following options need to be configured:
 
 		A byte containing the id of the VLAN.
 
-- Status LED:	CONFIG_STATUS_LED
+- Status LED:	CONFIG_LED_STATUS
 
 		Several configurations allow to display the current
 		status using a LED. For instance, the LED will blink
@@ -2041,15 +2041,15 @@ The following options need to be configured:
 		soon as a reply to a BOOTP request was received, and
 		start blinking slow once the Linux kernel is running
 		(supported by a status LED driver in the Linux
-		kernel). Defining CONFIG_STATUS_LED enables this
+		kernel). Defining CONFIG_LED_STATUS enables this
 		feature in U-Boot.
 
 		Additional options:
 
-		CONFIG_GPIO_LED
+		CONFIG_LED_STATUS_GPIO
 		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. Define CONFIG_GPIO_LED
+		status LED backend implementation. Define CONFIG_LED_STATUS_GPIO
 		to include the gpio_led driver in the U-Boot binary.
 
 		CONFIG_GPIO_LED_INVERTED_TABLE
diff --git a/doc/README.LED b/doc/README.LED
index c3bcb3a..7aa95bd 100644
--- a/doc/README.LED
+++ b/doc/README.LED
@@ -5,48 +5,48 @@ This README describes the status LED API.
 
 The API is defined by the include file include/status_led.h
 
-The first step is to define CONFIG_STATUS_LED in the board config file.
+The first step is to enable CONFIG_LED_STATUS in menuconfig:
+> Device Drivers > LED Support.
 
-If the LED support is only for a single board, define CONFIG_BOARD_SPECIFIC_LED
-in the board config file.
+If the LED support is only for specific board, enable
+CONFIG_LED_STATUS_BOARD_SPECIFIC in the menuconfig.
 
-At a minimum, these macros must be defined at
-STATUS_LED_BIT
-STATUS_LED_STATE
-STATUS_LED_PERIOD
+Status LEDS 0 to 5 are enabled by the following configurations at menuconfig:
+CONFIG_STATUS_LED0, CONFIG_STATUS_LED1, ... CONFIG_STATUS_LED5
 
-If there are multiple status LED's define
-STATUS_LED_BIT<n>
-STATUS_LED_STATE<n>
-STATUS_LED_PERIOD<n>
+The following should be configured for each of the enabled LEDs:
+CONFIG_STATUS_LED_BIT<n>
+CONFIG_STATUS_LED_STATE<n>
+CONFIG_STATUS_LED_FREQ<n>
+Where <n> is an integer 1 through 5 (empty for 0).
 
-Where <n> can a integer 1 through 3.
-
-STATUS_LED_BIT is passed into the __led_* functions to identify which LED is
-being acted on.  As such, the value choose must be unique with with respect to
-the other STATUS_LED_BIT's.  Mapping the value to a physical LED is the
+CONFIG_STATUS_LED_BIT is passed into the __led_* functions to identify which LED
+is being acted on. As such, the value choose must be unique with with respect to
+the other CONFIG_STATUS_LED_BIT's. Mapping the value to a physical LED is the
 reponsiblity of the __led_* function.
 
-STATUS_LED_STATE is the initial state of the LED. It should be set to one of
-these values: STATUS_LED_OFF or STATUS_LED_ON.
+CONFIG_STATUS_LED_STATE is the initial state of the LED. It should be set to one
+of these values: CONFIG_LED_STATUS_OFF or CONFIG_LED_STATUS_ON.
 
-STATUS_LED_PERIOD is how long is the LED blink period.  This usually set to
-(CONFIG_SYS_HZ / <N>) where <N> is the frequency of the blink. Typical values
-range from 2 to 10.
+CONFIG_STATUS_LED_FREQ determines the LED blink frequency.
+Values range from 2 to 10.
 
 Some other LED macros
+---------------------
 
-STATUS_LED_BOOT is the LED to light when the board is booting.  This must be a
-valid STATUS_LED_BIT value.
+CONFIG_STATUS_LED_BOOT is the LED to light when the board is booting.
+This must be a valid LED number (0-5).
 
-STATUS_LED_RED is the red LED.  It is used signal errors. This must be a valid
-STATUS_LED_BIT value. Other similar color LED's are STATUS_LED_YELLOW and
-STATUS_LED_BLUE.
+CONFIG_STATUS_LED_RED is the red LED. It is used to signal errors. This must be
+a valid LED number (0-5). Other similar color LED's macros are
+CONFIG_STATUS_LED_GREEN, CONFIG_STATUS_LED_YELLOW and CONFIG_STATUS_LED_BLUE.
 
-These board must define these functions
+General LED functions
+---------------------
+The following functions should be defined:
 
-__led_init is called once to initialize the LED to STATUS_LED_STATE. One time
-start up code should be placed here.
+__led_init is called once to initialize the LED to CONFIG_STATUS_LED_STATE.
+One time start up code should be placed here.
 
 __led_set is called to change the state of the LED.
 
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 @@ config SPL_LED
 	  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 @@ config SPL_LED_GPIO
 	  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
-- 
2.7.4



More information about the U-Boot mailing list