xf86DDC.h revision b9a21c3c91c47e090316e28d759194e46628ed49
2e3d069236777cd62f755a02f4a239306b4ad21aLennart Poettering * This file contains all information to interpret a standard EDIC block
2e3d069236777cd62f755a02f4a239306b4ad21aLennart Poettering * transmitted by a display device via DDC (Display Data Channel). So far
2e3d069236777cd62f755a02f4a239306b4ad21aLennart Poettering * there is no information to deal with optional EDID blocks.
2e3d069236777cd62f755a02f4a239306b4ad21aLennart Poettering * DDC is a Trademark of VESA (Video Electronics Standard Association).
2e3d069236777cd62f755a02f4a239306b4ad21aLennart Poettering * Copyright 1998 by Egbert Eich <Egbert.Eich@Physik.TU-Darmstadt.DE>
2e3d069236777cd62f755a02f4a239306b4ad21aLennart Poettering/* speed up / slow down */
2e3d069236777cd62f755a02f4a239306b4ad21aLennart Poetteringtypedef void (* DDC1SetSpeedProc)(ScrnInfoPtr, xf86ddcSpeed);
3ffd4af22052963e7a29431721ee204e634bea75Lennart Poetteringextern _X_EXPORT xf86MonPtr xf86DoEDID_DDC1(
b872e9a05939bc3e0ac95a042592506a7488dd6fLennart Poetteringextern _X_EXPORT xf86MonPtr xf86DoEDID_DDC2(
0974a682d155a5874123ba7de9c1e314c6681e0fKay Sieversextern _X_EXPORT xf86MonPtr xf86DoEEDID(int scrnIndex, I2CBusPtr pBus, Bool);
885fdebc13b13307555e4b837fae604bcc4e72b4Lennart Poetteringextern _X_EXPORT xf86MonPtr xf86InterpretEEDID(
0974a682d155a5874123ba7de9c1e314c6681e0fKay Sieversxf86EdidMonitorSet(int scrnIndex, MonPtr Monitor, xf86MonPtr DDC);
0974a682d155a5874123ba7de9c1e314c6681e0fKay Sieversextern _X_EXPORT DisplayModePtr xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC);
9cde64ff264c432fc83be638e57d8fd6392793a6Lennart Poetteringxf86DisplayIDMonitorSet(int scrnIndex, MonPtr mon, xf86MonPtr DDC);
34e5a31ec5897de8ba1436dad53df99637569d0aLennart PoetteringFindDMTMode(int hsize, int vsize, int refresh, Bool rb);
bc6f2e7c62bcd08177f879423188c54289694619Kay Sieversextern _X_EXPORT const DisplayModeRec DMTModes[];
bc6f2e7c62bcd08177f879423188c54289694619Kay Sievers * Quirks to work around broken EDID data from various monitors.
bc6f2e7c62bcd08177f879423188c54289694619Kay Sieverstypedef enum {
bc6f2e7c62bcd08177f879423188c54289694619Kay Sievers /* First detailed mode is bogus, prefer largest mode at 60hz */
b47d419c25ecc735615a1088060c1ec8bef1e41fZbigniew Jędrzejewski-Szmek /* 135MHz clock is too high, drop a bit */
b47d419c25ecc735615a1088060c1ec8bef1e41fZbigniew Jędrzejewski-Szmek DDC_QUIRK_135_CLOCK_TOO_HIGH = 1 << 1,
bc6f2e7c62bcd08177f879423188c54289694619Kay Sievers /* Prefer the largest mode at 75 Hz */
bc6f2e7c62bcd08177f879423188c54289694619Kay Sievers /* Convert detailed timing's horizontal from units of cm to mm */
bc6f2e7c62bcd08177f879423188c54289694619Kay Sievers /* Convert detailed timing's vertical from units of cm to mm */
9df49b33583e8a7d0a252bc5bd532fd2448ef0c8Tom Gundersen /* Detailed timing descriptors have bogus size values, so just take the
9df49b33583e8a7d0a252bc5bd532fd2448ef0c8Tom Gundersen * maximum size and use that.
9df49b33583e8a7d0a252bc5bd532fd2448ef0c8Tom Gundersen /* Monitor forgot to set the first detailed is preferred bit. */
bc6f2e7c62bcd08177f879423188c54289694619Kay Sievers /* use +hsync +vsync for detailed mode */
5bdf22430e367799dfa66c724144b624c5479518Jan Janssen /* Force single-link DVI bandwidth limit */
5bdf22430e367799dfa66c724144b624c5479518Jan JanssenDisplayModePtr xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC);
5bdf22430e367799dfa66c724144b624c5479518Jan Janssentypedef void (* handle_detailed_fn)(struct detailed_monitor_section *,void *);
5bdf22430e367799dfa66c724144b624c5479518Jan Janssenxf86DDCDetectQuirks(int scrnIndex, xf86MonPtr DDC, Bool verbose);
5bdf22430e367799dfa66c724144b624c5479518Jan Janssenvoid xf86DetTimingApplyQuirks(struct detailed_monitor_section *det_mon,
5bdf22430e367799dfa66c724144b624c5479518Jan Janssentypedef void (* handle_video_fn)(struct cea_video_block *, void *);