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:
parent
d375ebbcb6
commit
13cfbe5135
|
@ -544,11 +544,14 @@ static int initr_kgdb(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
|
||||
#if defined(CONFIG_STATUS_LED)
|
||||
static int initr_status_led(void)
|
||||
{
|
||||
#if defined(STATUS_LED_BOOT)
|
||||
status_led_set(STATUS_LED_BOOT, STATUS_LED_BLINKING);
|
||||
|
||||
#else
|
||||
status_led_init();
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
@ -835,7 +838,7 @@ init_fnc_t init_sequence_r[] = {
|
|||
|| defined(CONFIG_M68K)
|
||||
timer_init, /* initialize timer */
|
||||
#endif
|
||||
#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
|
||||
#if defined(CONFIG_STATUS_LED)
|
||||
initr_status_led,
|
||||
#endif
|
||||
/* PPC has a udelay(20) here dating from 2002. Why? */
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#define STATUS_LED_BLINKING 1
|
||||
#define STATUS_LED_ON 2
|
||||
|
||||
void status_led_init(void);
|
||||
void status_led_tick (unsigned long timestamp);
|
||||
void status_led_set (int led, int state);
|
||||
|
||||
|
|
Loading…
Reference in New Issue