input: cy8c_cs: Add Cypress CY8C20x34 touch key support

HTC kernel version: villeu-jb-crc-3.4.10-ae8b65e

Change-Id: Iec720c415be25346c84969d7d4cd11ae02266724
diff --git a/include/linux/input.h b/include/linux/input.h
index d4cdb02..3448daf 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -803,6 +803,9 @@
 
 #define ABS_MISC		0x28
 
+#define ABS_MT_POSITION		0x2a
+#define ABS_MT_AMPLITUDE	0x2b
+
 #define ABS_MT_SLOT		0x2f	/* MT slot being modified */
 #define ABS_MT_TOUCH_MAJOR	0x30	/* Major axis of touching ellipse */
 #define ABS_MT_TOUCH_MINOR	0x31	/* Minor axis (omit if circular) */
diff --git a/include/linux/input/cy8c_cs.h b/include/linux/input/cy8c_cs.h
new file mode 100644
index 0000000..8a4558b
--- /dev/null
+++ b/include/linux/input/cy8c_cs.h
@@ -0,0 +1,82 @@
+#ifndef CY8C_CS_I2C_H
+#define CY8C_CS_I2C_H
+
+
+#include <linux/types.h>
+
+#define CYPRESS_CS_NAME 	"CY8C20224"
+#define CYPRESS_SS_NAME 	"CY8C21x34B"
+
+#if defined(CONFIG_TOUCH_KEY_FILTER)
+#include <linux/notifier.h>
+#endif
+
+#define CS_STATUS		(uint8_t) 0x00
+
+#define CS_FW_VERSION		(uint8_t) 0x01
+#define CS_FW_CONFIG		(uint8_t) 0xAA		
+
+#define CS_IDAC_BTN_BASE	(uint8_t) 0x02
+#define CS_IDAC_BTN_PAD1	(uint8_t) 0x02
+#define CS_IDAC_BTN_PAD2        (uint8_t) 0x03
+#define CS_IDAC_BTN_PAD3        (uint8_t) 0x04
+#define CS_IDAC_BTN_PAD4        (uint8_t) 0x05
+
+#define CS_MODE			(uint8_t) 0x06
+#define CS_DTIME		(uint8_t) 0x07
+#define CS_SLEEPTIME		(uint8_t) 0x08
+#define CS_FW_CHIPID		(uint8_t) 0x0A		
+#define CS_FW_KEYCFG		(uint8_t) 0x0B		
+
+#define CS_SELECT		(uint8_t) 0x0C
+#define CS_BL_HB		(uint8_t) 0x0D
+#define CS_BL_LB		(uint8_t) 0x0E
+#define CS_RC_HB		(uint8_t) 0x0F
+#define	CS_RC_LB		(uint8_t) 0x10
+#define CS_DF_HB		(uint8_t) 0x11
+#define CS_DF_LB		(uint8_t) 0x12
+#define CS_INT_STATUS		(uint8_t) 0x13
+
+
+#define CS_CMD_BASELINE		(0x55)
+#define CS_CMD_DSLEEP		(0x02)
+#define CS_CMD_BTN1		(0xA0)
+#define CS_CMD_BTN2		(0xA1)
+#define CS_CMD_BTN3		(0xA2)
+#define CS_CMD_BTN4		(0xA3)
+
+#define CS_CHIPID		(0x36)
+#define CS_KEY_4		(0x04)
+#define CS_KEY_3		(0x03)
+
+#define CS_FUNC_PRINTRAW	(0x01)
+
+#define ENABLE_CAP_ONLY_3KEY   1        
+
+struct infor {
+	uint8_t  config;
+	uint16_t chipid;
+	uint16_t version;
+};
+
+struct cy8c_i2c_cs_platform_data {
+	struct 	infor id;
+	uint16_t gpio_rst;
+	uint16_t gpio_irq;
+	int 	(*power)(int on);
+	int 	(*reset)(void);
+	int	keycode[4];
+	void 	(*gpio_init)(void);
+	int 	func_support;
+	int     prj_info;
+};
+
+
+#if defined(CONFIG_TOUCH_KEY_FILTER)
+extern struct blocking_notifier_head touchkey_notifier_list;
+
+extern int register_notifier_by_touchkey(struct notifier_block *nb);
+extern int unregister_notifier_by_touchkey(struct notifier_block *nb);
+#endif
+
+#endif