blob: 577ddc2fccdbf41b1681f3a80a76354cb78fb1cb [file] [log] [blame]
#ifndef __GP2AP110S_H__
#define __GP2AP110S_H__
//// Register address ////
#define REG_COM1 0x80
#define REG_COM2 0x81
#define REG_COM3 0x82
#define REG_COM4 0x83
#define REG_D0_LSB 0x90
#define REG_D0_MSB 0x91
#define REG_REV_CODE 0xA0
#define REG_DYNAMIC_CAL_RESULT 0xC0
#define DYNAMIC_CALIBRATION_DELAY 1000
#define OFFSET_TUNE_DELAY 1000
#define AUTO_CALIB_OFFSET_MAX 4500
#define OFFSET_DELTA 40
#define MAX_OFFSET 5000
struct gp2ap_data
{
struct mutex mutex_ps_onoff;
struct mutex mutex_enable;
struct mutex mutex_interrupt;
struct i2c_client *client;
struct hrtimer prox_timer;
struct workqueue_struct *prox_wq;
struct work_struct work_prox;
struct delayed_work offset_work;
ktime_t prox_poll_delay;
atomic_t prox_enable;
int avg[3];
int p_out;
int ps_irq;
int irq_flags;
struct input_dev *ps_input_dev;
struct device *dev;
struct work_struct ps_int_work;
int ps_enabled;
int ps_distance;
int ps_count;
int calib_target;
int led_reg_val_1;
int ps_high_th_1;
int ps_low_th_1;
int ps_high_th_2;
int ps_low_th_2;
int led_reg_val_2;
int bytes;
int prox_settings;
int led_reg_val;
int ps_high_th;
int ps_low_th;
int settings_thd_low;
int settings_thd_high;
int force_close_thd_low;
int force_close_thd_high;
int dynamic_calib_enabled;
int dynamic_calib_done;
int tune_adc_count;
int zero_detect;
int pre_test;
bool handle_high_offset;
u16 high_offset;
u16 min_close_offset;
enum of_gpio_flags irq_gpio_flags;
};
#endif