int s3c_mdnie_set_size(unsigned int hsize, unsigned int vsize) { unsigned int size; size = s3c_mdnie_readl(S3C_MDNIE_rR2); size &= ~S3C_MDNIE_SIZE_MASK; size |= hsize; s3c_mdnie_writel(size,S3C_MDNIE_rR2); size = s3c_mdnie_readl(S3C_MDNIE_rR3); size &= ~S3C_MDNIE_SIZE_MASK; size |= vsize; s3c_mdnie_writel(size,S3C_MDNIE_rR3); return 0; }
void mDNIe_gamma_set_DMB(void) // P1_KOR_LSJ : DE26 { printk("mDNIe_gamma_set_DMB :: [START] \n"); s3c_mdnie_writel(0x0000,S3C_MDNIE_rR36); // DeConTh off s3c_mdnie_writel(0x0FFF,S3C_MDNIE_rR37); // DirTh off s3c_mdnie_writel(0x005C,S3C_MDNIE_rR38); // SimplTh off s3c_mdnie_writel(0x0FFA,S3C_MDNIE_rR39); // 0x0012, DE CEonoff CEdark AMOLED ---- 0000 000|0| 000|0 s3c_mdnie_writel(0x0160,S3C_MDNIE_rR43); // 0x0000, skinoff CSoff s3c_mdnie_writel(0x0000,S3C_MDNIE_rR45); // 0x03FF, DETh ---- --00 0000 0000 s3c_mdnie_writel(0x01B6,S3C_MDNIE_rR52); // PCC skin s3c_mdnie_writel(0x3F5F,S3C_MDNIE_rR53); s3c_mdnie_writel(0x3CEA,S3C_MDNIE_rR54); s3c_mdnie_writel(0x0000,S3C_MDNIE_rR1); printk("mDNIe_gamma_set_DMB :: [END] \n"); }
int s3c_mdnie_unmask(void) { unsigned int mask; s3c_mdnie_writel(0x0, S3C_MDNIE_rR40); return 0; }
int s3c_mdnie_unmask(void) { unsigned int mask; mask = s3c_mdnie_readl(S3C_MDNIE_rR1); mask &= ~S3C_MDNIE_REG_MASK; s3c_mdnie_writel(mask,S3C_MDNIE_rR1); return 0; }
void mDNIe_Mode_set_for_backlight(u16 *buf) { u32 i = 0; int cnt = 0; if(mdnie_tuning_backlight){ s3c_mdnie_mask(); while ((*(buf+i)) != END_SEQ) { if((*(buf+i)) == 0x0100) { if(pre_0x0100 < (*(buf+(i+1)))){ while ((pre_0x0100 < (*(buf+(i+1))))&&(pre_0x0100 <= 0x6060)&&(pre_0x0100 >= 0x0000)) { s3c_mdnie_writel(pre_0x0100, (*(buf+i))); printk("[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",(*(buf+i)),pre_0x0100); pre_0x0100 = ((pre_0x0100 & 0xff00) + (0x1<<8)) | ((pre_0x0100 & 0x00ff) + (0x1)); } } else if(pre_0x0100 > (*(buf+(i+1)))){ while (pre_0x0100 > (*(buf+(i+1)))&&(pre_0x0100 >= 0x0000)&&(pre_0x0100 <= 0x6060)) { s3c_mdnie_writel(pre_0x0100, (*(buf+i))); printk("[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",(*(buf+i)),pre_0x0100); pre_0x0100 = ((pre_0x0100 & 0xff00) - (0x1<<8)) | ((pre_0x0100 & 0x00ff) - (0x1)); } } s3c_mdnie_writel((*(buf+i+1)), (*(buf+i))); pre_0x0100 = (*(buf+i+1)); } else { s3c_mdnie_writel((*(buf+i+1)), (*(buf+i))); } printk("[mDNIe] mDNIe_Mode_set_for_backlight : addr(0x%x), data(0x%x) \n",(*(buf+i)),(*(buf+(i+1)))); i+=2; } s3c_mdnie_unmask(); } }
int s3c_mdnie_set_size(unsigned int hsize, unsigned int vsize) { unsigned int size; size = s3c_mdnie_readl(S3C_MDNIE_rR34); size &= ~S3C_MDNIE_SIZE_MASK; size |= hsize; s3c_mdnie_writel(S3C_MDNIE_rR34, size); s3c_mdnie_unmask(); size = s3c_mdnie_readl(S3C_MDNIE_rR35); size &= ~S3C_MDNIE_SIZE_MASK; size |= vsize; s3c_mdnie_writel(S3C_MDNIE_rR35, size); s3c_mdnie_unmask(); return 0; }
void mDNIe_tuning_set(void) { u32 i = 0; while (mDNIe_data[i] != END_SEQ) { s3c_mdnie_writel(mDNIe_data[i+1], mDNIe_data[i]); //printk(KERN_INFO "[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n", mDNIe_data[i], mDNIe_data[i+1]); i += 2; } s3c_mdnie_unmask(); }
int s3c_mdnie_select_mode(int algo, int mcm, int lpa) { s3c_mdnie_writel(0x0000,S3C_MDNIE_rR1); s3c_mdnie_writel(0x0000,S3C_MDNIE_rR36); s3c_mdnie_writel(0x0FFF,S3C_MDNIE_rR37); s3c_mdnie_writel(0x005c,S3C_MDNIE_rR38); s3c_mdnie_writel(0x0ff0,S3C_MDNIE_rR39); s3c_mdnie_writel(0x0064,S3C_MDNIE_rR43); s3c_mdnie_writel(0x0364,S3C_MDNIE_rR45); return 0; }
void mDNIe_gamma_set(void) // P1_KOR_LSJ : DE26 { printk("mDNIe_gamma_set :: [START] \n"); s3c_mdnie_writel(0x0000,S3C_MDNIE_rR36); // DeConTh off s3c_mdnie_writel(0x0FFF,S3C_MDNIE_rR37); // DirTh off s3c_mdnie_writel(0x005C,S3C_MDNIE_rR38); // SimplTh off s3c_mdnie_writel(0x0012,S3C_MDNIE_rR39); // 0x0012, DE CEonoff CEdark AMOLED ---- 0000 000|0| 000|0 s3c_mdnie_writel(0x0280,S3C_MDNIE_rR43); // 0x0000, skinoff CSoff s3c_mdnie_writel(0x0000,S3C_MDNIE_rR45); // 0x03FF, DETh ---- --00 0000 0000 printk("mDNIe_gamma_set :: [END] \n"); }
void mDNIe_Mode_Change(mDNIe_data_type *mode) { if(mDNIe_Tuning_Mode == TRUE) { printk("mDNIe_Mode_Change [mDNIe_Tuning_Mode = TRUE, API is Return] \n"); return; } else { s3c_mdnie_mask(); while ( mode->addr != END_SEQ) { s3c_mdnie_writel(mode->data, mode->addr); gprintk(KERN_INFO "[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",mode->addr, mode->data); mode++; } s3c_mdnie_unmask(); } }
int s3c_mdnie_unmask(void) { s3c_mdnie_writel(S3C_MDNIE_rR40, 0x0); return 0; }
void mDNIe_Mode_set_for_lightsensor(u16 *buf) { u32 i = 0; int cnt = 0; s3c_mdnie_mask(); if(cur_adc_level >= pre_adc_level) //0 => END_SEQ { while ( (*(buf+i)) != END_SEQ) { if((*(buf+i)) == 0x0100) { if(init_mdnie == 0) { pre_0x0100 = (*(buf+(i+1))); } if(pre_0x0100 < (*(buf+(i+1)))){ while ((pre_0x0100 < (*(buf+(i+1))))&&(pre_0x0100 <= 0x8080)&&(pre_0x0100 >= 0x0000)) { s3c_mdnie_writel(pre_0x0100, (*(buf+i))); printk("[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",(*(buf+i)),pre_0x0100); pre_0x0100 = ((pre_0x0100 & 0xff00) + (light_step<<8)) | ((pre_0x0100 & 0x00ff) + (saturation_step)); } } else if(pre_0x0100 > (*(buf+(i+1)))){ while (pre_0x0100 > (*(buf+(i+1)))&&(pre_0x0100 >= 0x0000)&&(pre_0x0100 <= 0x8080)) { s3c_mdnie_writel(pre_0x0100, (*(buf+i))); printk("[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",(*(buf+i)),pre_0x0100); pre_0x0100 = ((pre_0x0100 & 0xff00) - (light_step<<8)) | ((pre_0x0100 & 0x00ff) - (saturation_step)); } } s3c_mdnie_writel((*(buf+i+1)), (*(buf+i))); pre_0x0100 = (*(buf+i+1)); } else if((*(buf+i)) == 0x00AC) { if(init_mdnie == 0) { pre_0x00AC = (*(buf+(i+1))); } if(pre_0x00AC < (*(buf+(i+1)))){ while (pre_0x00AC < (*(buf+(i+1)))&&(pre_0x00AC <= 0x03ff)&&(pre_0x00AC >= 0x0000)) { s3c_mdnie_writel(pre_0x00AC, (*(buf+i))); printk("[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",(*(buf+i)),pre_0x00AC); pre_0x00AC +=(cs_step); } } else if(pre_0x00AC > (*(buf+(i+1)))){ while (pre_0x00AC > (*(buf+(i+1)))&&(pre_0x00AC >= 0x0000)&&(pre_0x00AC <= 0x03ff)) { s3c_mdnie_writel(pre_0x00AC, (*(buf+i))); printk("[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",(*(buf+i)),pre_0x00AC); pre_0x00AC -=(cs_step); } } s3c_mdnie_writel((*(buf+i+1)), (*(buf+i))); pre_0x00AC = (*(buf+i+1)); } else { s3c_mdnie_writel((*(buf+i+1)), (*(buf+i))); } printk("[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",(*(buf+i)),(*(buf+(i+1)))); i+=2; } } else // if(cur_adc_level < pre_adc_level) //END_SEQ => 0 { switch (cur_adc_level) { case 0: cnt = mDNIe_data_level0_cnt; break; case 1: cnt = mDNIe_data_level1_cnt; break; case 2: cnt = mDNIe_data_level2_cnt; break; case 3: default: cnt = mDNIe_data_level3_cnt; break; case 4: cnt = mDNIe_data_level4_cnt; break; case 5: cnt = mDNIe_data_level5_cnt; break; } cnt--; //remove END_SEQ while ( cnt > 0) { if((*(buf+cnt-1)) == 0x0100) { if(init_mdnie == 0) { pre_0x0100 = (*(buf+cnt)); } if(pre_0x0100 < (*(buf+cnt))){ while ((pre_0x0100 < (*(buf+cnt)))&&(pre_0x0100 <= 0x8080)&&(pre_0x0100 >= 0x0000)) { s3c_mdnie_writel(pre_0x0100, (*(buf+cnt-1))); printk("[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",(*(buf+cnt-1)),pre_0x0100); pre_0x0100 = ((pre_0x0100 & 0xff00) + (light_step<<8)) | ((pre_0x0100 & 0x00ff) + (saturation_step)); } } else if(pre_0x0100 > (*(buf+cnt))){ while (pre_0x0100 > (*(buf+cnt))&&(pre_0x0100 >= 0x0000)&&(pre_0x0100 <= 0x8080)) { s3c_mdnie_writel(pre_0x0100, (*(buf+cnt-1))); printk("[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",(*(buf+cnt-1)),pre_0x0100); pre_0x0100 = ((pre_0x0100 & 0xff00) - (light_step<<8)) | ((pre_0x0100 & 0x00ff) - (saturation_step)); } } s3c_mdnie_writel((*(buf+cnt)), (*(buf+cnt-1))); pre_0x0100 = (*(buf+cnt)); } else if((*(buf+cnt-1)) == 0x00AC) { if(init_mdnie == 0) { pre_0x00AC = (*(buf+cnt)); } if(pre_0x00AC < (*(buf+cnt))){ while (pre_0x00AC < (*(buf+cnt))&&(pre_0x00AC <= 0x03ff)&&(pre_0x00AC >= 0x0000)) { s3c_mdnie_writel(pre_0x00AC, (*(buf+cnt-1))); printk("[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",(*(buf+cnt-1)),pre_0x00AC); pre_0x00AC +=(cs_step); } } else if(pre_0x00AC > (*(buf+cnt))){ while (pre_0x00AC > (*(buf+cnt))&&(pre_0x00AC >= 0x0000)&&(pre_0x00AC <= 0x03ff)) { s3c_mdnie_writel(pre_0x00AC, (*(buf+cnt-1))); printk("[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",(*(buf+cnt-1)),pre_0x00AC); pre_0x00AC -=(cs_step); } } s3c_mdnie_writel((*(buf+cnt)), (*(buf+cnt-1))); pre_0x00AC = (*(buf+cnt)); } else { //s3c_mdnie_writel((*(buf+i+1)), (*(buf+i))); s3c_mdnie_writel((*(buf+cnt)), (*(buf+cnt-1))); } printk("[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",(*(buf+cnt-1)),(*(buf+cnt))); cnt -=2; } } s3c_mdnie_unmask(); }
void mDNIe_Mode_set_for_backlight(u16 *buf) { u32 i = 0; int cnt = 0; if(IsLDIEnabled()) { mutex_lock(&mdnie_use); //if(mdnie_tuning_backlight) { s3c_mdnie_mask(); while ((*(buf+i)) != END_SEQ) { if((*(buf+i)) == 0x0100) { if(pre_0x0100 < (*(buf+(i+1)))){ while ((pre_0x0100 < (*(buf+(i+1))))&&(pre_0x0100 <= 0x4020)&&(pre_0x0100 >= 0x0000)) { s3c_mdnie_writel(pre_0x0100, (*(buf+i))); gprintk("[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",(*(buf+i)),pre_0x0100); if((pre_0x0100 & 0x00ff) == 0x20) { pre_0x0100 = ((pre_0x0100 & 0xff00) + (0x8<<8)) | (0x20); } else { pre_0x0100 = ((pre_0x0100 & 0xff00) + (0x8<<8)) | ((pre_0x0100 & 0x00ff) + (0x4)); } msleep(20); } } else if(pre_0x0100 > (*(buf+(i+1)))){ while (pre_0x0100 > (*(buf+(i+1)))&&(pre_0x0100 >= 0x0000)&&(pre_0x0100 <= 0x4020)) { s3c_mdnie_writel(pre_0x0100, (*(buf+i))); gprintk("[mDNIe] mDNIe_tuning_initialize: addr(0x%x), data(0x%x) \n",(*(buf+i)),pre_0x0100); if((pre_0x0100 & 0x00ff) == 0x00) { pre_0x0100 = ((pre_0x0100 & 0xff00) - (0x8<<8)) | (0x00); } else { pre_0x0100 = ((pre_0x0100 & 0xff00) - (0x8<<8)) | ((pre_0x0100 & 0x00ff) - (0x4)); } msleep(20); } } s3c_mdnie_writel((*(buf+i+1)), (*(buf+i))); pre_0x0100 = (*(buf+i+1)); } else { s3c_mdnie_writel((*(buf+i+1)), (*(buf+i))); } gprintk("[mDNIe] mDNIe_Mode_set_for_backlight : addr(0x%x), data(0x%x) \n",(*(buf+i)),(*(buf+(i+1)))); i+=2; } s3c_mdnie_unmask(); } mutex_unlock(&mdnie_use); } }