Status LED
========================================

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.

If the LED support is only for a single board, define CONFIG_BOARD_SPECIFIC_LED
in the board config file.

At a minimum, these macros must be defined at
STATUS_LED_BIT
STATUS_LED_STATE
STATUS_LED_PERIOD

If there are multiple status LED's define
STATUS_LED_BIT<n>
STATUS_LED_STATE<n>
STATUS_LED_PERIOD<n>

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
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.

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.

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.

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.

These board must define these functions

__led_init is called once to initialize the LED to STATUS_LED_STATE. One time
start up code should be placed here.

__led_set is called to change the state of the LED.

__led_toggle is called to toggle the current state of the LED.

Colour LED
========================================

Colour LED's are at present only used by ARM.

The functions names explain their purpose.

coloured_LED_init
red_LED_on
red_LED_off
green_LED_on
green_LED_off
yellow_LED_on
yellow_LED_off
blue_LED_on
blue_LED_off

These are weakly defined in lib_arm/board.c to noops. Where applicable, define
these functions in the board specific source.

TBD : Describe older board dependent macros similar to what is done for
CONFIG_TQM8xxL.

TBD : Describe general support via asm/status_led.h
