This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM355 RGB666 output issue

Other Parts Discussed in Thread: THS8200, THS8135

Hello,

I tested the PRGB mode output on DM355 with DVI transmitter(SiI164) .

It works and can display to LCD monitor.

However, it has a color problem. Last 1 or 2 bits of each channel are not working.

So, It only display 4~5 bits on each channel and stepped gradation.

 

prgb output mode set in davinci_platform.c :

/*
 * setting DLCD 480P PRGB mode
 */
static void davinci_enc_set_prgb(struct vid_enc_mode_info *mode_info)
{

    enableDigitalOutput(1);

    //dispc_reg_out(VENC_VIDCTL, 0x141);
    /* set VPSS clock */
    davinci_writel(0x18, SYS_VPSS_CLKCTL);

    dispc_reg_out(VENC_DCLKCTL, 0);
    dispc_reg_out(VENC_DCLKPTN0, 0);

    /* Set the OSD Divisor to 1. */
    dispc_reg_out(VENC_OSDCLK0, 0);
    dispc_reg_out(VENC_OSDCLK1, 1);
    /* Clear composite mode register */
    dispc_reg_out(VENC_CVBS, 0);

    //dispc_reg_merge(VENC_VDPRO, VENC_VDPRO_CBMD, VENC_VDPRO_CBMD);
    //dispc_reg_merge(VENC_VDPRO, VENC_VDPRO_CBTYP, VENC_VDPRO_CBTYP);
       

    /* Set PINMUX1 to enable all outputs needed to support RGB666 */
    if (cpu_is_davinci_dm355()) {
        /* Enable the venc and dlcd clocks. */
        dispc_reg_out(VENC_CLKCTL, 0x11|0x1<<8);
        davinci_cfg_reg(DM355_VOUT_FIELD_G70);
        davinci_cfg_reg(DM355_VOUT_COUTL_EN);
        davinci_cfg_reg(DM355_VOUT_COUTH_EN);
    } else {
        dispc_reg_out(VENC_CMPNT, 0x100);
        davinci_cfg_reg(DM644X_GPIO46_47);
        davinci_cfg_reg(DM644X_GPIO0);
        davinci_cfg_reg(DM644X_RGB666);
        davinci_cfg_reg(DM644X_LOEEN);
        davinci_cfg_reg(DM644X_GPIO3);
    }

    if (cpu_is_davinci_dm355()) {
        davinci_writel(mode_info->left_margin,
                   (DM355_OSD_REG_BASE + OSD_BASEPX));
        davinci_writel(mode_info->upper_margin,
                   (DM355_OSD_REG_BASE + OSD_BASEPY));
    } else {
        davinci_writel(mode_info->left_margin,
                   (DM644X_OSD_REG_BASE + OSD_BASEPX));
        davinci_writel(mode_info->upper_margin,
                   (DM644X_OSD_REG_BASE + OSD_BASEPY));
    }

    /* Set VIDCTL to select VCLKE = 1,
       VCLKZ =0, SYDIR = 0 (set o/p), DOMD = 0 */
    dispc_reg_merge(VENC_VIDCTL, 1 << VENC_VIDCTL_VCLKE_SHIFT,
            VENC_VIDCTL_VCLKE);
    dispc_reg_merge(VENC_VIDCTL, 0 << VENC_VIDCTL_VCLKZ_SHIFT,
            VENC_VIDCTL_VCLKZ);
    dispc_reg_merge(VENC_VIDCTL, 0 << VENC_VIDCTL_SYDIR_SHIFT,
            VENC_VIDCTL_SYDIR);
    dispc_reg_merge(VENC_VIDCTL, 0 << VENC_VIDCTL_YCDIR_SHIFT,
            VENC_VIDCTL_YCDIR);

    dispc_reg_merge(VENC_DCLKCTL,
            1 << VENC_DCLKCTL_DCKEC_SHIFT, VENC_DCLKCTL_DCKEC);
    dispc_reg_merge(VENC_DCLKCTL,
            0 << VENC_DCLKCTL_DCKOH_SHIFT, VENC_DCLKCTL_DCKOH);

    dispc_reg_out(VENC_DCLKPTN0, 0x1);

    davinci_enc_set_display_timing(mode_info);
    dispc_reg_out(VENC_SYNCCTL,
              (VENC_SYNCCTL_SYEV |
               VENC_SYNCCTL_SYEH | VENC_SYNCCTL_HPL
               | VENC_SYNCCTL_VPL));

    /* Configure VMOD. No change in VENC bit */
    dispc_reg_out(VENC_VMOD, 0x2011);
    dispc_reg_out(VENC_LCDOUT, 0x1);

}

 

 

  • Hi,

    What is your frame buffer format?

    Can you show the part of your schematic which shows how you have connected each 6 bit color channal output to the SiI inputs?

    BR,

    Steve

  • Hi,

    I attached the part of schematic which is containing video output.

    frame buffer format :

    OSD0 - RGB565

    VID0 - YUV422

    OSD1 - Attribute

    VID1 - YUV422

    Regards,

    Wook-Jin

    BDP-B100W-20100513.pdf
  • Your hardware connectivity looks correct.

    What is your LCD connectivity?

    What are you doing different in software for your LCD since there should not really be any difference for the LCD and the DVI transmitter? What is your LCD model number?

    BR,

    Steve

  • I just removed i2c part of LogicPD LCD driver and tested to several moniters(samsung 17", 19", LG 20" and other manufacture's 22").

    I could get that phenemenon on the tested monitors.

    Additionally, I want to add RGB VGA interface using THS8200.

    The reference design used YUV422 between DM355 and THS8200.

    However, I need RGB666 connectivity between DM355 and THS8200 since THS8200 does not provide color converting on VESA mode.

    Regards,

    Wook-Jin

  • Wook-Jin,

    First, for the analog output you should be able to connect to the THS8200 in RGB mode for analog VGA display. Take each color channel and connect it to the upper data input bits for each input color channel on the THS8200. The 8200 should then be configured for RGB input.

    You may also want to look at the THS8135 family of devices for VGA generation.

    Do you have an oscilloscope available? If so, could you have a look at the 18 data bits to see if they are all toggling? If they are all toggling, then it is likely a SiI configuration issue. If they are not all toggling then it is likely a DM issue. This will allow us to focus our debug efforts in the right place.

    BR,

    Steve