LED display internal API
=======================================

This README describes the LED display API.

The API is defined by the include file include/led-display.h

The first step in to define CONFIG_CMD_DISPLAY in the board config file.
Then you need to provide the following functions to access LED display:

void display_set(int cmd);

This function should control the state of the LED display. Argument is
an ORed combination of the following values:
 DISPLAY_CLEAR	-- clear the display
 DISPLAY_HOME	-- set the position to the beginning of display

int display_putc(char c);

This function should display it's parameter on the LED display in the
current position. Returns the displayed character on success or -1 in
case of failure.

With this functions defined 'display' command will display it's
arguments on the LED display (or clear the display if called without
arguments).
