input: cyttsp-i2c: Verify checksum before firmware upgrade

Signed-off-by: Mohan Pallaka <mpallaka@codeaurora.org>
diff --git a/drivers/input/touchscreen/cyttsp-i2c.c b/drivers/input/touchscreen/cyttsp-i2c.c
index 8a3ecef..d26a86f 100644
--- a/drivers/input/touchscreen/cyttsp-i2c.c
+++ b/drivers/input/touchscreen/cyttsp-i2c.c
@@ -267,6 +267,7 @@
 
 #define BL_REC1_ADDR          0x0780
 #define BL_REC2_ADDR          0x07c0
+#define BL_CHECKSUM_MASK      0x01
 
 #define ID_INFO_REC           ":40078000"
 #define ID_INFO_OFFSET_IN_REC 77
@@ -702,6 +703,9 @@
 
 	if (force)
 		fw_upgrade = 1;
+	else if (!(g_bl_data.bl_status & BL_CHECKSUM_MASK) &&
+			(appid_lo == ts->platform_data->correct_fw_ver))
+		fw_upgrade = 1;
 	else
 		if ((appid_hi == g_bl_data.appid_hi) &&
 			(appid_lo == g_bl_data.appid_lo)) {
@@ -2674,7 +2678,8 @@
 	}
 	if (ts->platform_data->correct_fw_ver) {
 		if (g_bl_data.appid_lo != ts->platform_data->correct_fw_ver)
-			printk(KERN_INFO "Please update touchscreen firmware\n");
+			pr_warn("%s: Invalid firmware version detected;"
+				" Please update.\n", __func__);
 	}
 
 	retval = device_create_file(&client->dev,