Ejemplo n.º 1
0
__s32 bsp_disp_drc_set_window(__u32 screen_id,__disp_rect_t *regn)
{
    memcpy(&gdisp.screen[screen_id].drc.rect, regn, sizeof(__disp_rect_t));
    if(bsp_disp_drc_get_enable(screen_id) == 1) {
        IEP_Drc_Set_Winodw(screen_id,*regn);
    }
    return DIS_SUCCESS;
}
Ejemplo n.º 2
0
//todo : csc->set_mode   or set_mode->csc?
__s32 bsp_disp_drc_enable(__u32 screen_id, __u32 en)
{
    if((DISP_OUTPUT_TYPE_LCD == bsp_disp_get_output_type(screen_id)) && disp_drc_get_support(screen_id))	{
        __iep_drc_t *drc;

        drc = &gdisp.screen[screen_id].drc;

        if((1 == en) && (0 == drc->enable))	{
            IEP_Drc_Set_Imgsize(screen_id, bsp_disp_get_screen_width(screen_id), bsp_disp_get_screen_height(screen_id));
            IEP_Drc_Set_Winodw(screen_id, drc->rect);
            IEP_Drc_Set_Mode(screen_id,drc->mode);
            bsp_disp_cfg_start(screen_id);
            /* video mode */
            if(drc->mode == IEP_DRC_MODE_VIDEO) {
                //todo?  yuv output
                DE_BE_Set_Enhance_ex(screen_id, 3, DISP_COLOR_RANGE_0_255, 0,50, 50, 50,50);
            }
            /* UI mode */
            else {
                DE_BE_Set_Enhance_ex(screen_id, 0,DISP_COLOR_RANGE_0_255, 0,50, 50, 50,50);
            }
            IEP_Drc_Enable(screen_id,TRUE);
            bsp_disp_cfg_finish(screen_id);
            gdisp.screen[screen_id].drc.enable = 1;
        } else if((0 == en) && (1 == drc->enable)) {
            bsp_disp_cfg_start(screen_id);
            IEP_Drc_Enable(screen_id,en);
            /* video mode */
            if(drc->mode == IEP_DRC_MODE_VIDEO) {
                //todo? change to RGB output
                DE_BE_Set_Enhance_ex(screen_id, 0,DISP_COLOR_RANGE_0_255, 0,50, 50, 50,50);
            }
            bsp_disp_cfg_finish(screen_id);
            gdisp.screen[screen_id].drc.enable = 0;
        }

        return DIS_SUCCESS;
    }

    return DIS_NOT_SUPPORT;
}
Ejemplo n.º 3
0
__s32 IEP_Drc_Init(__u32 sel)
{

#ifdef DRC_DEFAULT_ENABLE
	__disp_rect_t regn;
#endif
  __u32 lcdgamma;
	int  value = 1;
	char primary_key[20];
	int  ret;

	memset(&giep[sel], 0, sizeof(__drc_t));
	memset(&gpwrsv[sel], 0, sizeof(__drc_pwrsv_t));

	drc_clk_init(sel);
	drc_clk_open(sel, 0);
#ifdef __LINUX_OSAL__
	pttab[sel] = kmalloc(IEP_LGC_TAB_SIZE, GFP_KERNEL | __GFP_ZERO);
#else
	pttab[sel] = OSAL_PhyAlloc(IEP_LGC_TAB_SIZE);
#endif

	sprintf(primary_key, "lcd%d_para", sel);

	ret = OSAL_Script_FetchParser_Data(primary_key, "lcdgamma4iep", &value, 1);
	if(ret < 0)	{
		DE_WRN("lcdgamma4iep for lcd%d not exist.\n", sel);
		lcdgamma = 6; //default gamma = 2.2;
	} else {
		DE_INF("lcdgamma4iep for lcd%d = %d.\n", sel, value);
		if(value > 30 || value < 10) {
			DE_WRN("lcdgamma4iep for lcd%d too small or too large. default value 22 will be set. please set it between 10 and 30 to make it valid.\n",sel);
			lcdgamma = 6;//default gamma = 2.2;
		}	else {
			lcdgamma = (value - 10)/2;
		}
	}

	memcpy(pttab[sel], pwrsv_lgc_tab[128*lcdgamma], IEP_LGC_TAB_SIZE);

	ret = OSAL_Script_FetchParser_Data(primary_key, "smartbl_low_limit", &value, 1);
	if(ret < 0) {
		DE_INF("smartbl_low_limit for lcd%d not exist.\n", sel);
	}	else {
		DE_INF("smartbl_low_limit for lcd%d = %d.\n", sel, value);
		if(value > 255 || value < 20)	{
			DE_INF("smartbl_low_limit for lcd%d too small or too large. default value 85 will be set. please set it between 20 and 255 to make it valid.\n",sel);
		}	else {
			PWRSAVE_PROC_THRES = value;
		}
	}

#ifdef DRC_DEFAULT_ENABLE
#ifdef DRC_DEMO_HALF_SCREEN
	regn.x = bsp_disp_get_screen_width(sel)/2;  //TBD
	regn.y = 0;
	regn.width = bsp_disp_get_screen_width(sel)/2;
	regn.height = bsp_disp_get_screen_height(sel);
#else
	regn.x = 0;
	regn.y = 0;
	regn.width = bsp_disp_get_screen_width(sel);
	regn.height = bsp_disp_get_screen_height(sel);
#endif
	IEP_Drc_Set_Mode(sel, 0); //default running HSV mode when default open when DRC_DEFAULT_ENABLE==1
	IEP_Drc_Enable(sel, 1);
	IEP_Drc_Set_Winodw(sel, regn);
#endif

	return DIS_SUCCESS;
}