LVDS and DP through i2c

Kai-Uwe Behrmann ku.b at
Wed Dec 22 23:25:39 PST 2010


I try to talk to LVDS and DP connected displays over the i2c bus. What 
works nicely for external DVI displays appears silent for the internal 
one and DP. Any pointer what could be used or what shall be done to get a 

example code for EDID fetching:
/* 1. select i2c-dev node */
const char * device_name = "/dev/i2c-0";
/* 2. open device node */
int fd = open( device_name, O_RDWR );
/* 3. set adress */
ioctl(fd, I2C_SLAVE, 0x50)

/* 4. request desired block */
char bits[128] = {0};
int ret = write( fd, &bits, 1 );
if(ret == 1)
   /* 5. read data from node */
   char data[128];
   ret = read( fd, &data, 128 );

Already point 4 fails )-1) with a LVDS i2c node.
The DP port returns arbitrary data in point 5.

The DP is on a nvidia card, LVDS seems good on nvidia but not working on 
a evergreen.

libXcm[1] shall become capable of handling direct display communication 
for calibration (MCCS), identification (EEDID) and so on.

kind regards
Kai-Uwe Behrmann
developing for colour management +


More information about the xorg mailing list