__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; }
__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; }