[XPERIA X8 Original Android Development] andrej456:
chip supports 2 finger, they just hid it for a phone

see the source code

https://github.com/tilal6991/Huawei...vers/input/touchscreen/synaptics_i2c_rmi_tm.c

if(board_surport_fingers(&ts->is_surport_fingers)){
SYNAPITICS_DEBUG("%s: Cannot support multi fingers!\n", __FUNCTION__);
ts->is_surport_fingers = false;

x = (buf[5] & 0x0f) | ((uint16_t)buf[3] << 4); /* x aixs */
y= ((buf[5] & 0xf0) >> 4) | ((uint16_t)buf[4] << 4); /* y aixs */
z = buf[7]; /* pressure */
wx = buf[6] & 0x0f; /* x width */
wy = (buf[6] & 0x1f) >> 4; /* y width */
finger = buf[2] & 0x0f; /* numbers of fingers */
gesture0 = buf[13]; /* code of gesture */
gesture1 = buf[14]; /* enhanced data of gesture */
SYNAPITICS_DEBUG("device_st = 0x%x irq_st = 0x%x x = %d y = %d z = %d wx = %d wy = %d finger = %d gesture0 = 0x%x gesture1 = 0x%x\n",
device_st, irq_st, x, y, z, wx, wy, finger,gesture0,gesture1);
x2 = (buf[10] & 0x0f) | ((uint16_t)buf[8] << 4);
y2 = ((buf[10] & 0xf0) >> 4) | ((uint16_t)buf[9] << 4); /* y2 aixs */
z2 = buf[12];
wx2 = buf[11] & 0x0f; /* x width */
wy2 = (buf[11] & 0xf0) >> 4; /* y width */
finger2_pressed = (finger&0x0C)>>2;

if(ts->is_surport_fingers)
{
/*
if (z) {
input_report_abs(ts->input_dev, ABS_X, x);
input_report_abs(ts->input_dev, ABS_Y, y);
}
input_report_abs(ts->input_dev, ABS_PRESSURE, z);
input_report_abs(ts->input_dev, ABS_TOOL_WIDTH, wy);
input_report_key(ts->input_dev, BTN_TOUCH, finger);
*/
if (!finger)
z = 0;
input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, z);
input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR, wy);
input_report_abs(ts->input_dev, ABS_MT_POSITION_X, x);
input_report_abs(ts->input_dev, ABS_MT_POSITION_Y, y);
input_mt_sync(ts->input_dev);
if (finger2_pressed) {
input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, z2);
input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR, wy2);
input_report_abs(ts->input_dev, ABS_MT_POSITION_X, x2);
input_report_abs(ts->input_dev, ABS_MT_POSITION_Y, y2);
input_mt_sync(ts->input_dev);
} else if (ts->reported_finger_count > 1) {
input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, 0);
input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR, 0);
input_mt_sync(ts->input_dev);
}
ts->reported_finger_count = finger;
input_sync(ts->input_dev);
//----------------------------------------------
//Remove the jump
//that causing Touchpanel not working
//----------------------------------------------
}

if (z)
{
/*
* always report the first point whether slip or click
*/
if (ts->is_first_point) {

SYNAPITICS_DEBUG("is_first_point \n");
ts->last_x = x;
ts->last_y = y;
ts->move_fast = false;
ts->is_first_point = false;
#ifdef CONFIG_HUAWEI_TOUCHSCREEN_EXTRA_KEY
if(ts->use_touch_key)
update_pen_and_key_state(ts, x, y, z);
else
#endif
{
input_report_abs(ts->input_dev, ABS_X, x);
input_report_abs(ts->input_dev, ABS_Y, y);
}
} else {
SYNAPITICS_DEBUG("else is_first_point \n");
if((abs(ts->last_x - x) > ts->x_offset) || (abs(ts->last_y - y) > ts->y_offset))
{
if(abs(ts->last_y - y) > (6*ts->max_y/LCD_Y_MAX))
{
ts->move_fast = true;
}
else
{
ts->move_fast = false;
}
ts->last_x = x;
ts->last_y = y;

SYNAPITICS_DEBUG("else update_pen_and_key_state \n");
#ifdef CONFIG_HUAWEI_TOUCHSCREEN_EXTRA_KEY
if(ts->use_touch_key)
update_pen_and_key_state(ts, x, y, z);
else
#endif
{
input_report_abs(ts->input_dev, ABS_X, x);
input_report_abs(ts->input_dev, ABS_Y, y);
}
}
}
}
else
{
/*
* The next point must be first point whether slip or click after
* this up event
*/
ts->is_first_point = true;
#ifdef CONFIG_HUAWEI_TOUCHSCREEN_EXTRA_KEY
if(ts->use_touch_key)
update_pen_and_key_state(ts, x, y, z);
#endif
}

if(!ts->use_touch_key)
{
input_report_abs(ts->input_dev, ABS_PRESSURE, z);
//input_report_abs(ts->input_dev, ABS_TOOL_WIDTH, w);
input_report_key(ts->input_dev, BTN_TOUCH, finger);
input_sync(ts->input_dev);
}
}

}

//----------------------------------------------
//Remove the jump
//that causing Touchpanel not working
//----------------------------------------------
if (ts->use_irq) {
enable_irq(ts->client->irq);
SYNAPITICS_DEBUG("enable irq\n");
}