AnsweredAssumed Answered

ADV7441 DVI input color problem

Question asked by Bhavyak on Dec 11, 2015
Latest reply on Dec 23, 2015 by mattp



I am using ADV7441 HDMI receiver interface which takes DVI input and gives out 24bit RGB output. The RGB output is just bypassed to the DVI output in the FPGA. At the output display we are seeing change in some colors. The blue color input changes to purple color and black changes to red. The other color components are also not very clean. Following are my register settings, I am setting the RGB output with automatic CSC and the CP_OP mode I am setting is mode 13 as per hardware datasheet. Is there any other setting that Im missing for this color problem to be solved.


   // CTS THRESHOLD is set to 0x1F



    // Recommended Setting for Bcaps Register Bit 1

    red_res = i2c_read(base,0x66>>1,0x40);

    value = (red_res & 0xFD);



  // Recommended Setting for Bcaps Register Bit 7 for DVI


     i2c_write(base,0x42>>1,0x03,0x0C) ; //Disable TOD

     i2c_write(base,0x42>>1,0x05,0x06) ; //Prim_Mode =0110b HDMI

     i2c_write(base,0x42>>1,0x1D,0x40) ; //Disable TRI_LLC

     i2c_write(base,0x42>>1,0x37,0x00) ; //Disable PCLK

     i2c_write(base,0x42>>1,0x6B,0xEE); // Enable DE, CP_OP= 14 (mode 13)

     i2c_write(base,0x42>>1,0x68,0xF2) ; //Auto CSC , RGB Out

     i2c_write(base,0x42>>1,0xBA,0xA0) ; //Enable HDMI and Analog in

     i2c_write(base,0x42>>1,0xC8,0x08) ; //Digital Fine Clamp Start position

     i2c_write(base,0x42>>1,0x7B,0x0D) ; //Disable AV code Insertion

     i2c_write(base,0x42>>1,0x7C,0x0F) ; //Positive Output Sync Polarity

     i2c_write(base,0x42>>1,0x7D,0xFF) ; //

     i2c_write(base,0x42>>1,0x7E,0xFF) ; //

     i2c_write(base,0x42>>1,0xF4,0x3F) ; //Max Drive Strength


     i2c_write(base,0x62>>1,0xF0,0x10) ; //ADI Recommended Write

     i2c_write(base,0x62>>1,0xF1,0x0F) ; //ADI Recommended Write

     i2c_write(base,0x62>>1,0xF4,0x20) ; //ADI Recommended Write


     i2c_write(base,0x6A>>1,0x15,0xEC) ; //Disable these mute mask bits

     i2c_write(base,0x6A>>1,0x1C,0x49) ; //Set MCLKOUT to output 256fs

     i2c_write(base,0x6A>>1,0x1D,0x04) ; // & Set Unmute Delay to 1_5 sec.

     i2c_write(base,0x6A>>1,0x5A,0x01) ; //Reset Audio Pll