int
edid_is_valid(
uint8_t *data
)
int
edid_parse(
uint8_t *data
struct edid_info *info
)
void
edid_print(
struct edid_info *info
)
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.
)
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.
/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
.
...
/* initialize i2c tag... */
...
if ((ddc_read_edid(tag, buffer, 128) == 0) &&
(edid_parse(buffer, &info) == 0))
edid_print(info);
...
struct edid_info info;
i2c_tag_t tag;
char buffer[128];