Ejemplo n.º 1
0
__s32 Disp_set_out_interlace(__u32 sel)
{
	__u32 i;
	__bool b_cvbs_out = 0;

	if (sunxi_is_sun5i())
		return 0;

	if (gdisp.screen[sel].output_type == DISP_OUTPUT_TYPE_TV &&
	    (gdisp.screen[sel].tv_mode == DISP_TV_MOD_PAL ||
	     gdisp.screen[sel].tv_mode == DISP_TV_MOD_PAL_M ||
	     gdisp.screen[sel].tv_mode == DISP_TV_MOD_PAL_NC ||
	     gdisp.screen[sel].tv_mode == DISP_TV_MOD_NTSC)) {
		b_cvbs_out = 1;
	}

	gdisp.screen[sel].de_flicker_status |= DE_FLICKER_REQUIRED;

	BSP_disp_cfg_start(sel);

	/* when output device is cvbs */
	if ((gdisp.screen[sel].de_flicker_status & DE_FLICKER_REQUIRED) &&
	    b_cvbs_out)	{
		DE_BE_deflicker_enable(sel, TRUE);
		for (i = 0; i < 2; i++) {
			if ((gdisp.scaler[i].status & SCALER_USED) &&
			    (gdisp.scaler[i].screen_index == sel)) {
				Scaler_Set_Outitl(i, FALSE);
			}
		}
		gdisp.screen[sel].de_flicker_status |= DE_FLICKER_USED;
	} else {
		DE_BE_deflicker_enable(sel, FALSE);
		for (i = 0; i < 2; i++) {
			if ((gdisp.scaler[i].status & SCALER_USED) &&
			    (gdisp.scaler[i].screen_index == sel)) {
				Scaler_Set_Outitl(i,
						  gdisp.screen[sel].
						  b_out_interlace);
			}
		}
		gdisp.screen[sel].de_flicker_status &= ~DE_FLICKER_USED;
	}
	DE_BE_Set_Outitl_enable(sel, gdisp.screen[sel].b_out_interlace);

	BSP_disp_cfg_finish(sel);

	return DIS_SUCCESS;
}
Ejemplo n.º 2
0
__s32 Disp_set_out_interlace(__u32 screen_id)
{
	__u32 i;
	__bool b_cvbs_out = 0;
	__u32 num_scalers;

	num_scalers = bsp_disp_feat_get_num_scalers();

	if(gdisp.screen[screen_id].output_type==DISP_OUTPUT_TYPE_TV
	    && (gdisp.screen[screen_id].tv_mode==DISP_TV_MOD_PAL || gdisp.screen[screen_id].tv_mode==DISP_TV_MOD_PAL_M
	    ||	gdisp.screen[screen_id].tv_mode==DISP_TV_MOD_PAL_NC || gdisp.screen[screen_id].tv_mode==DISP_TV_MOD_NTSC)) {
		b_cvbs_out = 1;
	}

	gdisp.screen[screen_id].de_flicker_status |= DE_FLICKER_REQUIRED;

	bsp_disp_cfg_start(screen_id);

	/* when output device is cvbs */
	if((gdisp.screen[screen_id].de_flicker_status & DE_FLICKER_REQUIRED) && b_cvbs_out)	{
		DE_BE_deflicker_enable(screen_id, TRUE);
		for(i=0; i<num_scalers; i++) {
			if((gdisp.scaler[i].status & SCALER_USED) && (gdisp.scaler[i].screen_index == screen_id))	{
				Scaler_Set_Outitl(i, FALSE);
				gdisp.scaler[i].b_reg_change = TRUE;
			}
		}
		gdisp.screen[screen_id].de_flicker_status |= DE_FLICKER_USED;
	}	else {
		DE_BE_deflicker_enable(screen_id, FALSE);
		for(i=0; i<num_scalers; i++) {
			if((gdisp.scaler[i].status & SCALER_USED) && (gdisp.scaler[i].screen_index == screen_id))	{
				Scaler_Set_Outitl(i, gdisp.screen[screen_id].b_out_interlace);
				gdisp.scaler[i].b_reg_change = TRUE;
			}
		}
		gdisp.screen[screen_id].de_flicker_status &= DE_FLICKER_USED_MASK;
	}
	DE_BE_Set_Outitl_enable(screen_id, gdisp.screen[screen_id].b_out_interlace);

	bsp_disp_cfg_finish(screen_id);

	return DIS_SUCCESS;
}