AnsweredAssumed Answered

ADV7611 I2C reset hanging issue

Question asked by sreejithsjt on Apr 15, 2017
Latest reply on Apr 15, 2017 by GuenterL

Hi,

I'm using ADV7611 IC for one of our custom Board (Xilinx Kintex 7). Used Vivado 14.4 for developing project. The register configurations what I did using SDK is

 

{0x98, 0xFF, 0x80},
{0x98, 0xF4, 0x80},
{0x98, 0xF5, 0x7C},
{0x98, 0xF8, 0x4C},
{0x98, 0xF9, 0x64},
{0x98, 0xFA, 0x6C},
{0x98, 0xFB, 0x68},
{0x98, 0xFD, 0x44},
{0x98, 0x01, 0x06},
{0x98, 0x02, 0xF5},
{0x98, 0x03, 0x40},
{0x98, 0x05, 0x28},
{0x98, 0x06, 0xA6},
{0x98, 0x0B, 0x44},
{0x98, 0x0C, 0x42},
{0x98, 0x14, 0x7F},
{0x98, 0x15, 0x80},
{0x98, 0x19, 0x83},
{0x98, 0x33, 0x40},
{0x44, 0xBA, 0x01},
{0x64, 0x40, 0x81},
{0x68, 0x9B, 0x03},
{0x68, 0xC1, 0x01},
{0x68, 0xC2, 0x01},
{0x68, 0xC3, 0x01},
{0x68, 0xC4, 0x01},
{0x68, 0xC5, 0x01},
{0x68, 0xC6, 0x01},
{0x68, 0xC7, 0x01},
{0x68, 0xC8, 0x01},
{0x68, 0xC9, 0x01},
{0x68, 0xCA, 0x01},
{0x68, 0xCB, 0x01},
{0x68, 0xCC, 0x01},
{0x68, 0x00, 0x00},
{0x68, 0x83, 0xFE},
{0x68, 0x6F, 0x0C},
{0x68, 0x85, 0x1F},
{0x68, 0x87, 0x70},
{0x68, 0x8D, 0x04},
{0x68, 0x8E, 0x1E},
{0x68, 0x1A, 0x8A},
{0x68, 0x57, 0xDA},
{0x68, 0x58, 0x01},
{0x68, 0x75, 0x10},
{0x72, 0x01, 0x00},
{0x72, 0x02, 0x18},
{0x72, 0x03, 0x00},
{0x72, 0x15, 0x00},
{0x72, 0x16, 0x70},
{0x72, 0x18, 0x46},
{0x72, 0x40, 0x80},
{0x72, 0x41, 0x10},
{0x72, 0x48, 0x08},
{0x72, 0x49, 0xA8},
{0x72, 0x4C, 0x00},
{0x72, 0x55, 0x40},
{0x72, 0x56, 0x08},
{0x72, 0x96, 0x20},
{0x72, 0x98, 0x03},
{0x72, 0x99, 0x02},
{0x72, 0x9C, 0x30},
{0x72, 0x9D, 0x61},
{0x72, 0xA2, 0xA4},
{0x72, 0xA3, 0xA4},
{0x72, 0xA5, 0x04},
{0x72, 0xAB, 0x40},
{0x72, 0xAF, 0x16},
{0x72, 0xBA, 0x60},
{0x72, 0xD1, 0xFF},
{0x72, 0xDE, 0xD8},
{0x72, 0xE4, 0x60},
{0x72, 0xFA, 0x7D}

 

In this first one is slave address, second one is register address and third one value. When I try to run the application its hanging in the first register write. ie I2C reset command (0x98, 0xFF, 0x80). 

 

/*
* Wait for the bus to go busy.
*/
StatusRegister = XIic_ReadReg(BaseAddress, XIIC_SR_REG_OFFSET);

 

while (( StatusRegister & XIIC_SR_BUS_BUSY_MASK) !=
XIIC_SR_BUS_BUSY_MASK) {
StatusRegister = XIic_ReadReg(BaseAddress,
XIIC_SR_REG_OFFSET);
}
After that no read/write is happening. Hence the HDMI detection is not happening.
If I'm not writing to FF other read/write will happen. 
Can you tell me What's wrong I'm doing? Any help for this will be appreciated. 
Thanks,

Outcomes