Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1426865 > unrolled thread

Re: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode

Started byDmitry Torokhov <dmitry.torokhov@gmail.com>
First post2016-06-20 19:50 +0200
Last post2016-06-22 14:10 +0200
Articles 5 — 3 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS  mode Dmitry Torokhov <dmitry.torokhov@gmail.com> - 2016-06-20 19:50 +0200
    RE: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode 廖崇榮 <kt.liao@emc.com.tw> - 2016-06-21 03:40 +0200
    RE: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode 廖崇榮 <kt.liao@emc.com.tw> - 2016-06-21 14:50 +0200
      Re: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode Daniel Drake <drake@endlessm.com> - 2016-06-21 17:00 +0200
        RE: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode 廖崇榮 <kt.liao@emc.com.tw> - 2016-06-22 14:10 +0200

#1426865 — Re: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode

FromDmitry Torokhov <dmitry.torokhov@gmail.com>
Date2016-06-20 19:50 +0200
SubjectRe: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode
Message-ID<rMbuF-2Oc-19@gated-at.bofh.it>
On Tue, Jun 07, 2016 at 09:34:09PM +0800, Chris Chiu wrote:
> When performing a warm reboot from a system which does not correctly
> support ELAN I2C touchpads, the touchpad will sometimes enter standard
> mouse mode, cursor then never respond to touchpad event, and making the
> driver discard the HID reports and flood dmesg with following error
> messages.
> "elan_i2c i2c-ELAN1000:00: invalid report id data (1)"
> 
> This change is from ELAN's correction. It needs 200ms delay before
> set_mode() so that the mode setting will correctly take effect.

KT, is this feasible?

> 
> Signed-off-by: Chris Chiu <chiu@endlessm.com>
> ---
>  drivers/input/mouse/elan_i2c_core.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c
> index 2f58985..95080f9 100644
> --- a/drivers/input/mouse/elan_i2c_core.c
> +++ b/drivers/input/mouse/elan_i2c_core.c
> @@ -210,18 +210,20 @@ static int __elan_initialize(struct elan_tp_data *data)
>  		return error;
>  	}
>  
> -	data->mode |= ETP_ENABLE_ABS;
> -	error = data->ops->set_mode(client, data->mode);
> +	error = data->ops->sleep_control(client, false);
>  	if (error) {
>  		dev_err(&client->dev,
> -			"failed to switch to absolute mode: %d\n", error);
> +			"failed to wake device up: %d\n", error);
>  		return error;
>  	}
>  
> -	error = data->ops->sleep_control(client, false);
> +	msleep(200);
> +
> +	data->mode |= ETP_ENABLE_ABS;
> +	error = data->ops->set_mode(client, data->mode);
>  	if (error) {
>  		dev_err(&client->dev,
> -			"failed to wake device up: %d\n", error);
> +			"failed to switch to absolute mode: %d\n", error);
>  		return error;
>  	}
>  
> -- 
> 2.1.4
> 

Thanks.

-- 
Dmitry

[toc] | [next] | [standalone]


#1427183 — RE: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode

From廖崇榮 <kt.liao@emc.com.tw>
Date2016-06-21 03:40 +0200
SubjectRE: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode
Message-ID<rMiPv-7uu-11@gated-at.bofh.it>
In reply to#1426865
Hi Dmitry,

The modification from Chris is a special case.
Because the Touchpad FW is a little different from normal one, It cause
problem in Asus's OBE test. 

That's why Elan's driver use work-around to solve the problem. It's not
tested by other touchpad.

Let me discuss with internal FW team to confirm the harmless of the patch.

B.R  KT
-----Original Message-----
From: Dmitry Torokhov [mailto:dmitry.torokhov@gmail.com] 
Sent: Tuesday, June 21, 2016 1:43 AM
To: Chris Chiu; kt.liao@emc.com.tw
Cc: Charlie Mooney; Michele Curti; Krzysztof Kozlowski; Benson Leung;
linux-input@vger.kernel.org; linux-kernel@vger.kernel.org;
linux@endlessm.com
Subject: Re: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS
mode

