May 11, 2006 DDC 9

### NAME

ddc - VESA Display Data Channel V2

### SYNOPSIS

```int` ddc_read_edid(`` ```i2c_tag_t tag` ```uint8_t *dest` ```size_t len` )

### DESCRIPTION

The ddc_read_edid(``) reads a VESA Extended Display Identification Data block (EDID) via VESA Display Data Channel (DDCv2). DDCv2 is a protocol for data exchange between display devices (such as monitors and flat panels) and host machines using an I2C bus.

The ```tag` argument is a machine-dependent tag used to specify the I2C bus on which the DDCv2 device is located. The ```dest` argument is a pointer to a buffer where the EDID data will be stored. The ```len` argument is the amount of data to read into the buffer. (The buffer must be large enough.) Typically, this value will be 128, which is the size of a normal EDID data block.

Normally the EDID data block will be post-processed with the edid_parse(``) function.

### RETURN VALUES

The ddc_read_edid(``) function returns zero on success, and non-zero otherwise.

### ENVIRONMENT

The ddc_read_edid(``) function is part of the ddc(4) driver, and is only included in the kernel if that driver is also included.

### EXAMPLES

The following code uses ddc_read_edid(``) 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);
            ...

Note that this must be called before the PCI bus is attached during autoconfiguration.

### SEE ALSO

ddc(4), edid(9), iic(9)

### HISTORY

DDCv2 support was added in NetBSD4.0.

### AUTHORS

Garrett D'Amore <gdamore@NetBSD.org>