.\" $NetBSD: ddc.9,v 1.8 2017/07/03 21:28:48 wiz Exp $
.\"
.\" Copyright 2006 Itronix Inc.
.\" All rights reserved.
.\"
.\" Written by Garrett D'Amore for Itronix Inc.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. The name of Intronix Inc. may not be used to endorse
.\" or promote products derived from this software without specific prior
.\" written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY INTRONIX INC. ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ITRONIX INC. BE LIABLE FOR ANY
.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd May 11, 2006
.Dt DDC 9
.Os
.Sh NAME
.Nm ddc
.Nd VESA Display Data Channel V2
.Sh SYNOPSIS
.In dev/i2c/ddcvar.h
.Ft int
.Fo ddc_read_edid
.Fa "i2c_tag_t tag"
.Fa "uint8_t *dest"
.Fa "size_t len"
.Fc
.Sh DESCRIPTION
The
.Fn 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.
.Pp
The
.Fa tag
argument is a machine-dependent tag used to specify the I2C
bus on which the DDCv2 device is located.
The
.Fa dest
argument is a pointer to a buffer where the EDID data will be stored.
The
.Fa 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.
.Pp
Normally the EDID data block will be post-processed with the
.Fn edid_parse
function.
.Sh RETURN VALUES
The
.Fn ddc_read_edid
function returns zero on success, and non-zero otherwise.
.Sh ENVIRONMENT
The
.Fn ddc_read_edid
function is part of the
.Xr ddc 4
driver, and is only included in the kernel if that driver is also included.
.Sh EXAMPLES
The following code uses
.Fn ddc_read_edid
to retrieve and print information about a monitor:
.Pp
.Bd -literal -compact
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);
...
.Ed
.Pp
Note that this must be called before the PCI bus is attached during
autoconfiguration.
.Sh SEE ALSO
.Xr ddc 4 ,
.Xr edid 9 ,
.Xr iic 9
.Sh HISTORY
DDCv2 support was added in
.Nx 4.0 .
.Sh AUTHORS
.An Garrett D'Amore Aq Mt gdamore@NetBSD.org