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
HISTORY
These routines were added in NetBSD 4.0.
AUTHORS
Garrett D'Amore <gdamore@NetBSD.org>