98 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 			DDC.HOWTO
 | |
| 
 | |
|   This file describes how to add DDC support to a chipset driver.
 | |
| 
 | |
| 1) DDC INITIALIZATION
 | |
| 
 | |
|    When implementing DDC in the driver one has the choice between
 | |
|    DDC1 and DDC2. 
 | |
|    DDC1 data is continuously transmitted by a DDC1 capable display 
 | |
|    device. The data is send serially over a data line; the Vsync 
 | |
|    signal serves as clock. Only one EDID 1.x data block can be 
 | |
|    transmitted using DDC1. Since transmission of an EDID1 block 
 | |
|    using a regular Vsync frequency would take up several seconds 
 | |
|    the driver can increase the Vsync frequency to up to 25 kHz as 
 | |
|    soon as it detects DDC1 activity on the data line.
 | |
|    DDC2 data is transmitted using the I2C protocol. This requires
 | |
|    an additional clock line. DDC2 is capable of transmitting EDID1
 | |
|    and EDID2 block as well as a VDIF block on display devices that 
 | |
|    support these.  
 | |
|    Display devices switch into the DDC2 mode as soon as they detect
 | |
|    activity on the DDC clock line. Once the are in DDC2 mode they
 | |
|    stop transmitting DDC1 signals until the next power cycle.
 | |
| 
 | |
|    Some graphics chipset configurations which are not capable of
 | |
|    DDC2 might still be able to read DDC1 data. Where available
 | |
|    DDC2 it is preferable. 
 | |
| 	
 | |
|    All relevant prototypes and defines are in xf86DDC.h.
 | |
|    DDC2 additionally requires I2C support. The I2C prototypes
 | |
|    are in xf86i2c.h.
 | |
| 
 | |
|    DDC1 Support:
 | |
| 
 | |
|      The driver has to provide a read function which waits for the
 | |
|      end of the next Vsync signal and reads in and returns the status
 | |
|      of the DDC line:
 | |
| 
 | |
|      unsigned int XXX_ddc1Read(ScrnInfoPtr pScrn)
 | |
|      
 | |
|      Additionally a function is required to increase the Vsync
 | |
|      frequency to max. 25 kHz. 
 | |
|  
 | |
|      void XXX_ddc1SetSpeed(ScrnInfoPtr pScrn, xf86ddcSpeed speed)
 | |
|  
 | |
|      If the speed argument is DDC_FAST the function should increase
 | |
|      the Vsync frequency on DDC_SLOW it should restore the original
 | |
|      value. For convenience a generic ddc1SetSpeed() function is provided
 | |
|      in the vga module for VGA-like chipsets.     
 | |
| 	
 | |
|      void vgaHWddc1SetSpeed(ScrnInfoPtr pScrn, sf86ddcSpeed speed).
 | |
| 
 | |
|      To read out the DDC1 data the driver should call 
 | |
| 
 | |
|      xf86MonPtr xf86DoEDID_DDC1(int scrnIndex, 
 | |
|                               void (*DDC1SetSpeed)(ScrnInfoPtr, xf86ddcSpeed),
 | |
|                               unsigned int (*DDC1Read)(ScrnInfoPtr))
 | |
|  
 | |
|      in PreInit(). DDC1SetSpeed is a pointer to the SetSpeed()
 | |
|      function, DDC1Read has to point to the DDC1 read function.
 | |
|      The function will return a pointer to the xf86Monitor structure
 | |
|      which contains all information retrieved by DDC.
 | |
|      NULL will be returned on failure.
 | |
| 
 | |
|    DDC2 Support
 | |
|  
 | |
|      To read out DDC2 information I2C has to be initialized first.
 | |
|      (See documentation for the i2c module). 
 | |
|      The function 
 | |
|      
 | |
|      xf86MonPtr xf86DoEDID_DDC2(int scrnIndex, I2CBusPtr pBus)
 | |
| 
 | |
|      is provided to read out and process DDC2 data. A pointer
 | |
|      to the I2CBusRec of the appropriate I2C Bus has to be passed
 | |
|      as the second argument.
 | |
|      The function will return a pointer to the xf86Monitor structure
 | |
|      which contains all information retrieved by DDC.
 | |
|      NULL will be returned on failure.
 | |
| 
 | |
|    Printing monitor parameters   
 | |
| 
 | |
|      To print out the information contained in the xf86Monitor
 | |
|      structure the function 
 | |
| 
 | |
|      xf86MonPtr xf86PrintEDID(xf86MonPtr monitor)
 | |
|  
 | |
|      is provided.
 | |
| 
 | |
|     Further processing of the xf86Monitor structure is not yet 
 | |
|     implemented. However, it is planned to use the information
 | |
|     about video modes, gamma values etc.
 | |
|     Therefore it is strongly recommended to read out DDC data
 | |
|     before any video mode processing is done.
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| $XFree86: xc/programs/Xserver/hw/xfree86/ddc/DDC.HOWTO,v 1.2 1998/12/06 13:30:39 dawes Exp $
 |