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,