static ssize_t lightsensor_file_state_show(struct device *dev, struct device_attribute *attr, char *buf) { struct gp2a_data *gp2a = dev_get_drvdata(dev); int adc = 0; adc = lightsensor_get_adcvalue(gp2a); return sprintf(buf, "%d\n", adc); }
static void gp2a_work_func_light(struct work_struct *work) { struct gp2a_data *gp2a = container_of(work, struct gp2a_data, work_light); int adc = lightsensor_get_adcvalue(gp2a); input_report_abs(gp2a->light_input_dev, ABS_MISC, adc); input_sync(gp2a->light_input_dev); }
static ssize_t lightsensor_file_state_show(struct device *dev, struct device_attribute *attr, char *buf) { int adc = 0; adc = lightsensor_get_adcvalue(); printk("%s : adc(%d)\n",__func__, adc); return sprintf(buf, "%d\n", adc); }
/* Light Sysfs interface */ static ssize_t lightsensor_file_state_show(struct device *dev, struct device_attribute *attr, char *buf) { int adc = 0; struct gp2a_data *data = dev_get_drvdata(dev); adc = lightsensor_get_adcvalue(data); return snprintf(buf, PAGE_SIZE, "%d\n", adc); }
static ssize_t lightsensor_raw_data_show(struct device *dev, struct device_attribute *attr, char *buf) { struct sensor_data *data = dev_get_drvdata(dev); int adc = 0; adc = lightsensor_get_adcvalue(data); return sprintf(buf, "%d\n", adc); }
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; #ifdef CONFIG_MACH_BAFFIN int count = 0; while (adc == 0 && count < 5) { adc = lightsensor_get_adcvalue(data); count++; } #else adc = lightsensor_get_adcvalue(data); #endif input_report_rel(data->input_dev, REL_MISC, adc + 1); input_sync(data->input_dev); /*Reset lightsensor, if 0 lux data is continuously reported for 5 secs*/ if (adc == 0) { if (data->zero_cnt++ > 25) { data->zero_cnt = 0; if (data->reset_cnt++ <= LIMIT_RESET_COUNT) { lightsensor_onoff(0); lightsensor_onoff(1); pr_info("%s : lightsensor reset done.\n", __func__); } else { data->reset_cnt = LIMIT_RESET_COUNT + 1; } } } else { data->reset_cnt = 0; data->zero_cnt = 0; } if (data->enabled) queue_delayed_work(data->wq, &data->work, msecs_to_jiffies(data->delay)); }
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 i; int adc = 0; adc = lightsensor_get_adcvalue(); for (i = 0; ARRAY_SIZE(adc_table); i++) if (adc <= adc_table[i]) break; if (data->light_buffer == i) { if(data->light_level_state <= i || data->light_first_level == true){ if (data->light_count++ == LIGHT_BUFFER_UP) { if (LightSensor_Log_Cnt == 10) { printk("[LIGHT SENSOR] lux up 0x%0X (%d)\n", adc, adc); LightSensor_Log_Cnt = 0; } LightSensor_Log_Cnt = LightSensor_Log_Cnt + 1; input_report_abs(this_data, ABS_MISC, adc); input_sync(this_data); data->light_count = 0; data->light_first_level = false; data->light_level_state = data->light_buffer; } }else { if (data->light_count++ == LIGHT_BUFFER_DOWN) { if (LightSensor_Log_Cnt == 10) { printk("[LIGHT SENSOR] lux down 0x%0X (%d)\n", adc, adc); LightSensor_Log_Cnt = 0; } LightSensor_Log_Cnt = LightSensor_Log_Cnt + 1; input_report_abs(this_data, ABS_MISC, adc); input_sync(this_data); data->light_count = 0; data->light_level_state = data->light_buffer; } } } else { data->light_buffer = i; data->light_count = 0; } if(data->enabled) queue_delayed_work(light_workqueue,&data->work, msecs_to_jiffies(data->delay)); }
static void gp2a_work_func_light(struct work_struct *work) { struct gp2a_data *data = container_of((struct delayed_work *)work, struct gp2a_data, light_work); int adc = 0; adc = lightsensor_get_adcvalue(data); input_report_abs(data->light_input_dev, ABS_MISC, adc); input_sync(data->light_input_dev); if (data->light_enabled) schedule_delayed_work(&data->light_work, msecs_to_jiffies(data->light_delay)); }
static void gp2a_work_func_light(struct work_struct *work) { struct gp2a_data *data = container_of((struct delayed_work *)work, struct gp2a_data, light_work); int adc = 0; adc = lightsensor_get_adcvalue(data); input_report_abs(data->light_input_dev, ABS_MISC, adc); input_sync(data->light_input_dev); if (lightval_logcount++ > 250) { printk(KERN_INFO "[GP2A] light value = %d \n", adc); lightval_logcount = 0; } if (data->light_enabled) schedule_delayed_work(&data->light_work, msecs_to_jiffies(data->light_delay)); }
static void gp2a_work_func_light(struct work_struct *work) { int i; struct gp2a_data *gp2a = container_of(work, struct gp2a_data, work_light); int adc = lightsensor_get_adcvalue(gp2a); for (i = 0; ARRAY_SIZE(adc_table); i++) if (adc <= adc_table[i]) break; if (gp2a->light_buffer == i) { if (gp2a->light_count++ == LIGHT_BUFFER_NUM) { /* pr_info("%s : adc=%d\n", __func__, adc); */ input_report_abs(gp2a->light_input_dev, ABS_MISC, adc); input_sync(gp2a->light_input_dev); gp2a->light_count = 0; } } else { gp2a->light_buffer = i; gp2a->light_count = 0; } }
static void gp2a_work_func_light(struct work_struct *work) { struct gp2a_data *data = container_of((struct delayed_work *)work, struct gp2a_data, light_work); int adc = 0; #if defined(CONFIG_MACH_BAFFIN_DUOS_CTC) volatile static int count = 0; #endif adc = lightsensor_get_adcvalue(data); #if defined(CONFIG_MACH_BAFFIN_DUOS_CTC) if(adc == 0) { count++; if(count == 18) //detecting 0 after 3.6sec, set the register again. { printk(KERN_INFO" [GP2A]: add for ESD \n"); lightsensor_onoff(1,data); count = 0; } } #endif input_report_abs(data->light_input_dev, ABS_MISC, adc); input_sync(data->light_input_dev); if (lightval_logcount++ > 250) { printk(KERN_INFO "[GP2A] light value = %d \n", adc); lightval_logcount = 0; } if (data->light_enabled) schedule_delayed_work(&data->light_work, msecs_to_jiffies(data->light_delay)); }
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 }
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 i; int adc = 0; #ifdef CONFIG_MACH_BAFFIN int count = 0; #endif #ifdef CONFIG_MACH_BAFFIN while (adc == 0 && count < 5) { adc = lightsensor_get_adcvalue(data); count++; } #else adc = lightsensor_get_adcvalue(data); #endif if (is_gp2a030a()) { for (i = 0; ARRAY_SIZE(adc_table_030a); i++) if (adc <= adc_table_030a[i]) break; } else { for (i = 0; ARRAY_SIZE(adc_table); i++) if (adc <= adc_table[i]) break; } if (data->light_buffer == i) { if (data->light_count++ == LIGHT_BUFFER_NUM) { input_report_rel(data->input_dev, REL_MISC, (adc ? adc : 1)); input_sync(data->input_dev); data->light_count = 0; } } else { data->light_buffer = i; data->light_count = 0; } #if defined(CONFIG_MACH_M3_USA_TMO) if (adc == 0) { if (data->zero_cnt++ > 25) { data->zero_cnt = 0; if (data->reset_cnt++ <= LIMIT_RESET_COUNT) { lightsensor_onoff(0); lightsensor_onoff(1); pr_info("%s : lightsensor reset done.\n", __func__); } else { data->reset_cnt = LIMIT_RESET_COUNT + 1; } } } else { data->reset_cnt = 0; data->zero_cnt = 0; } #endif if (data->enabled) queue_delayed_work(data->wq, &data->work, msecs_to_jiffies(data->delay)); }