NAME
edid —
VESA Extended Display
Identification Data
SYNOPSIS
#include <dev/videomode/videomode.h>
#include <dev/videomode/edidvar.h>
#include <dev/videomode/edidreg.h>
int
edid_is_valid(
uint8_t *data);
int
edid_parse(
uint8_t *data,
struct edid_info *info);
void
edid_print(
struct edid_info *info);
DESCRIPTION
These functions provide support parsing the Extended Display Identification Data
which describes a display device such as a monitor or flat panel display.
The
edid_is_valid() function simply tests if the EDID block in
data contains valid data. This test includes a
verification of the checksum, and that valid vendor and product idenfication
data is present. The data block contain at least 128 bytes.
The
edid_parse() function parses the supplied
data block (which again, must be at least 128 bytes),
writing the relevant data into the structure pointed to by
info.
The
edid_print() function prints the data in the given
info structure to the console device.
RETURN VALUES
The
edid_is_valid() function returns 0 if the data block is
valid, and
EINVAL
otherwise. The
edid_parse() function returns zero if the data was
successfully parsed, and non-zero otherwise.
EXAMPLES
The following code uses these functions to retrieve and print information about
a monitor:
struct edid_info info;
i2c_tag_t tag;
char buffer[128];
...
/* initialize i2c tag... */
...
if ((ddc_read_edid(tag, buffer, 128) == 0) &&
(edid_parse(buffer, &info) == 0))
edid_print(&info);
...
CODE REFERENCES
The EDID subsystem is implemented within the file
sys/dev/videomode/edid.c.
The EDID subsystem also makes use of VESA Generalized Timing Formula located
located in
sys/dev/videomode/vesagtf.c and the generic
videomode database located in
sys/dev/videomode/videomode.c.
SEE ALSO
ddc(9),
iic(9)
HISTORY
These routines were added in
NetBSD 4.0.
AUTHORS
Garrett D'Amore
<
gdamore@NetBSD.org>