diff options
Diffstat (limited to 'include/linux/synaptics_s7301.h')
-rw-r--r-- | include/linux/synaptics_s7301.h | 99 |
1 files changed, 97 insertions, 2 deletions
diff --git a/include/linux/synaptics_s7301.h b/include/linux/synaptics_s7301.h index 09284a0..5c0b471 100644 --- a/include/linux/synaptics_s7301.h +++ b/include/linux/synaptics_s7301.h @@ -50,10 +50,57 @@ #define FUNC_ADDR_SIZE 6 #define FUNC_ADDR_LAST 0xdd #define FUNC_ADDR_FIRST 0xe9 -#define PAGE_MAX 0X100 +#define PAGE_MAX 0X400 +#define NEXT_PAGE 0X100 #define MAX_FUNC 0x55 #define CHARGER_CONNECT_BIT (0x1 << 5) +#define MIN_ANGLE -90 +#define MAX_ANGLE 90 + +#define BUTTON_0_MASK (1 << 0) +#define BUTTON_1_MASK (1 << 1) +#define BUTTON_2_MASK (1 << 2) +#define BUTTON_3_MASK (1 << 3) +#define BUTTON_4_MASK (1 << 4) +#define BUTTON_5_MASK (1 << 5) +#define BUTTON_6_MASK (1 << 6) +#define BUTTON_7_MASK (1 << 7) + +/* button threshhold limit */ +#define BUTTON_THRESHOLD_LIMIT 1000 +#define BUTTON_THRESHOLD_MIN 0 + +/* fixed threshold */ +#define BUTTON2_0_THRESHOLD 78 +#define BUTTON2_1_THRESHOLD 50 + +#if defined(CONFIG_KONA_01_BD) +#define BUTTON5_0_THRESHOLD 250 +#define BUTTON5_1_THRESHOLD 70 +#define BUTTON5_2_THRESHOLD 220 +#define BUTTON5_3_THRESHOLD 70 +#define BUTTON5_4_THRESHOLD 250 +#else +#define BUTTON5_0_THRESHOLD 256 +#define BUTTON5_1_THRESHOLD 65 +#define BUTTON5_2_THRESHOLD 400 +#define BUTTON5_3_THRESHOLD 70 +#define BUTTON5_4_THRESHOLD 300 +#endif + +enum BUTTON{ + BUTTON1 = 0, + BUTTON2, + BUTTON3, + BUTTON4, + BUTTON5, + BUTTON6, + BUTTON7, + BUTTON8, + BUTTON_MAX, +}; + enum MT_STATUS { MT_STATUS_INACTIVE = 0, MT_STATUS_PRESS, @@ -69,6 +116,9 @@ struct finger_info { int w_max; int z; int status; + int angle; + int width; + }; struct finger_data { @@ -123,17 +173,49 @@ struct synaptics_ts_fw_block { u32 config_imagesize; }; +#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_S7301_KEYS) +struct synaptics_button_map { + u8 nbuttons; + u8 *map; +}; + +struct synaptics_extend_button_map { + u8 nbuttons; + u8 *map; + u8 button_mask; +}; + +#endif + struct synaptics_platform_data { int gpio_attn; int max_x; int max_y; int max_pressure; int max_width; + bool swap_xy; + bool invert_x; + bool invert_y; +#ifdef CONFIG_SEC_TOUCHSCREEN_SURFACE_TOUCH + u8 palm_threshold; +#endif u16 x_line; u16 y_line; int (*set_power)(bool); void (*hw_reset)(void); void (*register_cb)(struct charger_callbacks *); +#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_S7301_KEYLED) + void (*led_control)(int); + bool led_event; +#endif + +#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_S7301_KEYS) + struct synaptics_button_map *button_map; + struct synaptics_extend_button_map *extend_button_map; + bool support_extend_button; + bool enable_extend_button_event; + int button_pressure[BUTTON_MAX]; +#endif }; struct synaptics_drv_data { @@ -147,11 +229,21 @@ struct synaptics_drv_data { struct work_struct fw_update_work; struct function_info f01; struct function_info f11; +#if defined (CONFIG_TOUCHSCREEN_SYNAPTICS_S7301_KEYS) + struct function_info f1a; +#endif struct function_info f34; struct function_info f54; +#ifdef CONFIG_SEC_TOUCHSCREEN_SURFACE_TOUCH + struct function_info f51; +#endif struct delayed_work init_dwork; struct delayed_work resume_dwork; struct delayed_work noti_dwork; +#if defined (CONFIG_TOUCHSCREEN_SYNAPTICS_S7301_WORKAROUND) + struct delayed_work reset_dwork; + bool firmware_update_check; +#endif struct charger_callbacks callbacks; struct finger_info finger[MAX_MT_CNT]; #if CONFIG_HAS_EARLYSUSPEND @@ -174,12 +266,15 @@ struct synaptics_drv_data { u8 cmd_status; u8 cmd_report_type; u8 cmd_result[MAX_CMD_SIZE]; - u8 firm_version[4]; + u8 firm_version[5]; u8 firm_config[13]; u8 *cmd_temp; u8 *references; u8 *tx_to_tx; u8 *tx_to_gnd; +#if defined(CONFIG_SEC_TOUCHSCREEN_SURFACE_TOUCH) + u8 palm_flag; +#endif u16 x_line; u16 y_line; u16 refer_max; |