Post Go back to editing

ADV7623 scale text

We use the ADV7623 for superimpose textdata on the hd-video (1080p) . Runs perfect, but the
text is very small, so we tried to scale it with TBOX_V_SCALE and TBOX_H_SCALE, without success.
If we want to increase the text size, have we to change the font data??

Another problem occured: when we tried to show a sentence with more than 16 characters, we need to use

more "words". But how can we get the information where the first "word" ends to continue with the next one?

Thanks for your help!
Klaus

  • Hi,

    Swap RAM should be done after setting TBOX_V_SCALE and TBOX_H_SCALE value.But the font quality will decreased  when using Horizontal or Vertical scaling value,

    Hence, More than one font can be used to increase the text size programmatically.

    We can find the next word (TBOX) location by calculating the offset of the each glyphs.

    Thanks,

    Poornima

  • Hello Poornima

    Thanks for your fast response. What do you meen with swap RAM?
    I only use the internal memory. 

    The string RAM is written dynamically ( when new measurement data are received).

    Then I write the Tbox instr. RAM and set the TBOX enable. Set the TBOX_V_SCALE and TBOX_H_SCALE

    bits an begin and end of progcode without any change. I only have the small text on OSD.

    Can you explain how I can scale it in programm code and how's the sequence?

    Thanks and kind regards

    KLaus

  • Hi, 
      Swap RAM is nothing but in Gen2 all the memories are double buffered. After the proper values have been written into the RAM’s, the hardware must be commanded to “swap” the memories during next vsync edge.

      In order to determine when the swap has finished and the engine is ready to take new commands.

    Please configure the RAM_SWAP_START register(0x0C),it is used to set the OSD engine to swap the ram at the end of current frame.

    Please ensure that osd_tbox_scale(0x09) register has configured from TBOX_V_SCALE[7:4] from 4thto7th bit by scaling the tbox with vertical scale factor and also by TBOX_H_SCALE[3:0] from 0thto3rd bit with horizontal scale factor,then only we can able to get the increased text OSD.

     Are you using character based OSD tool for developing? Please let us know.

    Thanks,

    Poornima

  • Hello Poornima

    Thanks for your answer. I am sorry but I cant find a register containing RAM_SWAP_START in the
    Software manual Rev.C. Is this an undocumented Register of the ADV7623 ?

    Kind regards

    KLaus

  • Hi,

     Please refer ADV7625 register control manual which is available at ADV7625 Design Support Files .

     This are all belongs to the same family chip-set,So you can refer here.

    Thanks,

    Poornima

  • Hello Poornima
    I took the ADV7625 SW manual and compared it with the ADV7623 Manual. The register functions are not similar.

    Addr. OSD 0x10: ADV7625-->osd_Transparant_colour,  ADV7623--> OSD_Filled_Box_enable
    Have only seen that OSD Addr. 0x09 - 0x0f are not defined.

    Also tried to change reg. OSD(0x0c) like described by you, without any effect.

    Kind regards

    Kaus

  • Hi,

      Could you please share the register dump and snapshot?

      Please let us know,which tool you are using for designing the OSD development.

    Thanks,

    Poornima

  • Hello Poornima

    I created the FLASH_ROM_CHAR data with the ADI_Character OSD tool. 
    OSD Initialization is:

    //#############OSD MAP ######################
    HAL_I2CWriteByte(0x48 , 0x07 , 0x13) ;
    HAL_I2CWriteByte(0x48 , 0x00 , 0xb0) ; //Enables OSD
    HAL_I2CWriteByte(0x48 , 0x01 , 0xfc) ; // chroma/luma bandwidth limiting
    HAL_I2CWriteByte(0x48 , 0x04 , 0x00) ; //vertical offset adjust of OSD
    HAL_I2CWriteByte(0x48 , 0x05 , 0x05) ; // -"-
    HAL_I2CWriteByte(0x48 , 0x06 , 0x82) ; //OSD colorspace reduced RGB limited
    //HAL_I2CWriteByte(0x48 , 0x07 , 0x73) ; // Text zoom 2xvert 2x hor
    HAL_I2CWriteByte(0x48 , 0x10 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x11 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x12 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x13 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x14 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x15 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x16 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x17 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x20 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x30 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x80 , 0x01) ; // enable OSD TBOX
    HAL_I2CWriteByte(0x48 , 0x90 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xa0 , 0x40) ; //highlight en
    HAL_I2CWriteByte(0x48 , 0x60 , 0x80) ; //SPI en; SPI_slave
    HAL_I2CWriteByte(0x48 , 0x70 , 0x88) ;
    HAL_I2CWriteByte(0x48 , 0x81 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x82 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x83 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x84 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x85 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x86 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x91 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x92 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xa1 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xa2 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xb1 , 0xff) ; //TBOX G
    HAL_I2CWriteByte(0x48 , 0xb2 , 0x00) ; //TBOX B
    HAL_I2CWriteByte(0x48 , 0xb3 , 0x00) ; //TBOX R
    HAL_I2CWriteByte(0x48 , 0xb7 , 0x00) ; //TBOX highlight G
    HAL_I2CWriteByte(0x48 , 0xb8 , 0xf0) ; //TBOX highlight B
    HAL_I2CWriteByte(0x48 , 0xb9 , 0xff) ; //TBOX highlight R HAL_I2CWriteByte(0x48 , 0xc0 , 0x0f) ;
    HAL_I2CWriteByte(0x48 , 0xc1 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xc2 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xd0 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd1 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd2 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd8 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd9 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xda , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xe0 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xe1 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xe2 , 0xff) ;

    OSDPushToSpi (FLASH_ROM_STRING_UNKOWN_PACK_0_OSD_0); //write String RAM
    OSDPushToSpi (FLASH_ROM_TBOX_PNTR_UNKOWN_OSD_START_OSD_0); //write String Pointer RAM
    OSDPushToSpi (FLASH_ROM_CHAR_L_UNKOWN_PACK_0_OSD_0); // Write Char RAM L
    OSDPushToSpi (FLASH_ROM_CHAR_M_UNKOWN_PACK_0_OSD_0); // Write Char RAM M
    OSDPushToSpi (FLASH_ROM_CHAR_R_UNKOWN_PACK_0_OSD_0); // Write Char RAM R


    Inserting data are made like this in a routine:

    sprintf(wegl2," m%c.%c%c%c%c%c", tmp[5],tmp[4],tmp[3],tmp[2],tmp[1],tmp[0]); // format measurement data
    sprintf(Tx,"%c%c%c%c%s",0x12,0x00,0x09,0x06,wegl2); // length = 0x12; 0x09 -> Write to String RAM; Use TB6 ---> String RAM
    // Paramter 0 / 1 Datalenght(string + Pointer)
    // Parameter 2 / SPPI command
    OSDPushToSpi(Tx);
    sprintf(Tx,"%c%c%c%c%c%c%c%c",0x06,0x00,0x05,0x06, 0xf0,(UCHAR)(WegLaenge2),((UCHAR)(WegLaenge2) >> 1),0xc0); //-->Tbox instruction RAM
    OSDPushToSpi(Tx);
    HAL_I2CWriteByte(0x48 , 0x80 , 0x40) ; // OSD-MAP(0x48), Reg:OSD TEXT BOX ENABLE_1; enable TB 6,
    HAL_I2CWriteByte(0x48 , 0xa0 , 0x40) ;

    Displaying the OSD data runs perfect, only the character size should be larger.

    Kind regards
    Klaus

  • Hi,

      Could you please share your project,we can verify in our side and let you know the result.

      By changing the 0x48,0x07 ,0x13 register value as 0x15,we can get the increased vertical scalar as 4x.Please update and check it in your side.

    Thanks,

    Poornima

  • Hello Poornima

    Thanks for your reply. I tried to change the value of reg. 0x07, without any success. As you can see on the code below,

    which shows the value of an incremental counter, I modified the position value. So when the counter increases, not only

    the shown value changes, but also the position changes in pixel steps. 

    Now, when the H/V_SCALE value of the register is changed, I can see that the steps in the movement increases,

    but not the size of the font!!


    The software is for an atmel XMEGA192A3 

    The main routine has the following code:

    // at this position are only XMEGA code for Port initialisation ,...

    init_ADV7184();
    init_ADV7513();
    init_ADV7513_2();
    init_ADV7623();

    //########################################## ADV7623 ##########################################
    color = 0x0ff;
    ADIAPI_RxInit(RX_OPMODE_COMP); //RX_OPMODE_HDMI,
    ADIAPI_OSDSetRes_0( RES_1080i);
    // OSDPushToSpi (FLASH_ROM_TBOX_INSTR_PACK_0_RES_0_OSD_0); //write TBOX RAM
    OSDPushToSpi (FLASH_ROM_STRING_UNKOWN_PACK_0_OSD_0); //write String RAM
    OSDPushToSpi (FLASH_ROM_TBOX_PNTR_UNKOWN_OSD_START_OSD_0); //write String Pointer RAM
    OSDPushToSpi (FLASH_ROM_CHAR_L_UNKOWN_PACK_0_OSD_0); // Write Char RAM L
    OSDPushToSpi (FLASH_ROM_CHAR_M_UNKOWN_PACK_0_OSD_0); // Write Char RAM M
    OSDPushToSpi (FLASH_ROM_CHAR_R_UNKOWN_PACK_0_OSD_0); // Write Char RAM R
    //OSDPushToSpi (FLASH_ROM_FBOX_INSTR_PACK_0_RES_0_OSD_0);

    sprintf(Tx,"%c%c%c%c%c%c%c%c",0x06,0x00,0x05,0x06, 0xf0,0xc0,0x0e,0xc0); //Tbox instruction RAM
    OSDPushToSpi(Tx);
    sprintf(Tx,"%c%c%c%c%c",0x03,0x00,0x0b,0x06,0x18); //Tbox String Pointer RAM
    OSDPushToSpi(Tx);
    HAL_I2CWriteByte(0x48 , 0x80 , 0x7f) ;
    PORTB.OUTTGL = PIN0_bm;
    WsendL2 = FALSE;

    StartCount = HAL_GetCurrentMsCount();


    while(1) {

    if(WsendL2 == TRUE)
    {   //this routine writes the value (WegLaenge2) of a meter counter to a string (wegl2) with the meter abbreviation.(m) 

       // this string is shown on the video screen

       //!!!!!!! Modified the string for debug purpose, so that the on screen position varies with increasing/decreasing of WegLaenge2
    PORTB.OUTTGL = PIN0_bm;
    // HAL_I2CWriteByte(0x48 , 0x07 , 0x13) ;
    sprintf(tmp,"%+06ld",WegLaenge2);
    sprintf(wegl2," m%c.%c%c%c%c%c", tmp[5],tmp[4],tmp[3],tmp[2],tmp[1],tmp[0]);
    sprintf(Tx,"%c%c%c%c%s",0x12,0x00,0x09,0x06,wegl2); // length = 0x12; 0x09 -> Write to String RAM; Use TB6 ---> String RAM
    // Paramter 0 / 1 Datalenght(string + Pointer)
    // Parameter 2 / SPPI command
    OSDPushToSpi(Tx);
    sprintf(Tx,"%c%c%c%c%c%c%c%c",0x06,0x00,0x05,0x06, 0xf0,(UCHAR)(WegLaenge2),((UCHAR)(WegLaenge2) >> 1),0xc0); //-->Tbox instruction RAM
    OSDPushToSpi(Tx);
    HAL_I2CWriteByte(0x48 , 0x80 , 0x40) ; // OSD-MAP(0x48), Reg:OSD TEXT BOX ENABLE_1; enable TB 6,
    HAL_I2CWriteByte(0x48 , 0xa0 , 0x40) ;
    //HAL_I2CWriteByte(0x48 , 0x0c , 0x01) ;
    WsendL2 = FALSE;
    v_shift ++;
    }
    //#############################################################################


    void init_ADV7623(void)
    {
    HAL_I2CWriteByte(0xB0, 0xff, 0x80) ;
    //###################### IO MAP ####################################
    HAL_I2CWriteByte(0xB0, 0x00, 0x1e) ; // SD 625i -> 720x576 0x01; HD 1920x1080->0x14,
    HAL_I2CWriteByte(0xB0, 0x01, 0x35) ; //PRIM-MODE HDMI-COMP Mode, 25Hz
    HAL_I2CWriteByte(0xB0, 0x02, 0xf4) ; //0x04 Auto CSC, RGB out, Set op_656 bit
    HAL_I2CWriteByte(0xB0, 0x04, 0x62) ; //28.63636 MHz
    HAL_I2CWriteByte(0xB0 , 0x05 , 0x2c) ; //AV Codes Off
    HAL_I2CWriteByte(0xB0 , 0x0C , 0x42) ; //Power up part and power down VDP
    HAL_I2CWriteByte(0xB0 , 0x0B , 0x00) ;
    HAL_I2CWriteByte(0xB0 , 0x15 , 0xbE) ; //Disable Tristate of Audio Pins
    HAL_I2CWriteByte(0xB0 , 0x1F , 0x21) ; //0x21 ADI Recommended Write, SPI -OSD !!!
    HAL_I2CWriteByte(0xB0 , 0x20 , 0xf0) ; // Set H to HPA_A Pin high
    HAL_I2CWriteByte(0xB0 , 0xEE , 0x48) ; //OSD Map Address
    HAL_I2CWriteByte(0xB0 , 0xEF , 0x70) ; //TX Packet Map Address
    HAL_I2CWriteByte(0xB0 , 0xF0 , 0x7E) ;// TX EDID Map Address
    HAL_I2CWriteByte(0xB0 , 0xF4 , 0x80) ; //CEC Map Address
    HAL_I2CWriteByte(0xB0 , 0xF5 , 0x7C) ;// HDMI Rx Infoframe Map Address
    HAL_I2CWriteByte(0xB0 , 0xF8 , 0x4C) ;// DPLL Map Address
    HAL_I2CWriteByte(0xB0 , 0xF9 , 0x64) ; //HDMI Rx Repeater Map Address
    HAL_I2CWriteByte(0xB0 , 0xFA , 0x6C) ;// HDMI Rx EDID Map Address
    HAL_I2CWriteByte(0xB0 , 0xFB , 0x68) ; //HDMI Rx Map Address
    HAL_I2CWriteByte(0xB0 , 0xFD , 0x44) ; //CP Map Address

    //########################## HDMI MAP ##################################
    HAL_I2CWriteByte(0x68 , 0x00 , 0xf0) ;// Set HDMI Input Port to A (45) (Enable BG monitoring)
    HAL_I2CWriteByte(0x68 , 0x01 , 0x80) ; //Enable auto. clock terminators
    HAL_I2CWriteByte(0x68 , 0x0D , 0xf4) ; // Full power BG ports
    HAL_I2CWriteByte(0x68 , 0x1A , 0x8A) ; //Unmute audio & enable new compressed audio mute mask bit
    HAL_I2CWriteByte(0x68 , 0x1b , 0x10) ; //FIFO data is output regardless of video PLL lock status
    HAL_I2CWriteByte(0x68 , 0x3C , 0x12) ; //Enable Audio Bypass mode
    HAL_I2CWriteByte(0x68 , 0x3D , 0x10) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x44 , 0x85) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x4c , 0x00) ; //NEW_VS_PARAM VSync filter for low frequency !! für 720p24/25/30
    HAL_I2CWriteByte(0x68 , 0x48 , 0x80) ; // DIS_PWRDNB and DIS_CABLE_DET_RST
    HAL_I2CWriteByte(0x68 , 0x50 , 0x04) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x57 , 0xB9) ; //PLL bandwidth setting
    HAL_I2CWriteByte(0x68 , 0x58 , 0x63) ; //PLL bandwidth setting
    HAL_I2CWriteByte(0x68 , 0x60 , 0x88) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x61 , 0x88) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x69 , 0xa2) ; //HPA_OVR_TERM , HPA_MANUAL (auto=0xa6)
    HAL_I2CWriteByte(0x68 , 0x6C , 0x18) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x75 , 0x10) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x8d , 0x0b) ; // LFG Port A
    HAL_I2CWriteByte(0x68 , 0x8e , 0x20) ; // HFG Port A
    HAL_I2CWriteByte(0x68 , 0x90 , 0x0b) ; // LFG Port B
    HAL_I2CWriteByte(0x68 , 0x91 , 0x30) ; // HFG Port B
    HAL_I2CWriteByte(0x68 , 0x93 , 0x0b) ; // LFG Port C
    HAL_I2CWriteByte(0x68 , 0x94 , 0x30) ; // HFG Port C
    HAL_I2CWriteByte(0x68 , 0x89 , 0x0b) ; // LFG Port D
    HAL_I2CWriteByte(0x68 , 0x8a , 0x30) ; // HFG Port D
    HAL_I2CWriteByte(0x68 , 0x96 , 0x00) ; //EQ_DYN_EN=0
    HAL_I2CWriteByte(0x68 , 0x98 , 0xFF) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x99 , 0xA1) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x9A , 0xFF) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x9B , 0x09) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0x9D , 0x02) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xC0 , 0xf0) ; //Power Mode on Ports: Automatic
    HAL_I2CWriteByte(0x68 , 0xC1 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc2 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc3 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc4 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc5 , 0xff) ; //ADI Recommended Write
    HAL_I2CWriteByte(0x68 , 0xc6 , 0xff) ; //ADI Recommended Write

    //####################### MAIN MAP ##########################
    HAL_I2CWriteByte(0xB8 , 0x01 , 0x00) ; //Set N Value(6144)27MHz LLc, and Fs = 48KHz --> Audio clock generation
    HAL_I2CWriteByte(0xB8 , 0x02 , 0x18) ; //Set N Value(6144)
    HAL_I2CWriteByte(0xB8 , 0x03 , 0x00) ; //Set N Value(6144)
    HAL_I2CWriteByte(0xB8 , 0x15 , 0x20) ; //I2S audio sampl. 48kHz
    HAL_I2CWriteByte(0xB8 , 0x16 , 0x00) ; //Color space select-> RGB
    HAL_I2CWriteByte(0xB8 , 0x17 , 0x02) ; //aspect radio 16:9
    HAL_I2CWriteByte(0xB8 , 0x3b , 0x00) ; //Pixel Repetition mode selection-> auto
    HAL_I2CWriteByte(0xB8 , 0x3c , 0x33) ; //User programmed video code (VIC)
    HAL_I2CWriteByte(0xB8 , 0x40 , 0x80) ; //General Control packet enable
    HAL_I2CWriteByte(0xB8 , 0x41 , 0x80) ; //Power up all circuits
    HAL_I2CWriteByte(0xB8 , 0x44 , 0x00) ;
    HAL_I2CWriteByte(0xB8 , 0x48 , 0x80) ; //allow detection of low frequ video
    HAL_I2CWriteByte(0xB8 , 0x55 , 0x40) ; //Set RGB // YCrCb 422 in AVinfo Frame
    HAL_I2CWriteByte(0xB8 , 0x56 , 0x6a) ; //Set active format Aspect --> 16:9
    HAL_I2CWriteByte(0xB8 , 0x96 , 0x00) ; //Vsync Interrupt Active
    HAL_I2CWriteByte(0xB8 , 0x98 , 0x07) ; //ADI Recommended Write
    HAL_I2CWriteByte(0xB8 , 0x9A , 0x80) ; //ADI Recommended Write
    HAL_I2CWriteByte(0xB8 , 0x9B , 0x1A) ; //ADI Recommended Write
    HAL_I2CWriteByte(0xB8 , 0xA1 , 0x00) ; //power up all channels
    HAL_I2CWriteByte(0xB8 , 0xAF , 0x02) ; //Set HDMI Mode (DVI by default)
    HAL_I2CWriteByte(0xB8 , 0xBA , 0x60) ; //ADI Recommended Write
    HAL_I2CWriteByte(0xB8 , 0xDF , 0x39) ; //ADI Recommended Write important???!!
    HAL_I2CWriteByte(0xB8 , 0xd5 , 0x00) ; //Black image enable
    HAL_I2CWriteByte(0xB8 , 0xd6 , 0x40) ; //HPD overriden

    //#############OSD MAP ######################
    HAL_I2CWriteByte(0x48 , 0x07 , 0x13) ;
    HAL_I2CWriteByte(0x48 , 0x00 , 0xb0) ; //Enables OSD
    HAL_I2CWriteByte(0x48 , 0x01 , 0xfc) ; // chroma/luma bandwidth limiting
    HAL_I2CWriteByte(0x48 , 0x04 , 0x00) ; //vertical offset adjust of OSD
    HAL_I2CWriteByte(0x48 , 0x05 , 0x05) ; // -"-
    HAL_I2CWriteByte(0x48 , 0x06 , 0x82) ; //OSD colorspace reduced RGB limited
    //HAL_I2CWriteByte(0x48 , 0x07 , 0x73) ; // Text zoom 2xvert 2x hor
    HAL_I2CWriteByte(0x48 , 0x10 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x11 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x12 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x13 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x14 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x15 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x16 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x17 , 0x00) ; // OSD FBOX
    HAL_I2CWriteByte(0x48 , 0x20 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x30 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x80 , 0x01) ; // enable OSD TBOX
    HAL_I2CWriteByte(0x48 , 0x90 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xa0 , 0x40) ; //highlight en
    HAL_I2CWriteByte(0x48 , 0x60 , 0x80) ; //SPI en; SPI_slave
    HAL_I2CWriteByte(0x48 , 0x70 , 0x88) ;
    HAL_I2CWriteByte(0x48 , 0x81 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x82 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x83 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x84 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x85 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x86 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x91 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0x92 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xa1 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xa2 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xb1 , 0xff) ; //TBOX G
    HAL_I2CWriteByte(0x48 , 0xb2 , 0x00) ; //TBOX B
    HAL_I2CWriteByte(0x48 , 0xb3 , 0x00) ; //TBOX R
    HAL_I2CWriteByte(0x48 , 0xb7 , 0x00) ; //TBOX highlight G
    HAL_I2CWriteByte(0x48 , 0xb8 , 0xf0) ; //TBOX highlight B
    HAL_I2CWriteByte(0x48 , 0xb9 , 0xff) ; //TBOX highlight R HAL_I2CWriteByte(0x48 , 0xc0 , 0x0f) ;
    HAL_I2CWriteByte(0x48 , 0xc1 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xc2 , 0x00) ;
    HAL_I2CWriteByte(0x48 , 0xd0 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd1 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd2 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd8 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xd9 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xda , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xe0 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xe1 , 0xff) ;
    HAL_I2CWriteByte(0x48 , 0xe2 , 0xff) ;

    //################## CP MAP ##################
    HAL_I2CWriteByte(0x44 , 0x7f , 0x11) ; // DE Start define !!! V-SHift
    HAL_I2CWriteByte(0x44 , 0x86 , 0x0b) ;
    HAL_I2CWriteByte(0x44 , 0x8e , 0x20) ;
    HAL_I2CWriteByte(0x44 , 0x91 , 0x00) ; //progressive mode
    HAL_I2CWriteByte(0x44 , 0xba , 0x01) ; // HDMI Free Run
    HAL_I2CWriteByte(0x44 , 0xbf , 0x16) ; //Do not force the CP core free run, set default color
    HAL_I2CWriteByte(0x44 , 0xc0 , 0x80) ; // default color G
    HAL_I2CWriteByte(0x44 , 0xc1 , 0x80) ; //R
    HAL_I2CWriteByte(0x44 , 0xc2 , 0x80) ; //B DEF_COL_CHC
    HAL_I2CWriteByte(0x44 , 0xc9 , 0x2d) ;

    HAL_I2CWriteByte(0x64 , 0x77 , 0x01) ; //enables EDID I²C accesss of A port

    HAL_I2CWriteByte(0xB0 , 0x0C , 0x44) ; //Power up part and power down VDP
    HAL_I2CWriteByte(0x48 , 0x00 , 0x87) ; // OSD enable
    HAL_I2CWriteByte(0x48 , 0x06 , 0x80) ; //YPbPr(SD)
    HAL_I2CWriteByte(0x48 , 0x80 , 0x3f) ; // enable OSD TBOX
    HAL_I2CWriteByte(0x48 , 0x90 , 0x02) ;
    HAL_I2CWriteByte(0x48 , 0xb1 , 0xff) ; // TBOX textcolor G
    HAL_I2CWriteByte(0x48 , 0xb2 , 0x00) ; // TBOX textcolor B
    HAL_I2CWriteByte(0x48 , 0xb3 , 0x00) ; // TBOX textcolor R
    }

    This is the summary of the code regarding ATV7623

    Thanks and kind regards

    KLaus