I was trying to initialize the I2C on a 5502 using the function I2C_setup in the CSL. I noticed that I had to use the function twice to initialize the I2C at the speed that I wanted. I looked at the source and noticed that the I2CMDR register is being set before setting the prescaler and clock divide registers. I set the I2CMDR register at the end of the initalization and it would work properly.