static ssize_t light_read(struct file *filp, char *lux, size_t count, loff_t *f_pos) { long lux_val; lux_val = StateToLux(cur_state); put_user(lux_val, lux); return 1; }
static ssize_t light_data_show(struct device *dev, struct device_attribute *attr, char *buf) { struct input_dev *input_data = to_input_dev(dev); struct sensor_data *data = input_get_drvdata(input_data); //unsigned long flags; int light_lux; mutex_lock(&data->mutex); light_lux = StateToLux(data->light_data); mutex_unlock(&data->mutex); return sprintf(buf, "%d\n", light_lux); }
static void gp2a_work_func_light(struct work_struct *work) { struct sensor_data *data = container_of((struct delayed_work *)work, struct sensor_data, work); int adc=0; state_type level_state = LIGHT_INIT; int lux = 0; static int old_lux = 0; /* read adc data from s5p110 */ adc = lightsensor_get_adcvalue(); if(adc >= 1643)//(adc >= 1050) { level_state = LIGHT_LEVEL5; buffering = 5; } else if(adc >= 1576 && adc < 1643)//(adc >= 800 && adc < 1050) { if(buffering == 5) { level_state = LIGHT_LEVEL5; buffering = 5; } else if((buffering == 1)||(buffering == 2)||(buffering == 3)||(buffering == 4)) { level_state = LIGHT_LEVEL4; buffering = 4; } } else if(adc >= 1159 && adc < 1576)//(adc >= 750 && adc < 800) { level_state = LIGHT_LEVEL4; buffering = 4; } else if(adc >= 1104 && adc < 1159)//(adc >= 560 && adc < 750) { if((buffering == 4)||(buffering == 5)) { level_state = LIGHT_LEVEL4; buffering = 4; } else if((buffering == 1)||(buffering == 2)||(buffering == 3)) { level_state = LIGHT_LEVEL3; buffering = 3; } } else if(adc >= 462 && adc < 1104)//(adc >= 550 && adc < 560) { level_state = LIGHT_LEVEL3; buffering = 3; } else if(adc >= 430 && adc < 462)//(adc >= 370 && adc < 550) { if((buffering == 3)||(buffering == 4)||(buffering == 5)) { level_state = LIGHT_LEVEL3; buffering = 3; } else if((buffering == 1)||(buffering == 2)) { level_state = LIGHT_LEVEL2; buffering = 2; } } else if(adc >= 94 && adc < 430)//(adc >= 270 && adc < 370) { level_state = LIGHT_LEVEL2; buffering = 2; } else if(adc >= 86 && adc < 94)//(adc >= 200 && adc < 270) { if((buffering == 2)||(buffering == 3)||(buffering == 4)||(buffering == 5)) { level_state = LIGHT_LEVEL2; buffering = 2; } else if(buffering == 1) { level_state = LIGHT_LEVEL1; buffering = 1; } } else if(adc < 86)//(adc < 200) { level_state = LIGHT_LEVEL1; buffering = 1; } cur_state = level_state; #ifdef MDNIE_TUNINGMODE_FOR_BACKLIGHT if(autobrightness_mode) { if((pre_val!=1)&&(current_gamma_value == 24)&&(level_state == LIGHT_LEVEL5)&&(current_mDNIe_UI == mDNIe_UI_MODE)) { mDNIe_Mode_set_for_backlight(pmDNIe_Gamma_set[1]); pre_val = 1; gprintk("mDNIe_Mode_set_for_backlight - pmDNIe_Gamma_set[1]\n" ); } } #endif lux = StateToLux(cur_state); data->light_data= cur_adc_value; if(data->testmode == 1) { input_report_abs(this_data, ABS_Y, adc); input_sync(this_data); //gprintk("testmode : adc(%d), lux(%d), cur_state(%d) \n", adc, lux, cur_state); } else { if(old_lux != lux) { old_lux = lux; input_report_abs(this_data, ABS_X, lux); input_sync(this_data); gprintk("realmode : adc(%d), lux(%d), cur_state(%d) \n", adc, lux, cur_state); } } schedule_delayed_work(&data->work, msecs_to_jiffies(data->delay)); }
static void gp2a_work_func_light(struct work_struct *work) { int adc=0; int lux = 0; // iamaj state_type level_state = LIGHT_INIT; struct gp2a_data *gp2a = container_of(work, struct gp2a_data, work_light); ktime_t light_polling_time; static state_type prev_level_state = 0; static state_type changed_level_state = 0; static int check_count = 0; #ifdef MDNIE_TUNINGMODE_FOR_BACKLIGHT int val = 0; #endif /* read adc data from s5p110 */ adc = lightsensor_get_adcvalue(); gprintk("Optimized adc = %d \n",adc); gprintk("cur_state = %d\n",cur_state); gprintk("light_enable = %d\n",light_enable); /* As MDNIE not used currently this is commented and used for Autobrightness and factory test */ // lightsensor_adc = adc; // iamaj #if 1 // iamaj EE25 if(adc >= ADC_LEVEL3_BUF) { level_state = LIGHT_LEVEL4; buffering = 4; } else if(adc >= ADC_LEVEL3 && adc < ADC_LEVEL3_BUF) { if(buffering == 4) { level_state = LIGHT_LEVEL4; buffering = 4; } else if((buffering == 1)||(buffering == 2)||(buffering == 3)) { level_state = LIGHT_LEVEL3; buffering = 3; } } else if(adc >= ADC_LEVEL2_BUF && adc < ADC_LEVEL3) { level_state = LIGHT_LEVEL3; buffering = 3; } else if(adc >= ADC_LEVEL2 && adc < ADC_LEVEL2_BUF) { if((buffering == 3)||(buffering == 4)) { level_state = LIGHT_LEVEL3; buffering = 3; } else if((buffering == 1)||(buffering == 2)) { level_state = LIGHT_LEVEL2; buffering = 2; } } else if(adc >= ADC_LEVEL1_BUF && adc < ADC_LEVEL2) { level_state = LIGHT_LEVEL2; buffering = 2; } else if(adc >= ADC_LEVEL1 && adc < ADC_LEVEL1_BUF) { if((buffering == 2)||(buffering == 3)||(buffering == 4)) { level_state = LIGHT_LEVEL2; buffering = 2; } else if(buffering == 1) { level_state = LIGHT_LEVEL1; buffering = 1; } } else if(adc < ADC_LEVEL1) { level_state = LIGHT_LEVEL1; buffering = 1; } #else if(adc >= ADC_LEVEL3 ){ // iamaj 1800 -> 1900 -> 1910 level_state = LIGHT_LEVEL4;//255;//29; } else if(adc >=ADC_LEVEL2 && adc < ADC_LEVEL3){ // iamaj 1000->1200 ->1230, 1200->1900->1910 level_state = LIGHT_LEVEL3;//145; //ed11 //MBjclee //14; } else if(adc >= ADC_LEVEL1 && adc < ADC_LEVEL2){ // iamaj 200->1->500 , 1000->1200->1230 level_state = LIGHT_LEVEL2;//80;//MBjclee //14 } else if(adc < ADC_LEVEL1){ // iamaj 200 -> 1->500 level_state = LIGHT_LEVEL1;//15;//5; } #endif cur_state = level_state; lux = StateToLux(cur_state); lightsensor_adc = lux; // iamaj #ifdef MDNIE_TUNINGMODE_FOR_BACKLIGHT if((old_gamma_value >= 25)&&(level_state == LIGHT_LEVEL8)) { if(adc >= 2300 ){ val = 2; level_outdoor = 2; } else if(adc >= 2100 && adc < 2300){ val = 1; level_outdoor = 1; } else if(adc >= 1810 && adc < 2100){ val = 0; level_outdoor = 0; } printk("mDNIe_Mode_set_for_backlight pre_val(%d) val(%d)\n",pre_val, val); //Temp if(IsChangedADC(val)){ while(pre_val != val) { if (pre_val < val) pre_val++; else pre_val--; if((pre_val == 0) && ((level_outdoor == 1) || (level_outdoor == 2))) mDNIe_Mode_set_for_backlight(pmDNIe_Gamma_set[3]); else mDNIe_Mode_set_for_backlight(pmDNIe_Gamma_set[pre_val]); level_outdoor = pre_val; printk("mDNIe_Mode_set_for_backlight - pmDNIe_Gamma_set[%d]\n", pre_val); } } } #endif gprintk("cur_state = %d\n",cur_state); //Temp }