On Tue, Jun 07, 2016 at 09:34:09PM +0800, Chris Chiu wrote:
> When performing a warm reboot from a system which does not correctly 
> support ELAN I2C touchpads, the touchpad will sometimes enter standard 
> mouse mode, cursor then never respond to touchpad event, and making 
> the driver discard the HID reports and flood dmesg with following 
> error messages.
> "elan_i2c i2c-ELAN1000:00: invalid report id data (1)"
> 
> This change is from ELAN's correction. It needs 200ms delay before
> set_mode() so that the mode setting will correctly take effect.

KT, is this feasible?

> 
> Signed-off-by: Chris Chiu <chiu@endlessm.com>
> ---
>  drivers/input/mouse/elan_i2c_core.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/input/mouse/elan_i2c_core.c 
> b/drivers/input/mouse/elan_i2c_core.c
> index 2f58985..95080f9 100644
> --- a/drivers/input/mouse/elan_i2c_core.c
> +++ b/drivers/input/mouse/elan_i2c_core.c
> @@ -210,18 +210,20 @@ static int __elan_initialize(struct elan_tp_data
*data)
>  		return error;
>  	}
>  
> -	data->mode |= ETP_ENABLE_ABS;
> -	error = data->ops->set_mode(client, data->mode);
> +	error = data->ops->sleep_control(client, false);
>  	if (error) {
>  		dev_err(&client->dev,
> -			"failed to switch to absolute mode: %d\n", error);
> +			"failed to wake device up: %d\n", error);
>  		return error;
>  	}
>  
> -	error = data->ops->sleep_control(client, false);
> +	msleep(200);
> +
> +	data->mode |= ETP_ENABLE_ABS;
> +	error = data->ops->set_mode(client, data->mode);
>  	if (error) {
>  		dev_err(&client->dev,
> -			"failed to wake device up: %d\n", error);
> +			"failed to switch to absolute mode: %d\n", error);
>  		return error;
>  	}
>  
> --
> 2.1.4
> 

Thanks.

-- 
Dmitry

[toc] | [prev] | [next] | [standalone]


#1427712 — RE: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode

From廖崇榮 <kt.liao@emc.com.tw>
Date2016-06-21 14:50 +0200
SubjectRE: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode
Message-ID<rMthU-5Vb-9@gated-at.bofh.it>
In reply to#1426865
Hi Dmitry,

-----Original Message-----
From: Dmitry Torokhov [mailto:dmitry.torokhov@gmail.com] 
Sent: Tuesday, June 21, 2016 1:43 AM
To: Chris Chiu; kt.liao@emc.com.tw
Cc: Charlie Mooney; Michele Curti; Krzysztof Kozlowski; Benson Leung;
linux-input@vger.kernel.org; linux-kernel@vger.kernel.org;
linux@endlessm.com
Subject: Re: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS
mode

On Tue, Jun 07, 2016 at 09:34:09PM +0800, Chris Chiu wrote:
> When performing a warm reboot from a system which does not correctly 
> support ELAN I2C touchpads, the touchpad will sometimes enter standard 
> mouse mode, cursor then never respond to touchpad event, and making 
> the driver discard the HID reports and flood dmesg with following 
> error messages.
> "elan_i2c i2c-ELAN1000:00: invalid report id data (1)"
> 
> This change is from ELAN's correction. It needs 200ms delay before
> set_mode() so that the mode setting will correctly take effect.

KT, is this feasible?
[KT] After internal discussion, we don't agree this patch. 
    It's a work-around to fix firmware bug for specific touchpad and not
tested by other device.
    
