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
 DISPLAY_MARK	-- enable mark (decimal point), if implemented

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