Subject: Add sysfs attribute for touch event counter

1. Add sysfs attribute for touch event counter
2. Add STA_SLEEP_MODE for TS driver status checking
3. Change TS driver version to v3.0.4

Signed-off-by: Mike Hsu <mike_t_hsu@wistron.com>
Signed-off-by: Stanley Zeng <stanley.zeng@emc.com.tw>
Signed-off-by: Scott Liu <scott.liu@emc.com.tw>

---
 ektf2136_spi.c |   21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

--- linux-2.6.37/drivers/input/touchscreen/ektf2136_spi.old.c	2011-05-30 15:48:24.000000000 +0800
+++ linux-2.6.37/drivers/input/touchscreen/ektf2136_spi.c	2011-05-30 16:12:12.000000000 +0800
@@ -30,11 +30,11 @@
 #include <linux/pm_runtime.h>
 
 #define DRV_NAME	"ektf2136_spi"
-#define DRIVER_VERSION	"v3.0.3"
+#define DRIVER_VERSION	"v3.0.4"
 
 #define DRV_MA_VER 3
 #define DRV_MI_VER 0
-#define DRV_SUB_MI_VER 3
+#define DRV_SUB_MI_VER 4
 
 static const char ELAN_TS_NAME[]	= "ektf2136_spi";
 
@@ -46,6 +46,7 @@
 #define STA_ERR_HELLO_PKT   0x00000010
 #define STA_USE_IRQ         0x00000020
 #define STA_USE_SR          0x00000040
+#define STA_SLEEP_MODE      0x00000080
 
 /* Firmware protocol status flag */
 #define PRO_SPI_WRT_CMD_SYNC	0x00000001
@@ -259,6 +260,14 @@
 	return sprintf(buf, "%ld %ld\n", ed->packet_received, ed->packet_fail);
 }
 
+static ssize_t show_adapter_touch_event_num(struct device *dev,
+				struct device_attribute *attr, char *buf)
+{
+	struct spi_device *spi = to_spi_device(dev);
+	struct elan_data *ed = spi_get_drvdata(spi);
+	return sprintf(buf, "%ld %ld\n", ed->touched_sync, ed->no_touched_sync);
+}
+
 static ssize_t show_power_state(struct device *dev,
 				struct device_attribute *attr, char *buf)
 {
@@ -306,6 +315,7 @@
 static DEVICE_ATTR(drv_status, S_IRUGO, show_adapter_status, NULL);
 static DEVICE_ATTR(ts_irq_num, S_IRUGO, show_adapter_irq_num, NULL);
 static DEVICE_ATTR(ts_packet, S_IRUGO, show_adapter_pkt_rvd, NULL);
+static DEVICE_ATTR(ts_evt_num, S_IRUGO, show_adapter_touch_event_num, NULL);
 static DEVICE_ATTR(power_state, S_IRUGO|S_IWUGO, show_power_state,
 							store_power_state);
 
@@ -319,6 +329,7 @@
 	&dev_attr_drv_status.attr,
 	&dev_attr_ts_irq_num.attr,
 	&dev_attr_ts_packet.attr,
+	&dev_attr_ts_evt_num.attr,
 	&dev_attr_power_state.attr,
 	NULL
 };
@@ -1834,6 +1845,9 @@
 	ed->power_state = 0;
 	mutex_unlock(&ed->sysfs_mutex);
 	msleep(100);
+
+	ed->status |= STA_SLEEP_MODE;
+
 	return 0;
 }
 
@@ -1857,6 +1871,9 @@
 	ed->power_state = 1;
 	mutex_unlock(&ed->sysfs_mutex);
 	msleep(100);
+
+	ed->status &= ~STA_SLEEP_MODE;
+
 	return 0;
 }
 
