ddc: Skeleton for xf86DoDisplayID()
This commit is contained in:
		
							parent
							
								
									0b36f68efb
								
							
						
					
					
						commit
						c302a5ff49
					
				| 
						 | 
				
			
			@ -426,7 +426,7 @@ xf86DoEEDID(int scrnIndex, I2CBusPtr pBus, Bool complete)
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    if (tmp && complete)
 | 
			
		||||
	tmp->flags |= EDID_COMPLETE_RAWDATA;
 | 
			
		||||
	tmp->flags |= MONITOR_EDID_COMPLETE_RAWDATA;
 | 
			
		||||
 | 
			
		||||
    return tmp;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -447,3 +447,61 @@ xf86DoEDID_DDC2(int scrnIndex, I2CBusPtr pBus)
 | 
			
		|||
{
 | 
			
		||||
    return xf86DoEEDID(scrnIndex, pBus, FALSE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* XXX write me */
 | 
			
		||||
static void *
 | 
			
		||||
DDC2ReadDisplayID(void)
 | 
			
		||||
{
 | 
			
		||||
    return FALSE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Attempts to probe the monitor for DisplayID information, if NoDDC and
 | 
			
		||||
 * NoDDC2 are unset.  DisplayID blocks are interpreted and the results
 | 
			
		||||
 * returned in an xf86MonPtr.
 | 
			
		||||
 *
 | 
			
		||||
 * This function does not affect the list of modes used by drivers -- it is up
 | 
			
		||||
 * to the driver to decide policy on what to do with DisplayID information.
 | 
			
		||||
 *
 | 
			
		||||
 * @return pointer to a new xf86MonPtr containing the DisplayID information.
 | 
			
		||||
 * @return NULL if no monitor attached or failure to interpret the DisplayID.
 | 
			
		||||
 */
 | 
			
		||||
xf86MonPtr
 | 
			
		||||
xf86DoDisplayID(int scrnIndex, I2CBusPtr pBus)
 | 
			
		||||
{
 | 
			
		||||
    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
 | 
			
		||||
    unsigned char *did = NULL;
 | 
			
		||||
    xf86MonPtr tmp = NULL;
 | 
			
		||||
    I2CDevPtr dev = NULL;
 | 
			
		||||
    /* Default DDC and DDC2 to enabled. */
 | 
			
		||||
    Bool noddc = FALSE, noddc2 = FALSE;
 | 
			
		||||
    OptionInfoPtr options;
 | 
			
		||||
 | 
			
		||||
    options = xalloc(sizeof(DDCOptions));
 | 
			
		||||
    if (!options)
 | 
			
		||||
	return NULL;
 | 
			
		||||
    memcpy(options, DDCOptions, sizeof(DDCOptions));
 | 
			
		||||
    xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, options);
 | 
			
		||||
 | 
			
		||||
    xf86GetOptValBool(options, DDCOPT_NODDC, &noddc);
 | 
			
		||||
    xf86GetOptValBool(options, DDCOPT_NODDC2, &noddc2);
 | 
			
		||||
    xfree(options);
 | 
			
		||||
 | 
			
		||||
    if (noddc || noddc2)
 | 
			
		||||
	return NULL;
 | 
			
		||||
 | 
			
		||||
    if (!(dev = DDC2Init(scrnIndex, pBus)))
 | 
			
		||||
	return NULL;
 | 
			
		||||
 | 
			
		||||
    if ((did = DDC2ReadDisplayID())) {
 | 
			
		||||
	tmp = xcalloc(1, sizeof(*tmp));
 | 
			
		||||
	if (!tmp)
 | 
			
		||||
	    return NULL;
 | 
			
		||||
 | 
			
		||||
	tmp->scrnIndex = scrnIndex;
 | 
			
		||||
	tmp->flags |= MONITOR_DISPLAYID;
 | 
			
		||||
	tmp->rawData = did;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return tmp;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue