We are facing some I2C related issue with AD9889B where Ti8168 is the master and AD9889B is working as slave. We are able to perform I2C read in AD9889 but I2C write fails. Some of the observations that we came across are:
(1) I2C read is successful for the entire range of control registers provided by AD9889B
(2) I2C read of the some registers like 0x94 (Interrupt group 1 mask), 0x95 (interrupt group 2 mask), 0x96 (Individual interrupt enable for group 1), 0x97 (individual interrupt enable for group 2), 0xA4 ( CLK Divide), 0xA5 (RSVD) and 0xB8 differed from the default values even though we haven't done any modification. These I2C read have been done just after powering it up.
According to the datasheet, register 0xA5 is a RSVD register whose value must be set to 0x04 for proper operation. Also the register 0xB8 is a read only register whose MSB is fixed as 0. On the contrary, the value in register 0xB8 was read as 0x80 which indicates that the MSB is set as 1.
(3) I2C write is failing for almost all the registers. It was successful only for a few set of registers like 0x94, 0x95, 0xa4, etc.
(4) The AD/PO pin has been set to high which sets the address of the device as 0x7A.
(5) The Hot Plug Detect Pin (HPD) switches to high when we connect a monitor.
(6) ADV7441 is also being connected to the same I2C bus which we are able to configure without any problems. So there may not be any issues with the I2C bus. I believe, AD9889 has got nothing special and should also work similarly.
Is there any global register which must be configured before we can write to any other registers in AD9889B?