Commit 210f8cab authored by JungHoon Hyun's avatar JungHoon Hyun Committed by Dmitry Torokhov

Input: melfas_mip4 - report palm touches

The driver had the code to differentiate between finger and palm touches,
but did not use this information when reporting contacts. Change it so that
proper "tool" type is assigned to reported contacts.
Signed-off-by: default avatarJungHoon Hyun <hyunjunghoon@melfas.com>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent cd7cd6f3
...@@ -466,7 +466,7 @@ static void mip4_report_touch(struct mip4_ts *ts, u8 *packet) ...@@ -466,7 +466,7 @@ static void mip4_report_touch(struct mip4_ts *ts, u8 *packet)
{ {
int id; int id;
bool __always_unused hover; bool __always_unused hover;
bool __always_unused palm; bool palm;
bool state; bool state;
u16 x, y; u16 x, y;
u8 __always_unused pressure_stage = 0; u8 __always_unused pressure_stage = 0;
...@@ -522,21 +522,21 @@ static void mip4_report_touch(struct mip4_ts *ts, u8 *packet) ...@@ -522,21 +522,21 @@ static void mip4_report_touch(struct mip4_ts *ts, u8 *packet)
if (unlikely(id < 0 || id >= MIP4_MAX_FINGERS)) { if (unlikely(id < 0 || id >= MIP4_MAX_FINGERS)) {
dev_err(&ts->client->dev, "Screen - invalid slot ID: %d\n", id); dev_err(&ts->client->dev, "Screen - invalid slot ID: %d\n", id);
} else if (state) { goto out;
/* Press or Move event */ }
input_mt_slot(ts->input, id);
input_mt_report_slot_state(ts->input, MT_TOOL_FINGER, true); input_mt_slot(ts->input, id);
if (input_mt_report_slot_state(ts->input,
palm ? MT_TOOL_PALM : MT_TOOL_FINGER,
state)) {
input_report_abs(ts->input, ABS_MT_POSITION_X, x); input_report_abs(ts->input, ABS_MT_POSITION_X, x);
input_report_abs(ts->input, ABS_MT_POSITION_Y, y); input_report_abs(ts->input, ABS_MT_POSITION_Y, y);
input_report_abs(ts->input, ABS_MT_PRESSURE, pressure); input_report_abs(ts->input, ABS_MT_PRESSURE, pressure);
input_report_abs(ts->input, ABS_MT_TOUCH_MAJOR, touch_major); input_report_abs(ts->input, ABS_MT_TOUCH_MAJOR, touch_major);
input_report_abs(ts->input, ABS_MT_TOUCH_MINOR, touch_minor); input_report_abs(ts->input, ABS_MT_TOUCH_MINOR, touch_minor);
} else {
/* Release event */
input_mt_slot(ts->input, id);
input_mt_report_slot_inactive(ts->input);
} }
out:
input_mt_sync_frame(ts->input); input_mt_sync_frame(ts->input);
} }
...@@ -1483,6 +1483,7 @@ static int mip4_probe(struct i2c_client *client) ...@@ -1483,6 +1483,7 @@ static int mip4_probe(struct i2c_client *client)
input->keycodesize = sizeof(*ts->key_code); input->keycodesize = sizeof(*ts->key_code);
input->keycodemax = ts->key_num; input->keycodemax = ts->key_num;
input_set_abs_params(input, ABS_MT_TOOL_TYPE, 0, MT_TOOL_PALM, 0, 0);
input_set_abs_params(input, ABS_MT_POSITION_X, 0, ts->max_x, 0, 0); input_set_abs_params(input, ABS_MT_POSITION_X, 0, ts->max_x, 0, 0);
input_set_abs_params(input, ABS_MT_POSITION_Y, 0, ts->max_y, 0, 0); input_set_abs_params(input, ABS_MT_POSITION_Y, 0, ts->max_y, 0, 0);
input_set_abs_params(input, ABS_MT_PRESSURE, input_set_abs_params(input, ABS_MT_PRESSURE,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment