Yes, i2c is there and works. It's rarely used, mostly by graphics drivers to read EDID information from monitor. I2C stack is also used on sam440 target, to read the RTC.
If you want to use I2C with e.g. parallel port, you will need to write a "driver". A driver is an OOP object with superclass CLID_Hidd_I2C. The driver class has to implement two methods only:
void PutBits(BOOL scl, BOOL sda); void GetBits(BOOL *scl, BOOL *sda);
how you implement them (which part of parallel port you are going to use), it's up to you. There are no direct examples how to use I2C, but you could look into the source code of drivers, which are using it, like eg. the IntelGMA driver (file intelG45_class.c).