| /* | 
 |  * 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 | 
 |  | 
 | #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, | 
 | }; | 
 |  | 
 | #ifdef CONFIG_TOUCHSCREEN_SYNAPTICS_3K | 
 | struct synaptics_virtual_key { | 
 | 	int index; | 
 | 	int keycode; | 
 | 	int x_range_min; | 
 | 	int x_range_max; | 
 | 	int y_range_min; | 
 | 	int y_range_max; | 
 | }; | 
 | #endif | 
 |  | 
 | struct synaptics_i2c_rmi_platform_data { | 
 | 	uint32_t version;	/* Use this entry for panels with */ | 
 | 				/* (major << 8 | minor) version or above. */ | 
 | 				/* If non-zero another array entry follows */ | 
 | 	int (*power)(int on);	/* Only valid in first array entry */ | 
 | #ifdef CONFIG_TOUCHSCREEN_SYNAPTICS_3K | 
 | 	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; | 
 | #endif | 
 | 	uint32_t flags; | 
 | 	unsigned long irqflags; | 
 | 	uint32_t inactive_left; /* 0x10000 = screen width */ | 
 | 	uint32_t inactive_right; /* 0x10000 = screen width */ | 
 | 	uint32_t inactive_top; /* 0x10000 = screen height */ | 
 | 	uint32_t inactive_bottom; /* 0x10000 = screen height */ | 
 | 	uint32_t snap_left_on; /* 0x10000 = screen width */ | 
 | 	uint32_t snap_left_off; /* 0x10000 = screen width */ | 
 | 	uint32_t snap_right_on; /* 0x10000 = screen width */ | 
 | 	uint32_t snap_right_off; /* 0x10000 = screen width */ | 
 | 	uint32_t snap_top_on; /* 0x10000 = screen height */ | 
 | 	uint32_t snap_top_off; /* 0x10000 = screen height */ | 
 | 	uint32_t snap_bottom_on; /* 0x10000 = screen height */ | 
 | 	uint32_t snap_bottom_off; /* 0x10000 = screen height */ | 
 | 	uint32_t fuzz_x; /* 0x10000 = screen width */ | 
 | 	uint32_t fuzz_y; /* 0x10000 = screen height */ | 
 | #ifdef CONFIG_TOUCHSCREEN_SYNAPTICS_3K | 
 | 	int abs_x_min; | 
 | 	int abs_x_max; | 
 | 	int abs_y_min; | 
 | 	int abs_y_max; | 
 | #endif | 
 | 	int fuzz_p; | 
 | 	int fuzz_w; | 
 | #ifdef CONFIG_TOUCHSCREEN_SYNAPTICS_3K | 
 | 	uint32_t display_width; | 
 | 	uint32_t display_height; | 
 | #endif | 
 | 	int8_t sensitivity_adjust; | 
 | #ifdef CONFIG_TOUCHSCREEN_SYNAPTICS_3K | 
 | 	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; | 
 | #endif | 
 | }; | 
 |  | 
 | #ifdef CONFIG_TOUCHSCREEN_SYNAPTICS_3K | 
 | 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 getPowerKeyState(void); | 
 | #endif /* CONFIG_TOUCHSCREEN_SYNAPTICS_3K */ | 
 | #endif /* _LINUX_SYNAPTICS_I2C_RMI_H */ |