You noted that you are connecting to an external device. Any chance that device is pulling the I2C lines low ? As a test, remove the external devices from the J2 connector and leave the pull-ups still there (which will be required for I2C interfacing) - now can you read high values ?
For I2C, both SDA and SCL lines need pull-ups.
Also the same pins are shared with the PCIe connector. Any slicecard seated inside of the PCIe connector ? If yes, remove the slicecard and test again.
There are many stable I2C code postings that work well but here is the one we used on the XK-1A board with success:
http://www.xcore.com/projects/basic-i2c ... ng-adt7410
Verified with an external I2C device & Total Phase's Beagle tool.
As a suggestion, you should stabilize this quirk before working with I2C which expands the level of fun :)