static I2CDevPtr DDC2Init(I2CBusPtr pBus) { I2CDevPtr dev = NULL; /* * Slow down the bus so that older monitors don't * miss things. */ pBus->RiseFallTime = 20; dev = DDC2MakeDevice(pBus, 0x00A0, "ddc2"); if (xf86I2CProbeAddress(pBus, 0x0060)) DDC2MakeDevice(pBus, 0x0060, "E-EDID segment register"); return dev; }
void nvclock_i2c_probe_device(I2CBusPtr bus, I2CSlaveAddr addr, const char *format, ...) { I2CDevPtr dev; char *s; va_list ap; if(xf86I2CProbeAddress(bus, addr)) { dev = xf86CreateI2CDevRec(); s = (char*)IOMalloc(8); va_start (ap, format); vsnprintf (s, 7, format, ap); va_end (ap); dev->DevName = s; dev->SlaveAddr = addr; dev->pI2CBus = bus; if (!xf86I2CDevInit(dev)) { IOFree(dev->DevName, 8); xf86DestroyI2CDevRec(dev, TRUE); } } }