input: touchscreen: max1187x: Import max1187x driver for T6

* HTC package version: t6ul-3.4.10-g0534bc3

Change-Id: I931d5484a8c8d05ef2ac329983e8318028f2d6fe
diff --git a/include/linux/max1187x.h b/include/linux/max1187x.h
new file mode 100755
index 0000000..e292347
--- /dev/null
+++ b/include/linux/max1187x.h
@@ -0,0 +1,176 @@
+/* include/linux/max1187x.h
+ *
+ * Copyright (c)2012 Maxim Integrated Products, Inc.
+ *
+ * Driver Version: 3.0.7
+ * Release Date: Feb 22, 2013
+ *
+ * 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 __MAX1187X_H
+#define __MAX1187X_H
+
+#define MAX1187X_NAME   "max1187x"
+#define MAX1187X_TOUCH  MAX1187X_NAME "_touchscreen_0"
+#define MAX1187X_KEY    MAX1187X_NAME "_key_0"
+#define MAX1187X_LOG_NAME	"[TP] "
+
+#define MAX_WORDS_COMMAND  9  
+#define MAX_WORDS_REPORT   245  
+#define MAX_WORDS_COMMAND_ALL  (15 * MAX_WORDS_COMMAND)  
+
+#define MAX1187X_NUM_FW_MAPPINGS_MAX    5
+#define MAX1187X_TOUCH_COUNT_MAX        10
+#define MAX1187X_TOUCH_REPORT_RAW       0x0800
+#define MAX1187X_TOUCH_REPORT_BASIC     0x0801
+#define MAX1187X_TOUCH_REPORT_EXTENDED  0x0802
+#define MAX_REPORT_READERS		5
+#define DEBUG_STRING_LEN_MAX 60
+#define MAX_FW_RETRIES 5
+
+#define MAX1187X_PI 205887 
+
+#define MAX1187X_TOUCH_CONFIG_MAX		65
+#define MAX1187X_CALIB_TABLE_MAX		74
+#define MAX1187X_PRIVATE_CONFIG_MAX		34
+#define MAX1187X_LOOKUP_TABLE_MAX		8
+#define MAX1187X_IMAGE_FACTOR_MAX		460
+
+#define MAX1187X_NO_BASELINE   0
+#define MAX1187X_FIX_BASELINE  1
+#define MAX1187X_AUTO_BASELINE 2
+
+struct max1187x_touch_report_header {
+	u16 header;
+	u16 report_id;
+	u16 report_size;
+	u16 touch_count:4;
+	u16 touch_status:4;
+	u16 reserved0:5;
+	u16 cycles:1;
+	u16 reserved1:2;
+	u16 button0:1;
+	u16 button1:1;
+	u16 button2:1;
+	u16 button3:1;
+	u16 reserved2:12;
+	u16 framecounter;
+};
+
+struct max1187x_touch_report_basic {
+	u16 finger_id:4;
+	u16 reserved0:4;
+	u16 finger_status:4;
+	u16 reserved1:4;
+	u16 x:12;
+	u16 reserved2:4;
+	u16 y:12;
+	u16 reserved3:4;
+	u16 z;
+};
+
+struct max1187x_touch_report_extended {
+	u16 finger_id:4;
+	u16 reserved0:4;
+	u16 finger_status:4;
+	u16 reserved1:4;
+	u16 x:12;
+	u16 reserved2:4;
+	u16 y:12;
+	u16 reserved3:4;
+	u16 z;
+	s16 xspeed;
+	s16 yspeed;
+	s8 xpixel;
+	s8 ypixel;
+	u16 area;
+	u16 xmin;
+	u16 xmax;
+	u16 ymin;
+	u16 ymax;
+};
+
+struct max1187x_board_config {
+	u16                         config_id;
+	u16                         chip_id;
+	u8                          major_ver;
+	u8                          minor_ver;
+	u8                          protocol_ver;
+	u16                         vendor_pin;
+	u16                         config_touch[MAX1187X_TOUCH_CONFIG_MAX];
+	u16                         config_cal[MAX1187X_CALIB_TABLE_MAX];
+	u16                         config_private[MAX1187X_PRIVATE_CONFIG_MAX];
+	u16                         config_lin_x[MAX1187X_LOOKUP_TABLE_MAX];
+	u16                         config_lin_y[MAX1187X_LOOKUP_TABLE_MAX];
+	u16                         config_ifactor[MAX1187X_IMAGE_FACTOR_MAX];
+};
+
+struct max1187x_virtual_key {
+	int index;
+	int keycode;
+	int x_position;
+	int y_position;
+};
+
+struct max1187x_fw_mapping {
+	u32				chip_id;
+	char			*filename;
+	u32				filesize;
+	u32				filecrc16;
+	u32				file_codesize;
+};
+
+struct max1187x_pdata {
+	struct max1187x_board_config *fw_config;
+	u32			gpio_tirq;
+	u32			gpio_reset;
+	u32			num_fw_mappings;
+	struct max1187x_fw_mapping  fw_mapping[MAX1187X_NUM_FW_MAPPINGS_MAX];
+	u32			defaults_allow;
+	u32			default_config_id;
+	u32			default_chip_id;
+	u32			i2c_words;
+	#define MAX1187X_REVERSE_X  0x0001
+	#define MAX1187X_REVERSE_Y  0x0002
+	#define MAX1187X_SWAP_XY    0x0004
+	u32			coordinate_settings;
+	u32			panel_min_x;
+	u32			panel_max_x;
+	u32			panel_min_y;
+	u32			panel_max_y;
+	u32			lcd_x;
+	u32			lcd_y;
+	u32			num_rows;
+	u32			num_cols;
+	#define MAX1187X_PROTOCOL_A        0
+	#define MAX1187X_PROTOCOL_B        1
+	#define MAX1187X_PROTOCOL_CUSTOM1  2
+	u16			input_protocol;
+	#define MAX1187X_UPDATE_NONE       0
+	#define MAX1187X_UPDATE_BIN        1
+	#define MAX1187X_UPDATE_CONFIG     2
+	#define MAX1187X_UPDATE_BOTH       3
+	u8			update_feature;
+	u8			support_htc_event;
+	u16			tw_mask;
+	u32			button_code0;
+	u32			button_code1;
+	u32			button_code2;
+	u32			button_code3;
+	#define MAX1187X_REPORT_MODE_BASIC	1
+	#define MAX1187X_REPORT_MODE_EXTEND	2
+	u8			report_mode;
+	struct max1187x_virtual_key *button_data;
+};
+
+#endif 
+