@@ -547,11 +547,15 @@ static int initr_kgdb(void)
}
#endif
-#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
+#ifdef CONFIG_STATUS_LED
static int initr_status_led(void)
{
+#ifdef STATUS_LED_BOOT
status_led_set(STATUS_LED_BOOT, STATUS_LED_BLINKING);
-
+#else
+ /* use invalid LED id to enforce status_led_init() */
+ status_led_set(-1, 0);
+#endif
return 0;
}
#endif
@@ -838,7 +842,7 @@ init_fnc_t init_sequence_r[] = {
|| defined(CONFIG_M68K)
timer_init, /* initialize timer */
#endif
-#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
+#ifdef CONFIG_STATUS_LED
initr_status_led,
#endif
/* PPC has a udelay(20) here dating from 2002. Why? */
@@ -94,12 +94,13 @@ void status_led_set (int led, int state)
{
led_dev_t *ld;
- if (led < 0 || led >= MAX_LED_DEV)
- return;
-
+ /* reordered, allows using invalid led ID to enforce init */
if (!status_led_init_done)
status_led_init ();
+ if (led < 0 || led >= MAX_LED_DEV)
+ return;
+
ld = &led_dev[led];
ld->state = state;