> 
> Signed-off-by: Chris Chiu <chiu@endlessm.com>
> ---
>  drivers/input/mouse/elan_i2c_core.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/input/mouse/elan_i2c_core.c 
> b/drivers/input/mouse/elan_i2c_core.c
> index 2f58985..95080f9 100644
> --- a/drivers/input/mouse/elan_i2c_core.c
> +++ b/drivers/input/mouse/elan_i2c_core.c
> @@ -210,18 +210,20 @@ static int __elan_initialize(struct elan_tp_data
*data)
>  		return error;
>  	}
>  
> -	data->mode |= ETP_ENABLE_ABS;
> -	error = data->ops->set_mode(client, data->mode);
> +	error = data->ops->sleep_control(client, false);
>  	if (error) {
>  		dev_err(&client->dev,
> -			"failed to switch to absolute mode: %d\n", error);
> +			"failed to wake device up: %d\n", error);
>  		return error;
>  	}
>  
> -	error = data->ops->sleep_control(client, false);
> +	msleep(200);
> +
> +	data->mode |= ETP_ENABLE_ABS;
> +	error = data->ops->set_mode(client, data->mode);
>  	if (error) {
>  		dev_err(&client->dev,
> -			"failed to wake device up: %d\n", error);
> +			"failed to switch to absolute mode: %d\n", error);
>  		return error;
>  	}
>  
> --
> 2.1.4
> 

Thanks.

-- 
Dmitry

[toc] | [prev] | [next] | [standalone]


#1427853 — Re: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode

FromDaniel Drake <drake@endlessm.com>
Date2016-06-21 17:00 +0200
SubjectRe: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode
Message-ID<rMvjH-797-23@gated-at.bofh.it>
In reply to#1427712
On Tue, Jun 21, 2016 at 6:40 AM, 廖崇榮 <kt.liao@emc.com.tw> wrote:
> KT, is this feasible?
> [KT] After internal discussion, we don't agree this patch.
>     It's a work-around to fix firmware bug for specific touchpad and not
> tested by other device.

For better or worse, Linux often takes on the responsibility of
working around firmware bugs. This is a real issue that affects
multiple Asus laptops; you'll have no touchpad input upon reboot from
any OS that drives the touchpad in "generic hid" mode (e.g. older
version of Linux, some embedded OS, etc).

If the sleep is really that controversial, we could make it specific
to the ELAN1000 model that is the one in question here?

Thanks
Daniel

[toc] | [prev] | [next] | [standalone]


#1428724 — RE: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode

From廖崇榮 <kt.liao@emc.com.tw>
Date2016-06-22 14:10 +0200
SubjectRE: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode
Message-ID<rMP8J-3bX-13@gated-at.bofh.it>
In reply to#1427853
-----Original Message-----
From: Daniel Drake [mailto:drake@endlessm.com] 
Sent: Tuesday, June 21, 2016 10:42 PM
To: 廖崇榮
Cc: Dmitry Torokhov; Chris Chiu; Charlie Mooney; Michele Curti; Krzysztof Kozlowski; Benson Leung; linux-input@vger.kernel.org; Linux Kernel; Linux Upstreaming Team; 黃世鵬 經理
Subject: Re: [PATCH] Input: elan_i2c - +200 ms delay before setting to ABS mode

On Tue, Jun 21, 2016 at 6:40 AM, 廖崇榮 <kt.liao@emc.com.tw> wrote:
> KT, is this feasible?
> [KT] After internal discussion, we don't agree this patch.
>     It's a work-around to fix firmware bug for specific touchpad and 
> not tested by other device.

For better or worse, Linux often takes on the responsibility of working around firmware bugs. This is a real issue that affects multiple Asus laptops; you'll have no touchpad input upon reboot from any OS that drives the touchpad in "generic hid" mode (e.g. older version of Linux, some embedded OS, etc).

If the sleep is really that controversial, we could make it specific to the ELAN1000 model that is the one in question here?

[KT]:We can consider to control specific module, our FW engineer is checking it and confirm which part number for ASUS should adopt work-around.
we will reply you once we confirm.

Thanks
Daniel

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web