status_led: Kconfig migration - introduction
authorUri Mashiach <uri.mashiach@compulab.co.il>
Thu, 19 Jan 2017 08:51:05 +0000 (10:51 +0200)
committerTom Rini <trini@konsulko.com>
Sat, 21 Jan 2017 20:12:33 +0000 (15:12 -0500)
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>
README
doc/README.LED
drivers/led/Kconfig

diff --git a/README b/README
index 7e0dd35f931facaea8e826bbbb07993bcbe5304e..a95348a876b4a53609ca5e384df5cc49abc61ac2 100644 (file)
--- 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
index c3bcb3ac8099631c83052eef042b965f5fc5b0f9..7aa95bddf7873fdbce191917919241d1858a7660 100644 (file)
@@ -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.
 
index fe74403460a94c95914fc5107fc79c667bd736ed..609b1fa3fe92a583424d393808c9661c3f716b8f 100644 (file)
@@ -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