Beispiel #1
0
__s32 BSP_disp_vga_open(__u32 sel)
{
	if (!(gdisp.screen[sel].status & VGA_ON)) {
		__disp_vga_mode_t vga_mode;
		__u32 i = 0;

		vga_mode = gdisp.screen[sel].vga_mode;

		lcdc_clk_on(sel);
		image_clk_on(sel);
		/*
		 * set image normal channel start bit , because every
		 * de_clk_off( ) will reset this bit
		 */
		Image_open(sel);
		tve_clk_on(sel);
		disp_clk_cfg(sel, DISP_OUTPUT_TYPE_VGA, vga_mode);
		Disp_lcdc_pin_cfg(sel, DISP_OUTPUT_TYPE_VGA, 1);

#ifdef CONFIG_ARCH_SUN4I
		BSP_disp_set_output_csc(sel, DISP_OUTPUT_TYPE_VGA);
#else
		BSP_disp_set_output_csc(sel, DISP_OUTPUT_TYPE_VGA,
					gdisp.screen[sel].
					iep_status & DRC_USED);
#endif
		DE_BE_set_display_size(sel, vga_mode_to_width(vga_mode),
				       vga_mode_to_height(vga_mode));
		DE_BE_Output_Select(sel, sel);
		TCON1_set_vga_mode(sel, vga_mode);
		TVE_set_vga_mode(sel);

		Disp_TVEC_Open(sel);
		TCON1_open(sel);

		for (i = 0; i < 4; i++) {
			if (gdisp.screen[sel].dac_source[i] ==
			    DISP_TV_DAC_SRC_COMPOSITE) {
				TVE_dac_set_source(1 - sel, i,
						   DISP_TV_DAC_SRC_COMPOSITE);
				TVE_dac_sel(1 - sel, i, i);
			}
		}

		Disp_Switch_Dram_Mode(DISP_OUTPUT_TYPE_VGA, vga_mode);

		gdisp.screen[sel].b_out_interlace = 0;
		gdisp.screen[sel].status |= VGA_ON;
		gdisp.screen[sel].lcdc_status |= LCDC_TCON1_USED;
		gdisp.screen[sel].output_type = DISP_OUTPUT_TYPE_VGA;
		Display_set_fb_timing(sel);
	}

	return DIS_SUCCESS;
}
Beispiel #2
0
__s32 bsp_disp_vga_open(__u32 screen_id)
{
	if(!(gdisp.screen[screen_id].status & VGA_ON))
	{
	__disp_vga_mode_t vga_mode;
	__u32 i = 0;

	vga_mode = gdisp.screen[screen_id].vga_mode;

	lcdc_clk_on(screen_id, 1, 0);
	lcdc_clk_on(screen_id, 1, 1);
	tcon_init(screen_id);
	image_clk_on(screen_id, 1);
	Image_open(screen_id);//set image normal channel start bit , because every de_clk_off( )will reset this bit
	tve_clk_on(screen_id);
	disp_clk_cfg(screen_id,DISP_OUTPUT_TYPE_VGA, vga_mode);

	gdisp.screen[screen_id].output_csc_type = DISP_OUT_CSC_TYPE_VGA;
	bsp_disp_set_output_csc(screen_id, gdisp.screen[screen_id].output_csc_type, bsp_disp_drc_get_input_csc(screen_id));
	DE_BE_set_display_size(screen_id, vga_mode_to_width(vga_mode), vga_mode_to_height(vga_mode));
	DE_BE_Output_Select(screen_id, screen_id);
	tcon1_set_vga_mode(screen_id,vga_mode);
	TVE_set_vga_mode(screen_id);

	Disp_TVEC_Open(screen_id);
	tcon1_open(screen_id);

	for(i=0; i<4; i++) {
		if(gdisp.screen[screen_id].dac_source[i] == DISP_TV_DAC_SRC_COMPOSITE) {
			TVE_dac_set_source(1-screen_id, i, DISP_TV_DAC_SRC_COMPOSITE);
			TVE_dac_sel(1-screen_id, i, i);
		}
	}

	Disp_Switch_Dram_Mode(DISP_OUTPUT_TYPE_VGA, vga_mode);

	gdisp.screen[screen_id].b_out_interlace = 0;
	gdisp.screen[screen_id].status |= VGA_ON;
	gdisp.screen[screen_id].lcdc_status |= LCDC_TCON1_USED;
	gdisp.screen[screen_id].output_type = DISP_OUTPUT_TYPE_VGA;
#ifdef __LINUX_OSAL__
	Display_set_fb_timming(screen_id);
#endif
	}

	return DIS_SUCCESS;
}
Beispiel #3
0
__s32 BSP_disp_tv_set_dac_source(__u32 sel, __u32 index, __disp_tv_dac_source source)
{
	__u32  ret;

    if(!(gdisp.screen[sel].status & TV_ON))
    {
        tve_clk_on();
    }

	ret = TVE_dac_set_source(index, source);

    if(!(gdisp.screen[sel].status & TV_ON))
    {
        tve_clk_off();
    }

    gdisp.screen[sel].dac_source[index] = source;
    
    return  ret;
}
Beispiel #4
0
static void Disp_TVEC_DacCfg(__u32 screen_id, __u8 mode)
{
	__u32 i = 0;

	TVE_dac_disable(screen_id, 0);
	TVE_dac_disable(screen_id, 1);
	TVE_dac_disable(screen_id, 2);
	TVE_dac_disable(screen_id, 3);

	switch(mode) {
	case DISP_TV_MOD_NTSC:
	case DISP_TV_MOD_PAL:
	case DISP_TV_MOD_PAL_M:
	case DISP_TV_MOD_PAL_NC:
	{
		for(i=0; i<4; i++) {
			if(gdisp.screen[screen_id].dac_source[i] == DISP_TV_DAC_SRC_COMPOSITE) {
				TVE_dac_set_source(screen_id, i, DISP_TV_DAC_SRC_COMPOSITE);
				TVE_dac_enable(screen_id, i);
				TVE_dac_sel(screen_id, i, i);
			}
		}
	}
	break;

	case DISP_TV_MOD_NTSC_SVIDEO:
	case DISP_TV_MOD_PAL_SVIDEO:
	case DISP_TV_MOD_PAL_M_SVIDEO:
	case DISP_TV_MOD_PAL_NC_SVIDEO:
	{
		for(i=0; i<4; i++) {
			if(gdisp.screen[screen_id].dac_source[i] == DISP_TV_DAC_SRC_LUMA) {
				TVE_dac_set_source(screen_id, i, DISP_TV_DAC_SRC_LUMA);
				TVE_dac_enable(screen_id, i);
				TVE_dac_sel(screen_id, i, i);
			}	else if(gdisp.screen[screen_id].dac_source[i] == DISP_TV_DAC_SRC_CHROMA) {
				TVE_dac_set_source(screen_id, i, DISP_TV_DAC_SRC_CHROMA);
				TVE_dac_enable(screen_id, i);
				TVE_dac_sel(screen_id, i, i);
			}
		}
	}
	break;

	case DISP_TV_MOD_480I:
	case DISP_TV_MOD_576I:
	case DISP_TV_MOD_480P:
	case DISP_TV_MOD_576P:
	case DISP_TV_MOD_720P_50HZ:
	case DISP_TV_MOD_720P_60HZ:
	case DISP_TV_MOD_1080I_50HZ:
	case DISP_TV_MOD_1080I_60HZ:
	case DISP_TV_MOD_1080P_50HZ:
	case DISP_TV_MOD_1080P_60HZ:
	{
		for(i=0; i<4; i++) {
			if(gdisp.screen[screen_id].dac_source[i] == DISP_TV_DAC_SRC_Y) {
				TVE_dac_set_source(screen_id, i, DISP_TV_DAC_SRC_Y);
				TVE_dac_enable(screen_id, i);
				TVE_dac_sel(screen_id, i, i);
			}	else if(gdisp.screen[screen_id].dac_source[i] == DISP_TV_DAC_SRC_PB) {
				TVE_dac_set_source(screen_id, i, DISP_TV_DAC_SRC_PB);
				TVE_dac_enable(screen_id, i);
				TVE_dac_sel(screen_id, i, i);
			}	else if(gdisp.screen[screen_id].dac_source[i] == DISP_TV_DAC_SRC_PR) {
				TVE_dac_set_source(screen_id, i, DISP_TV_DAC_SRC_PR);
				TVE_dac_enable(screen_id, i);
				TVE_dac_sel(screen_id, i, i);
			}	else if(gdisp.screen[screen_id].dac_source[i] == DISP_TV_DAC_SRC_COMPOSITE) {
				  TVE_dac_set_source(1-screen_id, i, DISP_TV_DAC_SRC_COMPOSITE);
				  TVE_dac_sel(1-screen_id, i, i);
			}
		}
	}
		break;

	default:
		break;
	}
}