May 11, 2006 EDID 9

### NAME

edid - VESA Extended Display Identification Data

### SYNOPSIS

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

### CODE REFERENCES

This section describes places within the NetBSD source tree where actual code implementing or using the EDID subsystem can be found. All pathnames 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 NetBSD4.0.

### AUTHORS

Garrett D'Amore <gdamore@NetBSD.org>