[HTC Sensation] faux123:
It is a simple fix... not a big deal. I practically said the fix in my open beta log :D Just do a bit of code reading == done ;)

I am being nice guy today... I hope you will reciprocate ;)

Multi-touch kernel patch below!

From 5b2bca9dd6b1a9387436baf28fbd60dd26c09e2a Mon Sep 17 00:00:00 2001
From: faux123 <reioux@gmail.com>
Date: Thu, 22 Mar 2012 07:52:03 -0700
Subject: [PATCH] input/touchscreen: fix same finger filtering (multi-touch
issue)

---
drivers/input/touchscreen/cy8c_tma_ts.c | 28 ++++++++++++++--------------
1 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/drivers/input/touchscreen/cy8c_tma_ts.c b/drivers/input/touchscreen/cy8c_tma_ts.c
index 68412a4..687cfef 100644
--- a/drivers/input/touchscreen/cy8c_tma_ts.c
+++ b/drivers/input/touchscreen/cy8c_tma_ts.c
@@ -828,9 +828,9 @@ static irqreturn_t cy8c_ts_irq_thread(int irq, void *ptr)
for (loop_i = 0; loop_i < report; loop_i++) {
if (!(ts->grip_suppression & BIT(loop_i))) {
if (ts->flag_htc_event == 0) {
-	if (!(finger_data[loop_i][2] == ts->sameFilter[2] &&
-	finger_data[loop_i][0] == ts->sameFilter[0] &&
-	finger_data[loop_i][1] == ts->sameFilter[1])) {
+//	if (!(finger_data[loop_i][2] == ts->sameFilter[2] &&
+//	finger_data[loop_i][0] == ts->sameFilter[0] &&
+//	finger_data[loop_i][1] == ts->sameFilter[1])) {
input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR,
finger_data[loop_i][2]);
input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR,
@@ -842,10 +842,10 @@ static irqreturn_t cy8c_ts_irq_thread(int irq, void *ptr)
input_report_abs(ts->input_dev, ABS_MT_POSITION_Y,
finger_data[loop_i][1]);
input_mt_sync(ts->input_dev);
-	ts->sameFilter[2] = finger_data[loop_i][2];
-	ts->sameFilter[0] = finger_data[loop_i][0];
-	ts->sameFilter[1] = finger_data[loop_i][1];
-	}
+//	ts->sameFilter[2] = finger_data[loop_i][2];
+//	ts->sameFilter[0] = finger_data[loop_i][0];
+//	ts->sameFilter[1] = finger_data[loop_i][1];
+//	}
} else {
input_report_abs(ts->input_dev, ABS_MT_AMPLITUDE,
finger_data[loop_i][2] << 16 | finger_data[loop_i][2]);
@@ -869,9 +869,9 @@ static irqreturn_t cy8c_ts_irq_thread(int irq, void *ptr)
for (loop_i = 0; loop_i < ts->finger_count; loop_i++) {
if (!(ts->grip_suppression & BIT(loop_i))) {
if (ts->flag_htc_event == 0) {
-	if (!(finger_data[loop_i][2] == ts->sameFilter[2] &&
-	finger_data[loop_i][0] == ts->sameFilter[0] &&
-	finger_data[loop_i][1] == ts->sameFilter[1])) {
+//	if (!(finger_data[loop_i][2] == ts->sameFilter[2] &&
+//	finger_data[loop_i][0] == ts->sameFilter[0] &&
+//	finger_data[loop_i][1] == ts->sameFilter[1])) {
input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR,
finger_data[loop_i][2]);
input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR,
@@ -883,10 +883,10 @@ static irqreturn_t cy8c_ts_irq_thread(int irq, void *ptr)
input_report_abs(ts->input_dev, ABS_MT_POSITION_Y,
finger_data[loop_i][1]);
input_mt_sync(ts->input_dev);
-	ts->sameFilter[2] = finger_data[loop_i][2];
-	ts->sameFilter[0] = finger_data[loop_i][0];
-	ts->sameFilter[1] = finger_data[loop_i][1];
-	}
+//	ts->sameFilter[2] = finger_data[loop_i][2];
+//	ts->sameFilter[0] = finger_data[loop_i][0];
+//	ts->sameFilter[1] = finger_data[loop_i][1];
+//	}
} else {
input_report_abs(ts->input_dev, ABS_MT_AMPLITUDE,
finger_data[loop_i][2] << 16 | finger_data[loop_i][2]);
--
1.7.5.4