Commit | Line | Data |
---|---|---|
a09e091a JB |
1 | DDC.HOWTO |
2 | ||
3 | This file describes how to add DDC support to a chipset driver. | |
4 | ||
5 | 1) DDC INITIALIZATION | |
6 | ||
7 | When implementing DDC in the driver one has the choice between | |
8 | DDC1 and DDC2. | |
9 | DDC1 data is continuously transmitted by a DDC1 capable display | |
10 | device. The data is send serially over a data line; the Vsync | |
11 | signal serves as clock. Only one EDID 1.x data block can be | |
12 | transmitted using DDC1. Since transmission of an EDID1 block | |
13 | using a regular Vsync frequency would take up several seconds | |
14 | the driver can increase the Vsync frequency to up to 25 kHz as | |
15 | soon as it detects DDC1 activity on the data line. | |
16 | DDC2 data is transmitted using the I2C protocol. This requires | |
17 | an additional clock line. DDC2 is capable of transmitting EDID1 | |
18 | and EDID2 block as well as a VDIF block on display devices that | |
19 | support these. | |
20 | Display devices switch into the DDC2 mode as soon as they detect | |
21 | activity on the DDC clock line. Once the are in DDC2 mode they | |
22 | stop transmitting DDC1 signals until the next power cycle. | |
23 | ||
24 | Some graphics chipset configurations which are not capable of | |
25 | DDC2 might still be able to read DDC1 data. Where available | |
26 | DDC2 it is preferable. | |
27 | ||
28 | All relevant prototypes and defines are in xf86DDC.h. | |
29 | DDC2 additionally requires I2C support. The I2C prototypes | |
30 | are in xf86i2c.h. | |
31 | ||
32 | DDC1 Support: | |
33 | ||
34 | The driver has to provide a read function which waits for the | |
35 | end of the next Vsync signal and reads in and returns the status | |
36 | of the DDC line: | |
37 | ||
38 | unsigned int XXX_ddc1Read(ScrnInfoPtr pScrn) | |
39 | ||
40 | Additionally a function is required to increase the Vsync | |
41 | frequency to max. 25 kHz. | |
42 | ||
43 | void XXX_ddc1SetSpeed(ScrnInfoPtr pScrn, xf86ddcSpeed speed) | |
44 | ||
45 | If the speed argument is DDC_FAST the function should increase | |
46 | the Vsync frequency on DDC_SLOW it should restore the original | |
47 | value. For convenience a generic ddc1SetSpeed() function is provided | |
48 | in the vga module for VGA-like chipsets. | |
49 | ||
50 | void vgaHWddc1SetSpeed(ScrnInfoPtr pScrn, sf86ddcSpeed speed). | |
51 | ||
52 | To read out the DDC1 data the driver should call | |
53 | ||
54 | xf86MonPtr xf86DoEDID_DDC1(int scrnIndex, | |
55 | void (*DDC1SetSpeed)(ScrnInfoPtr, xf86ddcSpeed), | |
56 | unsigned int (*DDC1Read)(ScrnInfoPtr)) | |
57 | ||
58 | in PreInit(). DDC1SetSpeed is a pointer to the SetSpeed() | |
59 | function, DDC1Read has to point to the DDC1 read function. | |
60 | The function will return a pointer to the xf86Monitor structure | |
61 | which contains all information retrieved by DDC. | |
62 | NULL will be returned on failure. | |
63 | ||
64 | DDC2 Support | |
65 | ||
66 | To read out DDC2 information I2C has to be initialized first. | |
67 | (See documentation for the i2c module). | |
68 | The function | |
69 | ||
70 | xf86MonPtr xf86DoEDID_DDC2(int scrnIndex, I2CBusPtr pBus) | |
71 | ||
72 | is provided to read out and process DDC2 data. A pointer | |
73 | to the I2CBusRec of the appropriate I2C Bus has to be passed | |
74 | as the second argument. | |
75 | The function will return a pointer to the xf86Monitor structure | |
76 | which contains all information retrieved by DDC. | |
77 | NULL will be returned on failure. | |
78 | ||
79 | Printing monitor parameters | |
80 | ||
81 | To print out the information contained in the xf86Monitor | |
82 | structure the function | |
83 | ||
84 | xf86MonPtr xf86PrintEDID(xf86MonPtr monitor) | |
85 | ||
86 | is provided. | |
87 | ||
88 | Further processing of the xf86Monitor structure is not yet | |
89 | implemented. However, it is planned to use the information | |
90 | about video modes, gamma values etc. | |
91 | Therefore it is strongly recommended to read out DDC data | |
92 | before any video mode processing is done. | |
93 | ||
94 | ||
95 | ||
96 | ||
97 | $XFree86: xc/programs/Xserver/hw/xfree86/ddc/DDC.HOWTO,v 1.2 1998/12/06 13:30:39 dawes Exp $ |