示例#1
0
__s32 IEP_Deu_Init(__u32 sel)
{
	int ret;
	int value = 1;
	char primary_key[20];

	g_strtab_addr = (__u32 *)OSAL_PhyAlloc(512);//OSAL_PhyAlloc(512);
	memcpy(g_strtab_addr, deu_str_tab, 512);
	deu_clk_init(sel);

    sprintf(primary_key, "lcd%d_para", sel);
	ret = OSAL_Script_FetchParser_Data(primary_key, "deu_mode", &value, 1);
	if(ret < 0)
	{
		DE_WRN("deu_mode%d not exist.\n", sel);
		plptab = &deu_lp_tab_s[0][0][0];
	}
	else
	{
		DE_INF("deu_mode%d = %d.\n", sel, value);
		if(value > 1 || value < 0)
		{
			DE_WRN("deu_mode%d invalid.\n",sel);
			plptab = &deu_lp_tab_s[0][0][0];
		}
		else
		{
			plptab = (value == 1)? (&deu_lp_tab_l[0][0][0]):(&deu_lp_tab_s[0][0][0]);
		}
	}

	return DIS_SUCCESS;

}
示例#2
0
__s32 disp_video_init()
{
	__u32 num_screens;
	__u32 num_scalers;
	__u32 scaler_id;

	num_screens = bsp_disp_feat_get_num_screens();
	num_scalers = bsp_disp_feat_get_num_scalers();
	memset(g_video,0,sizeof(g_video));
#ifdef __LINUX_OSAL__
	for(scaler_id=0; scaler_id<num_scalers; scaler_id++) {
		if((bsp_disp_feat_get_layer_feats(scaler_id, DISP_LAYER_WORK_MODE_SCALER, scaler_id)
				    & DISP_LAYER_FEAT_DE_INTERLACE))
			bsp_disp_lcd_delay_ms(10);
			maf_flag_mem[scaler_id][0] = (void*)__pa((char __iomem *)kmalloc(maf_flag_mem_len, GFP_KERNEL |  __GFP_ZERO));
			maf_flag_mem[scaler_id][1] = (void*)__pa((char __iomem *)kmalloc(maf_flag_mem_len, GFP_KERNEL |  __GFP_ZERO));
			DE_INF("maf_flag_mem[%d][%d]=0x%8x, maf_flag_mem[%d][%d]=0x%8x\n",scaler_id, 0,
				(unsigned int)maf_flag_mem[scaler_id][0], scaler_id, 1, (unsigned int)maf_flag_mem[scaler_id][1]);
			if((maf_flag_mem[scaler_id][0] == NULL) || (maf_flag_mem[scaler_id][1] == NULL)) {
				DE_WRN("maf memory[%d] request fail\n", scaler_id);
			}
	}
#else
	for(scaler_id=0; scaler_id<num_scalers; scaler_id++) {
		if((bsp_disp_feat_get_layer_feats(scaler_id, DISP_LAYER_WORK_MODE_SCALER, scaler_id)
			    & DISP_LAYER_FEAT_DE_INTERLACE))
			maf_flag_mem[scaler_id][0] = OSAL_PhyAlloc(maf_flag_mem_len);
			maf_flag_mem[scaler_id][1] = OSAL_PhyAlloc(maf_flag_mem_len);
			DE_INF("maf_flag_mem[%d][%d]=0x%8x, maf_flag_mem[%d][%d]=0x%8x\n",scaler_id, 0,
				(unsigned int)maf_flag_mem[scaler_id][0], scaler_id, 1, (unsigned int)maf_flag_mem[scaler_id][1]);
			if((maf_flag_mem[scaler_id][0] == NULL) || (maf_flag_mem[scaler_id][1] == NULL)) {
				DE_WRN("maf memory[%d] request fail\n", scaler_id);
			}
	}
#endif
	for(scaler_id=0; scaler_id<num_scalers; scaler_id++) {
		dit_mode_default[scaler_id] = DIT_MODE_MAF;
	}

	return DIS_SUCCESS;
}
示例#3
0
__s32 iep_drc_suspend(__u32 sel)//save register
{
	__u32 i,reg_val;
#if defined(__LINUX_OSAL__)
	drc_reg_bak[sel] = (__u32)kmalloc(sizeof(__u32)*0x3fc,GFP_KERNEL | __GFP_ZERO);
#else
	drc_reg_bak[sel] = (__u32)OSAL_PhyAlloc(sizeof(__u32)*0x3fc);
#endif
	if(drc_reg_bak[sel]) {
		for(i=0; i<0x3fc; i+=4)	{
			/*  save register */
			reg_val = sys_get_wvalue(DRC_EBIOS_Get_Reg_Base(sel) +i);
			sys_put_wvalue(drc_reg_bak[sel]+i, reg_val);
		}
	}
	return 0;
}
示例#4
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;
}