mako: touch: add sys node for charger status update

Will be used to enable noise mitigation bit in firmware
to reduce noise when TA/USA/Wireless charger is connected.

Change-Id: Ia4174271758ca2dbd013b80ddcabffea2e2cae82
Signed-off-by: Iliyan Malchev <malchev@google.com>
diff --git a/drivers/input/touchscreen/touch_synaptics.c b/drivers/input/touchscreen/touch_synaptics.c
index b27ac1b..e7a2a22 100644
--- a/drivers/input/touchscreen/touch_synaptics.c
+++ b/drivers/input/touchscreen/touch_synaptics.c
@@ -154,6 +154,8 @@
 #define FINGER_STATE_PRESENT_NOVALID    2
 #define FINGER_STATE_REVSERVED          3
 
+#define CHARGER_CONNECTED               0x20
+
 int synaptics_ts_get_data(struct i2c_client *client, struct t_data* data,
 					struct b_data* button, u8* total_num)
 {
@@ -554,7 +556,8 @@
 			return -EIO;
 
 	if (unlikely(touch_i2c_write_byte(client, DEVICE_CONTROL_REG,
-		DEVICE_CONTROL_NOSLEEP | DEVICE_CONTROL_CONFIGURED) < 0)) {
+		DEVICE_CONTROL_NOSLEEP | DEVICE_CONTROL_CONFIGURED |
+		(lg_ts->charger_type ? CHARGER_CONNECTED : 0)) < 0)) {
 		TOUCH_ERR_MSG("DEVICE_CONTROL_REG write fail\n");
 		return -EIO;
 	}
@@ -670,6 +673,8 @@
 {
 	struct synaptics_ts_data* ts =
 			(struct synaptics_ts_data*)get_touch_handle(client);
+	struct lge_touch_data *lg_ts =
+			(struct lge_touch_data *) i2c_get_clientdata(client);
 
 	if (touch_debug_mask & DEBUG_TRACE)
 		TOUCH_DEBUG_MSG("\n");
@@ -699,16 +704,18 @@
 		break;
 	case POWER_SLEEP:
 		if (unlikely(touch_i2c_write_byte(client, DEVICE_CONTROL_REG,
-					DEVICE_CONTROL_SLEEP |
-					DEVICE_CONTROL_CONFIGURED) < 0)) {
+				DEVICE_CONTROL_SLEEP |
+				(lg_ts->charger_type ? CHARGER_CONNECTED : 0) |
+				DEVICE_CONTROL_CONFIGURED) < 0)) {
 			TOUCH_ERR_MSG("DEVICE_CONTROL_REG write fail\n");
 			return -EIO;
 		}
 		break;
 	case POWER_WAKE:
 		if (unlikely(touch_i2c_write_byte(client, DEVICE_CONTROL_REG,
-					DEVICE_CONTROL_SPECIFIC |
-					DEVICE_CONTROL_CONFIGURED) < 0)) {
+				DEVICE_CONTROL_SPECIFIC |
+				(lg_ts->charger_type ? CHARGER_CONNECTED : 0) |
+				DEVICE_CONTROL_CONFIGURED) < 0)) {
 			TOUCH_ERR_MSG("DEVICE_CONTROL_REG write fail\n");
 			return -EIO;
 		}
@@ -845,6 +852,7 @@
 	struct synaptics_ts_data* ts =
 			(struct synaptics_ts_data*)get_touch_handle(client);
 	u8 buf = 0;
+	u8 new;
 
 	switch (code) {
 	case IC_CTRL_BASELINE:
@@ -1023,6 +1031,25 @@
 			return -EIO;
 		}
 		break;
+	case IC_CTRL_CHARGER:
+		if (touch_i2c_read(client, DEVICE_CONTROL_REG, 1, &buf) < 0) {
+			TOUCH_ERR_MSG("IC register read fail\n");
+			return -EIO;
+		}
+
+		new = buf & ~CHARGER_CONNECTED;
+		new |= value ? CHARGER_CONNECTED : 0;
+
+		if (new != buf) {
+			if (unlikely(touch_i2c_write_byte(client,
+					DEVICE_CONTROL_REG, new) < 0)) {
+				TOUCH_ERR_MSG("IC Reset command write fail\n");
+				return -EIO;
+			}
+			TOUCH_INFO_MSG("CHARGER = %d\n", !!value);
+		}
+
+		break;
 	default:
 		break;
 	}