allow LED initialization without STATUS_LED_BOOT

For current U-Boot to initialize status LEDs via status_led_init(), it
is required to have both CONFIG_STATUS_LED and STATUS_LED_BOOT defined.
This may be a particular concern with GPIO LEDs, where __led_init() is
required to correctly set up the GPIO (gpio_request and
gpio_direction_output). Without STATUS_LED_BOOT the initialization isn't
called, which could leave the user with a non-functional "led" command -
due to the fact that the LED routines in gpio_led.c use gpio_set_value()
just fine, but the GPIO never got set up properly in the first place.

I think having CONFIG_STATUS_LED is sufficient to justify a
corresponding call to status_led_init(), even with no STATUS_LED_BOOT
defined. To do so, common/board_r.c needs call that routine, so it now
is exposed via status_led.h.

Signed-off-by: Bernhard Nortmann <bernhard.nortmann@web.de>
[trini: Add dummy __led_init to pca9551_led.c]
Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
Bernhard Nortmann
2015-08-21 15:13:21 +02:00
committed by Tom Rini
parent d375ebbcb6
commit 13cfbe5135
4 changed files with 13 additions and 5 deletions

View File

@@ -116,8 +116,12 @@ static int pca9551_led_set_blink_rate(int idx, struct pca9551_blink_rate rate)
}
/*
* Functions referenced by cmd_led.c
* Functions referenced by cmd_led.c or status_led.c
*/
void __led_init(led_id_t id, int state)
{
}
void __led_set(led_id_t mask, int state)
{
if (state == STATUS_LED_OFF)

View File

@@ -73,7 +73,7 @@ led_dev_t led_dev[] = {
static int status_led_init_done = 0;
static void status_led_init (void)
void status_led_init(void)
{
led_dev_t *ld;
int i;