1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
/*
* include/linux/synaptics_i2c_rmi.h - platform data structure for f75375s sensor
*
* Copyright (C) 2008 Google, Inc.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef _LINUX_SYNAPTICS_I2C_RMI_H
#define _LINUX_SYNAPTICS_I2C_RMI_H
#ifdef CONFIG_TOUCHSCREEN_SYNAPTICS_SWEEP2WAKE
#include <linux/input.h>
#endif
#define SYNAPTICS_I2C_RMI_NAME "synaptics-rmi-ts"
#define SYNAPTICS_T1007_NAME "synaptics-t1007"
#define SYNAPTICS_T1021_NAME "synaptics-t1021"
#define SYNAPTICS_3K_NAME "synaptics-3k"
#define SYNAPTICS_3K_INCELL_NAME "synaptics-3k-incell"
#define SYNAPTICS_3200_NAME "synaptics-3200"
#define SYNAPTICS_FW_3_2_PACKRAT 1115999
#define SYNAPTICS_FW_NOCAL_PACKRAT 1293981
#define SYNAPTICS_FW_2IN1_PACKRAT 1396865
#define SYN_CONFIG_SIZE 32 * 16
#define SYN_MAX_PAGE 4
#define SYN_BL_PAGE 1
#define SYN_F01DATA_BASEADDR 0x0013
#define SYN_PROCESS_ERR -1
#define SYN_AND_REPORT_TYPE_A 0
#define SYN_AND_REPORT_TYPE_B 1
#define SYN_AND_REPORT_TYPE_HTC 2
#define TAP_DX_OUTER 0
#define TAP_DY_OUTER 1
#define TAP_TIMEOUT 2
#define TAP_DX_INTER 3
#define TAP_DY_INTER 4
#define CUS_REG_SIZE 4
#define CUS_REG_BASE 0
#define CUS_BALLISTICS_CTRL 1
#define CUS_LAND_CTRL 2
#define CUS_LIFT_CTRL 3
#define SENSOR_ID_CHECKING_EN 1 << 16
#define PSENSOR_STATUS 0x03
#define PHONE_STATUS 0x04
enum {
SYNAPTICS_FLIP_X = 1UL << 0,
SYNAPTICS_FLIP_Y = 1UL << 1,
SYNAPTICS_SWAP_XY = 1UL << 2,
SYNAPTICS_SNAP_TO_INACTIVE_EDGE = 1UL << 3,
};
enum {
FINGER_1_REPORT = 1 << 0,
FINGER_2_REPORT = 1 << 1,
};
struct synaptics_virtual_key {
int index;
int keycode;
int x_range_min;
int x_range_max;
int y_range_min;
int y_range_max;
};
struct synaptics_i2c_rmi_platform_data {
uint32_t version;
int (*power)(int on);
int (*lpm_power)(int on);
struct synaptics_virtual_key *virtual_key;
uint8_t virtual_key_num;
struct kobject *vk_obj;
struct kobj_attribute *vk2Use;
uint8_t sensitivity;
uint8_t finger_support;
uint32_t gap_area;
uint32_t key_area;
uint32_t flags;
unsigned long irqflags;
uint32_t inactive_left;
uint32_t inactive_right;
uint32_t inactive_top;
uint32_t inactive_bottom;
uint32_t snap_left_on;
uint32_t snap_left_off;
uint32_t snap_right_on;
uint32_t snap_right_off;
uint32_t snap_top_on;
uint32_t snap_top_off;
uint32_t snap_bottom_on;
uint32_t snap_bottom_off;
uint32_t fuzz_x;
uint32_t fuzz_y;
int abs_x_min;
int abs_x_max;
int abs_y_min;
int abs_y_max;
int fuzz_p;
int fuzz_w;
uint32_t display_width;
uint32_t display_height;
int8_t sensitivity_adjust;
uint32_t dup_threshold;
uint32_t margin_inactive_pixel[4];
uint16_t filter_level[4];
uint8_t reduce_report_level[5];
uint8_t noise_information;
uint8_t jumpfq_enable;
uint8_t cable_support;
uint8_t config[SYN_CONFIG_SIZE];
int gpio_irq;
int gpio_reset;
uint8_t default_config;
uint8_t report_type;
uint8_t large_obj_check;
uint16_t tw_pin_mask;
uint32_t sensor_id;
uint32_t packrat_number;
uint8_t support_htc_event;
uint8_t mfg_flag;
uint8_t customer_register[CUS_REG_SIZE];
uint8_t segmentation_bef_unlock;
uint8_t threshold_bef_unlock;
uint16_t saturation_bef_unlock;
uint8_t i2c_err_handler_en;
uint8_t energy_ratio_relaxation;
uint8_t multitouch_calibration;
uint8_t psensor_detection;
uint8_t PixelTouchThreshold_bef_unlock;
uint8_t block_touch_time_near;
uint8_t block_touch_time_far;
};
struct page_description {
uint8_t addr;
uint8_t value;
};
struct syn_finger_data {
int x;
int y;
int w;
int z;
};
struct function_t {
uint8_t function_type;
uint8_t interrupt_source;
uint16_t data_base;
uint16_t control_base;
uint16_t command_base;
uint16_t query_base;
};
enum {
QUERY_BASE,
COMMAND_BASE,
CONTROL_BASE,
DATA_BASE,
INTR_SOURCE,
FUNCTION
};
extern uint8_t touchscreen_is_on(void);
#ifdef CONFIG_TOUCHSCREEN_SYNAPTICS_SWEEP2WAKE
/* Sweep2Wake */
extern void sweep2wake_setdev(struct input_dev * input_device);
#endif
extern uint8_t touchscreen_is_on(void);
extern uint8_t getPowerKeyState(void);
#endif
|