| DDC(9) | Kernel Developer's Manual | DDC(9) | 
ddc —
#include <dev/i2c/ddcvar.h>
int
  
  ddc_read_edid(i2c_tag_t tag,
    uint8_t *dest, size_t len);
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.
ddc_read_edid() function returns zero on success,
  and non-zero otherwise.
ddc_read_edid() function is part of the
  ddc(4) driver, and is only included
  in the kernel if that driver is also included.
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.
| May 11, 2006 | NetBSD 9.4 |