diff mbox

Input: psmouse - retry getid command in psmouse_probe()

Message ID 1351678279-32615-1-git-send-email-cywang@chromium.org (mailing list archive)
State New, archived
Headers show

Commit Message

Chung-yih Wang Oct. 31, 2012, 10:11 a.m. UTC
As the synaptics device may not respond to the first command in psmouse_probe
when a machine is booting up, the patch gives a second probe if the first
one fails.

Signed-off-by: Chung-yih Wang <cywang@chromium.org>
---
 drivers/input/mouse/psmouse-base.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

Comments

Chung-yih Wang Feb. 18, 2013, 8:21 a.m. UTC | #1
Hi Dmitry and other maintainers,

  Not sure if you have any comment on the patch? As this patch tries
to help some platforms (especially for lenovo's machines) to rescan
the touchpad device after resuming from suspend if the first probe
fails.

Thanks,
Chung-yih

On Mon, Feb 18, 2013 at 4:17 PM, Chung-Yih Wang (???)
<cywang@chromium.org> wrote:
> Hi Dmitry and other maintainers,
>
>   Not sure if you have any comment on the patch? As this patch tries to help
> some platforms (especially for lenovo's machines) to rescan the touchpad
> device after resuming from suspend if the first probe fails.
>
> Thanks,
> Chung-yih
>
>
> On Wed, Oct 31, 2012 at 6:11 PM, Chung-yih Wang <cywang@chromium.org> wrote:
>>
>> As the synaptics device may not respond to the first command in
>> psmouse_probe
>> when a machine is booting up, the patch gives a second probe if the first
>> one fails.
>>
>> Signed-off-by: Chung-yih Wang <cywang@chromium.org>
>> ---
>>  drivers/input/mouse/psmouse-base.c |   13 +++++++++++--
>>  1 files changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/input/mouse/psmouse-base.c
>> b/drivers/input/mouse/psmouse-base.c
>> index 22fe254..c4fc5ad 100644
>> --- a/drivers/input/mouse/psmouse-base.c
>> +++ b/drivers/input/mouse/psmouse-base.c
>> @@ -1053,8 +1053,17 @@ static int psmouse_probe(struct psmouse *psmouse)
>>   */
>>
>>         param[0] = 0xa5;
>> -       if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETID))
>> -               return -1;
>> +       if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETID)) {
>> +               /*
>> +                * Reprobe the device if it did not respond to the GETID
>> +                * command. Before retry, additional dummy command is sent
>> +                * to clear the 'RESEND' response if exists.
>> +                */
>> +               psmouse_warn(psmouse, "GETID probe failed,
>> retrying...\n");
>> +               ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11);
>> +               if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETID))
>> +                       return -1;
>> +       }
>>
>>         if (param[0] != 0x00 && param[0] != 0x03 &&
>>             param[0] != 0x04 && param[0] != 0xff)
>> --
>> 1.7.7.3
>>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
li guang Feb. 18, 2013, 9:26 a.m. UTC | #2
seems a special change for a special device
so, you may need to place this change with
corresponding CONFIG_xxx_xxx.
generally, if command F2 failed, we will assume
there's no ps2 device, it's normal, 
or do you have some materials(SPEC) to specify
the change you have made?



? 2012-10-31?? 18:11 +0800?Chung-yih Wang???
> As the synaptics device may not respond to the first command in psmouse_probe
> when a machine is booting up, the patch gives a second probe if the first
> one fails.
> 
> Signed-off-by: Chung-yih Wang <cywang@chromium.org>
> ---
>  drivers/input/mouse/psmouse-base.c |   13 +++++++++++--
>  1 files changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
> index 22fe254..c4fc5ad 100644
> --- a/drivers/input/mouse/psmouse-base.c
> +++ b/drivers/input/mouse/psmouse-base.c
> @@ -1053,8 +1053,17 @@ static int psmouse_probe(struct psmouse *psmouse)
>   */
>  
>  	param[0] = 0xa5;
> -	if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETID))
> -		return -1;
> +	if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETID)) {
> +		/*
> +		 * Reprobe the device if it did not respond to the GETID
> +		 * command. Before retry, additional dummy command is sent
> +		 * to clear the 'RESEND' response if exists.
> +		 */
> +		psmouse_warn(psmouse, "GETID probe failed, retrying...\n");
> +		ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11);
> +		if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETID))
> +			return -1;
> +	}
>  
>  	if (param[0] != 0x00 && param[0] != 0x03 &&
>  	    param[0] != 0x04 && param[0] != 0xff)


