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

# 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>

July 24, 2013 | NetBSD 9.0