コード例 #1
0
ファイル: lcdoutc.c プロジェクト: alpha-it/u-boot
static void set_tcon_lvds(Lcd_Config_t *pConf)
{
	vpp_set_matrix_ycbcr2rgb(2, 0);
	aml_write_reg32(P_ENCL_VIDEO_RGBIN_CTRL, 3);
	aml_write_reg32(P_L_RGB_BASE_ADDR, 0);
	aml_write_reg32(P_L_RGB_COEFF_ADDR, 0x400);

	if (pConf->lcd_basic.lcd_bits == 8)
		aml_write_reg32(P_L_DITH_CNTL_ADDR,  0x400);
	else if (pConf->lcd_basic.lcd_bits == 6)
		aml_write_reg32(P_L_DITH_CNTL_ADDR,  0x600);
	else
		aml_write_reg32(P_L_DITH_CNTL_ADDR,  0);

	aml_write_reg32(P_VPP_MISC, aml_read_reg32(P_VPP_MISC) & ~(VPP_OUT_SATURATE));
}
コード例 #2
0
ファイル: lcdoutc.c プロジェクト: alpha-it/u-boot
static void set_tcon_vbyone(Lcd_Config_t *pConf)
{
	//Lcd_Timing_t *tcon_adr = &(pConf->lcd_timing);
	vpp_set_matrix_ycbcr2rgb(2, 0);
	aml_write_reg32(P_ENCL_VIDEO_RGBIN_CTRL, 3);
	aml_write_reg32(P_L_RGB_BASE_ADDR, 0);
	aml_write_reg32(P_L_RGB_COEFF_ADDR, 0x400);
	//aml_write_reg32(P_L_POL_CNTL_ADDR,  3)
	//aml_write_reg32(P_L_DUAL_PORT_CNTL_ADDR, (0x1 << LCD_TTL_SEL));
	//	if(pConf->lcd_basic.lcd_bits == 8)
	//		aml_write_reg32(P_L_DITH_CNTL_ADDR,  0x400);
	//	else if(pConf->lcd_basic.lcd_bits == 6)
	//		aml_write_reg32(P_L_DITH_CNTL_ADDR,  0x600);
	//	else
	//		aml_write_reg32(P_L_DITH_CNTL_ADDR,  0);
	//PRINT_INFO("final LVDS_FIFO_CLK = %d\n", clk_util_clk_msr(24));
	//PRINT_INFO("final cts_encl_clk = %d\n", clk_util_clk_msr(9));
	aml_write_reg32(P_VPP_MISC, aml_read_reg32(P_VPP_MISC) & ~(VPP_OUT_SATURATE));
}
コード例 #3
0
static void init_lvds(void)
{
    unsigned char lvds_bits_cfg = 1; // 0:10bits, 1:8bits, 2:6bits, 3:4bits.
    unsigned int  dithering_cfg = 0;

    switch(lvds_bits) {
    case 10:
        lvds_bits_cfg = 0;
        dithering_cfg = 0;
        break;
    case 8:
        lvds_bits_cfg = 1;
        dithering_cfg = 0x400;
        break;
    case 6:
        lvds_bits_cfg = 2;
        dithering_cfg = 0x600;
        break;
    case 4:
        lvds_bits_cfg = 3;
        dithering_cfg = 0;
        break;
    }
    clk_util_lvds_set_clk_div(  2,          // unsigned long   divn_sel,        // select divide by 3.5 (0 = div1, 1=divN,2 = div3.5)
                                7,          // unsigned long   divn_tcnt,       // ignored
                                0 );        // unsigned long   div2_en,         // divide by 1 for LVDS

    //Wr( REG_LVDS_PHY_CNTL0, 0xffff );

    // wire            fifo_en                 = tst_lvds_tmode ? atest_i[3]   : gen_cntl[3];
    // wire            fifo_wr_bist_gate       = tst_lvds_tmode ? 1'b1         : gen_cntl[2];
    // wire    [1:0]   fifo_wr_mode            =                                 gen_cntl[1:0];
    //Wr( LVDS_GEN_CNTL, (Rd(LVDS_GEN_CNTL) | (3 << 0)) );    //use dv_continuous as the fifo_wr_en
    // enable the FIFO and use dv_continuous as the fifo_wr_en
    Wr( LVDS_GEN_CNTL, (Rd(LVDS_GEN_CNTL) | (1 << 3) | (3<< 0)));

    set_tv_enc_1080p();

    vpp_set_matrix_ycbcr2rgb(2, 0);
    Wr(ENCP_VIDEO_RGBIN_CTRL, 3);
    Wr(RGB_BASE_ADDR, 0);
    Wr(RGB_COEFF_ADDR, 0x400);


    //Wr(ENCP_VIDEO_EN,       1);

    Wr(LVDS_PACK_CNTL_ADDR,
       ( jeida? 0:1 ) | // repack
       ( port_reverse?(0<<2):(1<<2) ) | // odd_even reverse
       ( 0<<3 ) | // reserve
       ( 0<<4 ) | // lsb first
       ( 0<<5 ) | // pn swap
       ( 1<<6 ) | // dual port
       ( 0<<7 ) | // use tcon control
       ( lvds_bits_cfg<<8) | // 0:10bits, 1:8bits, 2:6bits, 3:4bits.
       ( 0<<10 ) | // 0:R, 1:G, 2:B, 3:0
       ( 1<<12 ) |
       ( 2<<14 ));

    Wr(POL_CNTL_ADDR,  (1 << DCLK_SEL) |
       //(0x1 << HS_POL) |
       (0x1 << VS_POL)
      );

    Wr(DITH_CNTL_ADDR, dithering_cfg);
}