EDID(9)                NetBSD Kernel Developer's Manual                EDID(9)

NAME
     edid -- VESA Extended Display Identification Data

SYNOPSIS
     #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 Identifica-
     tion 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 con-
     tains 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.

CODE REFERENCES
     This section describes places within the NetBSD source tree where actual
     code implementing or using the EDID subsystem can be found.  All path-
     names are relative to /usr/src.

     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.

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

SEE ALSO
     ddc(9), edid(9), iic(9)

HISTORY
     These routines were added in NetBSD 4.0.

AUTHORS
     Garrett D'Amore <gdamore@NetBSD.org>

NetBSD 5.0_STABLE                May 11, 2006                NetBSD 5.0_STABLE
