2015-06-29 01:19:29

by duson

[permalink] [raw]
Subject: [PATCH] Input: elan_i2c - Add hover event for ST format

Signed-off by: Duson Lin <[email protected]>
---
drivers/input/mouse/elan_i2c_core.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c
index 62641f2..ce97e28 100644
--- a/drivers/input/mouse/elan_i2c_core.c
+++ b/drivers/input/mouse/elan_i2c_core.c
@@ -847,6 +847,7 @@ static void elan_report_absolute(struct elan_tp_data *data, u8 *packet)
}

input_report_key(input, BTN_LEFT, tp_info & 0x01);
+ input_report_abs(input, ABS_DISTANCE, hover_event != 0);
input_mt_report_pointer_emulation(input, true);
input_sync(input);
}
@@ -922,6 +923,7 @@ static int elan_setup_input_device(struct elan_tp_data *data)
input_abs_set_res(input, ABS_Y, data->y_res);
input_set_abs_params(input, ABS_PRESSURE, 0, ETP_MAX_PRESSURE, 0, 0);
input_set_abs_params(input, ABS_TOOL_WIDTH, 0, ETP_FINGER_WIDTH, 0, 0);
+ input_set_abs_params(input, ABS_DISTANCE, 0, 1, 0, 0);

/* And MT parameters */
input_set_abs_params(input, ABS_MT_POSITION_X, 0, data->max_x, 0, 0);




2015-06-29 19:45:09

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: [PATCH] Input: elan_i2c - Add hover event for ST format

Hi Duson,

On Mon, Jun 29, 2015 at 09:19:09AM +0800, duson wrote:
> Signed-off by: Duson Lin <[email protected]>
> ---
> drivers/input/mouse/elan_i2c_core.c | 2 ++

I'd rather we teach input_mt_init_slots() and
input_mt_report_pointer_emulation() do that for us.

Thanks.

> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c
> index 62641f2..ce97e28 100644
> --- a/drivers/input/mouse/elan_i2c_core.c
> +++ b/drivers/input/mouse/elan_i2c_core.c
> @@ -847,6 +847,7 @@ static void elan_report_absolute(struct elan_tp_data *data, u8 *packet)
> }
>
> input_report_key(input, BTN_LEFT, tp_info & 0x01);
> + input_report_abs(input, ABS_DISTANCE, hover_event != 0);
> input_mt_report_pointer_emulation(input, true);
> input_sync(input);
> }
> @@ -922,6 +923,7 @@ static int elan_setup_input_device(struct elan_tp_data *data)
> input_abs_set_res(input, ABS_Y, data->y_res);
> input_set_abs_params(input, ABS_PRESSURE, 0, ETP_MAX_PRESSURE, 0, 0);
> input_set_abs_params(input, ABS_TOOL_WIDTH, 0, ETP_FINGER_WIDTH, 0, 0);
> + input_set_abs_params(input, ABS_DISTANCE, 0, 1, 0, 0);
>
> /* And MT parameters */
> input_set_abs_params(input, ABS_MT_POSITION_X, 0, data->max_x, 0, 0);
>
>
>
>

--
Dmitry