--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Chung-yih Wang Feb. 18, 2013, 9:45 a.m. UTC | #3
Yes, I could add CONFIG_MOUSE_PS2_SYNAPTICS for the change as we only
need it for synaptics touchpad/touchpoint on lenovo's machines.


On Mon, Feb 18, 2013 at 5:26 PM, li guang <lig.fnst@cn.fujitsu.com> wrote:
> seems a special change for a special device
> so, you may need to place this change with
> corresponding CONFIG_xxx_xxx.
> generally, if command F2 failed, we will assume
> there's no ps2 device, it's normal,
> or do you have some materials(SPEC) to specify
> the change you have made?
>
>
>
> ? 2012-10-31?? 18:11 +0800?Chung-yih Wang???
>> As the synaptics device may not respond to the first command in psmouse_probe
>> when a machine is booting up, the patch gives a second probe if the first
>> one fails.
>>
>> Signed-off-by: Chung-yih Wang <cywang@chromium.org>
>> ---
>>  drivers/input/mouse/psmouse-base.c |   13 +++++++++++--
>>  1 files changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
>> index 22fe254..c4fc5ad 100644
>> --- a/drivers/input/mouse/psmouse-base.c
>> +++ b/drivers/input/mouse/psmouse-base.c
>> @@ -1053,8 +1053,17 @@ static int psmouse_probe(struct psmouse *psmouse)
>>   */
>>
>>       param[0] = 0xa5;
>> -     if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETID))
>> -             return -1;
>> +     if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETID)) {
>> +             /*
>> +              * Reprobe the device if it did not respond to the GETID
>> +              * command. Before retry, additional dummy command is sent
>> +              * to clear the 'RESEND' response if exists.
>> +              */
>> +             psmouse_warn(psmouse, "GETID probe failed, retrying...\n");
>> +             ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11);
>> +             if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETID))
>> +                     return -1;
>> +     }
>>
>>       if (param[0] != 0x00 && param[0] != 0x03 &&
>>           param[0] != 0x04 && param[0] != 0xff)
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Dmitry Torokhov Feb. 19, 2013, 6:44 p.m. UTC | #4
Hi Chung-yih,

On Mon, Feb 18, 2013 at 05:45:07PM +0800, Chung-Yih Wang (???) wrote:
> Yes, I could add CONFIG_MOUSE_PS2_SYNAPTICS for the change as we only
> need it for synaptics touchpad/touchpoint on lenovo's machines.
> 

I do not think it will solve anything as all distributions have
CONFIG_MOUSE_PS2_SYNAPTICS enabled.

Could you tell me what the response is to the initial GETID command that
you see on these laptops?

Thanks.
diff mbox

Patch

diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
index 22fe254..c4fc5ad 100644
--- a/drivers/input/mouse/psmouse-base.c
+++ b/drivers/input/mouse/psmouse-base.c
@@ -1053,8 +1053,17 @@  static int psmouse_probe(struct psmouse *psmouse)
  */
 
 	param[0] = 0xa5;
-	if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETID))
-		return -1;
+	if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETID)) {
+		/*
+		 * Reprobe the device if it did not respond to the GETID
+		 * command. Before retry, additional dummy command is sent
+		 * to clear the 'RESEND' response if exists.
+		 */
+		psmouse_warn(psmouse, "GETID probe failed, retrying...\n");
+		ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11);
+		if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETID))
+			return -1;
+	}
 
 	if (param[0] != 0x00 && param[0] != 0x03 &&
 	    param[0] != 0x04 && param[0] != 0xff)