EDID(9) BSD Kernel Developer's Manual EDID(9)NAME
edid -- VESA Extended Display Identification Data
SYNOPSIS
#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 struc-
ture 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.
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.
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);
...
SEE ALSO ddc(9), iic(9)HISTORY
These routines were added in NetBSD 4.0.
AUTHORS
Garrett D'Amore <gdamore@NetBSD.org>
BSD May 11, 2006 BSD
Check Out this Related Man Page
ISAPNP(9) BSD Kernel Developer's Manual ISAPNP(9)NAME
ISAPNP, isapnp_devmatch, isapnp_config, isapnp_unconfig -- Plug 'n' Play ISA bus
SYNOPSIS
#include <sys/bus.h>
#include <dev/isa/isareg.h>
#include <dev/isa/isavar.h>
#include <dev/isapnp/isapnpreg.h>
#include <dev/isapnp/isapnpvar.h>
#include <dev/isapnp/isapnpdevs.h>
int
isapnp_devmatch(const struct isapnp_attach_args *ipa, const struct isapnp_devinfo *dinfo, int *variant);
int
isapnp_config(bus_space_tag_t iot, bus_space_tag_t memt, struct isapnp_attach_args *ipa);
void
isapnp_unconfig(bus_space_tag_t iot, bus_space_tag_t memt, struct isapnp_attach_args *ipa);
DESCRIPTION
The machine-independent ISAPNP subsystem provides support for ISAPNP devices. ISAPNP devices were developed to support "plug and play" con-
nection on the ISA bus. In all other aspects, the ISAPNP bus is same as the ISA bus (see isa(9)).
Devices on the ISAPNP bus are uniquely identified by a 7-character string. Resources, such as I/O address space and interrupts, should be
allocated to the devices by the machine firmware. On some machine the firmware seems doesn't work correctly and NetBSD will attempt to allo-
cate resources as necessary.
DATA TYPES
Drivers attached to the ISAPNP bus will make use of the following data types:
struct isapnp_matchinfo
NetBSD kernel contains a database of known ISAPNP devices. Each entry in the database has a struct isapnp_matchinfo. It contains
the following members:
const char *name; /* device id string */
int variant; /* variant flag */
struct isapnp_devinfo
Defines the devices supported by a driver. It contains pointer to an array of supported struct isapnp_matchinfo structures and a
pointer to another array of compatibility devices. It contains the following members:
struct isapnp_matchinfo *devlogic;
int nlogic;
struct isapnp_matchinfo *devcompat;
int ncompat;
struct isapnp_region
Describes ISAPNP bus-space regions. It contains the following members:
bus_space_handle_t h;
uint32_t base;
uint32_t length;
struct isapnp_pin
Describes the wiring of interrupts and DMA pins from the ISAPNP bus onto the host processor. It contains the following members:
uint8_t num;
uint8_t flags:4;
uint8_t type:4;
uint16_t bits;
struct isapnp_attach_args
A structure used to inform the driver of the device properties. It contains the following members:
bus_space_tag_t ipa_iot; /* isa i/o space tag */
bus_space_tag_t ipa_memt; /* isa mem space tag */
bus_dma_tag_t ipa_dmat; /* isa dma tag */
isa_chipset_tag_t ipa_ic;
struct isapnp_region ipa_io[ISAPNP_NUM_IO];
struct isapnp_region ipa_mem[ISAPNP_NUM_MEM];
struct isapnp_region ipa_mem32[ISAPNP_NUM_MEM32];
struct isapnp_pin ipa_irq[ISAPNP_NUM_IRQ];
struct isapnp_pin ipa_drq[ISAPNP_NUM_DRQ];
FUNCTIONS
isapnp_devmatch(ipa, dinfo, variant)
Matches the device described by the attachment ipa with the device-match information in dinfo. If the device is matched,
isapnp_devmatch() returns a non-zero value and variant is the flag describing the device variant. isapnp_devmatch() returns zero if
the device is not found.
isapnp_config(iot, memt, ipa)
Allocate device resources specified by ipa. The device is mapped into the I/O and memory bus spaces specified by bus-space tags iot
and memt respectively. The ipa_io, ipa_mem, ipa_mem32, ipa_irq, and ipa_drq members of ipa are updated to reflect the allocated and
mapped resources. isapnp_config() returns zero on success and non-zero on error.
isapnp_unconfig(iot, memt, ipa)
Free the resources allocated by isapnp_config().
AUTOCONFIGURATION
During autoconfiguration, an ISAPNP driver will receive a pointer to struct isapnp_attach_args describing the device attached to the ISAPNP
bus. Drivers match the device using ispnp_devmatch().
During the driver attach step, driver should initially allocate and map resources using isapnp_config(). The I/O (memory) bus-space
resources can be accessed using the bus-space tag ipa_iot (ipa_memt) and the bus-space handle ipa_io[0].h (ipa_mem[0].h) members of ipa.
Interrupts should be established using isa_intr_establish() (see isa(9)) with the IRQ specified by the ipa_irq[0].num member of ipa. Simi-
larly, the standard isa(9) DMA interface should be used with the ipa_drq[0].num member of ipa.
DMA SUPPORT
Extensive DMA facilities are provided through the isa(9) DMA facilities.
CODE REFERENCES
The ISAPNP subsystem itself is implemented within the file sys/dev/isapnp/isapnp.c. The database of the known devices exists within the file
sys/dev/isapnp/isapnpdevs.c and is generated automatically from the file sys/dev/isapnp/isapnpdevs. New devices should be added to this
file. The database can be regenerated using the Makefile sys/dev/isapnp/Makefile.isapnpdevs.
SEE ALSO isa(4), isapnp(4), pnpbios(4), autoconf(9), bus_dma(9), bus_space(9), driver(9), isa(9)
Plug and Play ISA Specification V1.0a, May 5 1994.
HISTORY
The machine-independent ISAPNP subsystem appear in NetBSD 1.3.
BSD June 19, 2001 BSD