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