Previously, Message Processor always generated
CRC byte at end of message.
Now(version 8), this CRC byte is generated only upon request.
To request that a checksum is generated, the MSBit
of the address of the Message Processor object is set to 1.
By default the CRC byte is not generated, reading the CRC byte
will remove new messages from IC causing lost touches.
Added control flag and message size correction for this feature.
Change-Id: I7d1a75528a59afcc95688ae1b7d6704d29ffe443
Signed-off-by: makarand.karvekar <makarand.karvekar@motorola.com>
kfree(msg);
}
-
- qtouch_set_addr(ts, ts->obj_tbl[QTM_OBJ_GEN_MSG_PROC].entry.addr);
}
/* reset the address pointer */
}
/* save the message_procesor msg_size for easy reference. */
- if (entry.type == QTM_OBJ_GEN_MSG_PROC)
- ts->msg_size = entry.size;
+ if (entry.type == QTM_OBJ_GEN_MSG_PROC) {
+ if (ts->pdata->flags & QTOUCH_USE_MSG_CRC) {
+ ts->msg_size = entry.size;
+ entry.addr |= QTOUCH_USE_MSG_CRC_MASK;
+ } else {
+ ts->msg_size = entry.size -1;
+ }
+ }
obj = create_obj(ts, &entry);
/* set the report_id range that the object is responsible for */
#define QTOUCH_USE_KEYARRAY (1 << 4)
#define QTOUCH_CFG_BACKUPNV (1 << 5)
#define QTOUCH_EEPROM_CHECKSUM (1 << 6)
+#define QTOUCH_USE_MSG_CRC (1 << 7)
+
+#define QTOUCH_USE_MSG_CRC_MASK 0x8000
struct qtouch_ts_platform_data {
uint32_t flags;