mako: touch: disable ghost finger correction

The ghost function sets FORCE_FAST_RELAXATION and
FORCE_UPDATE registers, which cause touch abnormal function
after resume.

Also code clean up for register map initialization.

Change-Id: Ib442d4d7a2e995048fba902fe852a3851fdbf418
diff --git a/drivers/input/touchscreen/touch_synaptics.c b/drivers/input/touchscreen/touch_synaptics.c
index 040d727..4a91d64 100644
--- a/drivers/input/touchscreen/touch_synaptics.c
+++ b/drivers/input/touchscreen/touch_synaptics.c
@@ -375,9 +375,7 @@
 	ts->finger_dsc.id = 0;
 	ts->button_dsc.id = 0;
 	ts->flash_dsc.id  = 0;
-#if defined(CONFIG_TOUCH_REG_MAP_TM2000) || defined(CONFIG_TOUCH_REG_MAP_TM2372)
 	ts->analog_dsc.id = 0;
-#endif
 
 	for (u_address = DESCRIPTION_TABLE_START; u_address > 10;
 			u_address -= sizeof(struct ts_function_descriptor)) {
@@ -399,6 +397,7 @@
 			break;
 		case FLASH_MEMORY_MANAGEMENT:
 			ts->flash_dsc = buffer;
+			break;
 		}
 	}
 
@@ -408,18 +407,13 @@
 		return -EIO;
 	}
 
-	u_address = DESCRIPTION_TABLE_START;
-
-	if (unlikely(touch_i2c_read(client, u_address, sizeof(buffer),
-					(unsigned char *)&buffer) < 0)) {
+	if (unlikely(touch_i2c_read(client, ANALOG_TABLE_START, sizeof(buffer), (unsigned char *)&buffer) < 0)) {
 		TOUCH_ERR_MSG("RMI4 Function Descriptor read fail\n");
 		return -EIO;
 	}
 
-	switch (buffer.id) {
-	case ANALOG_CONTROL:
+	if (buffer.id == ANALOG_CONTROL) {
 		ts->analog_dsc = buffer;
-		break;
 	}
 
 	if (unlikely(touch_i2c_write_byte(client, PAGE_SELECT_REG, 0x02) < 0)) {
@@ -427,19 +421,13 @@
 		return -EIO;
 	}
 
-	u_address -= sizeof(struct ts_function_descriptor);
-
-	if (unlikely(touch_i2c_read(ts->client, u_address, sizeof(buffer),
-						(unsigned char *)&buffer))) {
+	if (unlikely(touch_i2c_read(ts->client, BUTTON_TABLE_START, sizeof(buffer), (unsigned char *)&buffer))) {
 		TOUCH_ERR_MSG("Button ts_function_descriptor read fail\n");
 		return -EIO;
 	}
 
-	switch (buffer.id) {
-	case CAPACITIVE_BUTTON_SENSORS:
+	if (buffer.id == CAPACITIVE_BUTTON_SENSORS)
 		ts->button_dsc = buffer;
-		break;
-	}
 
 	if (unlikely(touch_i2c_write_byte(client, PAGE_SELECT_REG, 0x00) < 0)) {
 		TOUCH_ERR_MSG("PAGE_SELECT_REG write fail\n");
@@ -911,6 +899,9 @@
 	case IC_CTRL_BASELINE:
 		switch (value) {
 		case BASELINE_OPEN:
+			if (!ts->analog_dsc.id) /* If not supported, ignore */
+				break;
+
 #if defined(CONFIG_TOUCH_REG_MAP_TM2000) || defined(CONFIG_TOUCH_REG_MAP_TM2372)
 			if (unlikely(touch_i2c_write_byte(client,
 						PAGE_SELECT_REG, 0x01) < 0)) {
@@ -952,6 +943,9 @@
 #endif
 			break;
 		case BASELINE_FIX:
+			if (!ts->analog_dsc.id) /* If not supported, ignore */
+				break;
+
 #if defined(CONFIG_TOUCH_REG_MAP_TM2000) || defined(CONFIG_TOUCH_REG_MAP_TM2372)
 			if (unlikely(touch_i2c_write_byte(client,
 						PAGE_SELECT_REG, 0x01) < 0)) {