diff options
Diffstat (limited to 'include/linux/i2c/mxt224.h')
-rw-r--r-- | include/linux/i2c/mxt224.h | 257 |
1 files changed, 257 insertions, 0 deletions
diff --git a/include/linux/i2c/mxt224.h b/include/linux/i2c/mxt224.h new file mode 100644 index 0000000..aad3bdd --- /dev/null +++ b/include/linux/i2c/mxt224.h @@ -0,0 +1,257 @@ +/* + * AT42QT602240/ATMXT224 Touchscreen driver + * + * Copyright (C) 2012 Samsung Electronics Co.Ltd + * This touch driver is based on mxt224_u1.h + * Author: Taeheon Kim <th908.kim@samsung.com> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#ifndef __MXT224_H__ +#define __MXT224_H__ + +#define MXT224_DEV_NAME "Atmel MXT224" + +#define MXT224_MAX_MT_FINGERS 10 + +#define MAX_USING_FINGER_NUM 10 + +#define MXT224_AUTOCAL_WAIT_TIME 2000 + +#define DRIVER_FILTER +enum { + RESERVED_T0 = 0, + RESERVED_T1, + DEBUG_DELTAS_T2, + DEBUG_REFERENCES_T3, + DEBUG_SIGNALS_T4, + GEN_MESSAGEPROCESSOR_T5, + GEN_COMMANDPROCESSOR_T6, + GEN_POWERCONFIG_T7, + GEN_ACQUISITIONCONFIG_T8, + TOUCH_MULTITOUCHSCREEN_T9, + TOUCH_SINGLETOUCHSCREEN_T10, + TOUCH_XSLIDER_T11, + TOUCH_YSLIDER_T12, + TOUCH_XWHEEL_T13, + TOUCH_YWHEEL_T14, + TOUCH_KEYARRAY_T15, + PROCG_SIGNALFILTER_T16, + PROCI_LINEARIZATIONTABLE_T17, + SPT_COMCONFIG_T18, + SPT_GPIOPWM_T19, + PROCI_GRIPFACESUPPRESSION_T20, + RESERVED_T21, + PROCG_NOISESUPPRESSION_T22, + TOUCH_PROXIMITY_T23, + PROCI_ONETOUCHGESTUREPROCESSOR_T24, + SPT_SELFTEST_T25, + DEBUG_CTERANGE_T26, + PROCI_TWOTOUCHGESTUREPROCESSOR_T27, + SPT_CTECONFIG_T28, + SPT_GPI_T29, + SPT_GATE_T30, + TOUCH_KEYSET_T31, + TOUCH_XSLIDERSET_T32, + RESERVED_T33, + GEN_MESSAGEBLOCK_T34, + SPT_GENERICDATA_T35, + RESERVED_T36, + DEBUG_DIAGNOSTIC_T37, + SPT_USERDATA_T38, + SPARE_T39, + PROCI_GRIPSUPPRESSION_T40, + SPARE_T41, + PROCI_TOUCHSUPPRESSION_T42, + SPARE_T43, + SPARE_T44, + SPARE_T45, + SPT_CTECONFIG_T46, + PROCI_STYLUS_T47, + PROCG_NOISESUPPRESSION_T48, + SPARE_T49, + SPARE_T50, + RESERVED_T255 = 255, +}; +struct t22_freq_table_config_t { + u8 fherr_setting; + u8 fherr_cnt; + u8 fherr_num; + u8 t9_blen_for_fherr; + u8 t9_blen_for_fherr_cnt; + u8 t9_thr_for_fherr; + u8 t9_movfilter_for_fherr; + u8 t22_noisethr_for_fherr; + u8 t22_freqscale_for_fherr; + u8 freq_for_fherr1[5]; + u8 freq_for_fherr2[5]; + u8 freq_for_fherr3[5]; + u8 freq_for_fherr4[5]; +}; + +struct t48_median_config_t { + bool median_on_flag; + bool mferr_setting; + u8 mferr_count; + u8 t46_actvsyncsperx_for_mferr; + u8 t48_mfinvlddiffthr_for_mferr; + u8 t48_mferrorthr_for_mferr; + u8 t48_thr_for_mferr; + u8 t48_movfilter_for_mferr; +}; +struct object_t { + u8 object_type; + u16 i2c_address; + u8 size; + u8 instances; + u8 num_report_ids; +} __packed; + +struct finger_info { + s16 x; + s16 y; + s16 z; + u16 w; + int16_t component; +}; +struct mxt224_callbacks { + void (*inform_charger)(struct mxt224_callbacks *, int mode); +}; + +struct mxt224_platform_data { + int max_finger_touches; + const u8 **config; + const u8 **config_e; + const u8 *t48_config_batt_e; + const u8 *t48_config_chrg_e; + int gpio_read_done; + int min_x; + int max_x; + int min_y; + int max_y; + int min_z; + int max_z; + int min_w; + int max_w; + u8 atchcalst; + u8 atchcalsthr; + u8 tchthr_batt; + u8 tchthr_charging; + u8 tchthr_batt_init; + u8 noisethr_batt; + u8 noisethr_charging; + u8 movfilter_batt; + u8 movfilter_charging; + u8 atchcalst_e; + u8 atchcalsthr_e; + u8 tchthr_batt_e; + u8 tchthr_charging_e; + u8 calcfg_batt_e; + u8 calcfg_charging_e; + u8 atchfrccalthr_e; + u8 atchfrccalratio_e; + u8 chrgtime_batt_e; + u8 chrgtime_charging_e; + u8 blen_batt_e; + u8 blen_charging_e; + u8 movfilter_batt_e; + u8 movfilter_charging_e; + u8 actvsyncsperx_e; + u8 nexttchdi_e; + void (*power_on) (void); + void (*power_off) (void); + void (*register_cb)(struct mxt224_callbacks *); + void (*read_ta_status) (void *); +}; + +struct mxt224_data { + struct i2c_client *client; + struct input_dev *input_dev; + struct mxt224_platform_data *pdata; +#ifdef CONFIG_HAS_EARLYSUSPEND + struct early_suspend early_suspend; +#endif + u8 family_id; + u32 finger_mask; + struct object_t *objects; + u8 objects_len; + u8 tsp_version; + const u8 *power_cfg; + const u8 *noise_suppression_cfg_ta; + const u8 *noise_suppression_cfg; + u8 finger_type; + u16 msg_proc; + u16 cmd_proc; + u16 msg_object_size; + u32 x_dropbits:2; + u32 y_dropbits:2; + int num_fingers; + struct finger_info fingers[MXT224_MAX_MT_FINGERS]; + struct t22_freq_table_config_t freq_table; + struct t48_median_config_t noise_median; + + int mxt224_enabled; + bool g_debug_switch; + u8 mxt_version_disp; + u8 tsp_version_disp; + int optiacl_gain; + int firm_status_data; + bool lock_status; + int touch_state; /* 1:release, 2:press, 3:others */ + int palm_chk_flag; + bool ta_status_pre; + int errcondition; + int threshold; + int threshold_e; + bool boot_or_resume; /*1: boot_or_resume,0: others */ + bool sleep_mode_flag; + char *tsp_config_version; + bool median_err_flag; + int touch_is_pressed_arr[MAX_USING_FINGER_NUM]; + struct completion init_done; + struct mutex lock; + bool enabled; +#ifdef DRIVER_FILTER + bool gbfilter; +#endif + unsigned int qt_time_point_freq; + unsigned int qt_time_diff_freq; + unsigned int qt_time_point; + unsigned int qt_time_diff; + unsigned int qt_timer_state; + unsigned int good_check_flag; + unsigned int not_yet_count; + u8 cal_check_flag; + u8 doing_calibration_flag; + unsigned char test_node[5]; + uint16_t qt_refrence_node[209]; + uint16_t qt_delta_node[209]; + int index_delta; + int index_reference; + struct mxt224_callbacks callbacks; +}; + +enum { + QT_PAGE_UP = 0x01, + QT_PAGE_DOWN = 0x02, + QT_DELTA_MODE = 0x10, + QT_REFERENCE_MODE = 0x11, + QT_CTE_MODE = 0x31 +}; + +enum { + ERR_RTN_CONDITION_T9, + ERR_RTN_CONDITION_T48, + ERR_RTN_CONDITION_IDLE +}; + +#define ERR_RTN_CONDITION_MAX (ERR_RTN_CONDITION_IDLE + 1) + + +extern struct class *sec_class; +#endif /* __MXT224_H__ */ + |