aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/synaptics_s7301.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/synaptics_s7301.h')
-rw-r--r--include/linux/synaptics_s7301.h100
1 files changed, 98 insertions, 2 deletions
diff --git a/include/linux/synaptics_s7301.h b/include/linux/synaptics_s7301.h
index 09284a0..13b4c5c 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,18 +266,22 @@ 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;
u16 refer_min;
u16 rx_to_rx[42][42];
unsigned long func_bit[BITS_TO_LONGS(MAX_FUNC+1)];
+ atomic_t keypad_enable;
};
extern struct class *sec_class;