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)); }
static void ssp_sensorhub_report_library(struct ssp_sensorhub_data *hub_data) { input_report_rel(hub_data->sensorhub_input_dev, DATA, DATA); input_sync(hub_data->sensorhub_input_dev); wake_lock_timeout(&hub_data->sensorhub_wake_lock, WAKE_LOCK_TIMEOUT); }
void wacom_report_rel(void *wcombo, unsigned int rel_type, int rel_data) { input_report_rel(get_input_dev((struct wacom_combo *)wcombo), rel_type, rel_data); return; }