Re: [patch 16/54] Input: i8042 - fix AUX port detection with some chips

2007-06-08 Thread Chuck Ebbert
On 06/08/2007 03:21 AM, Chris Wright wrote:
> -stable review patch.  If anyone has any objections, please let us know.
> -
> 
> From: Roland Scheidegger <[EMAIL PROTECTED]>
> 
> The i8042 driver fails detection of the AUX port with some chips,
> because they apparently do not change the I8042_CTR_AUXDIS bit
> immediately. This is known to affect at least HP500/HP510 notebooks,
> consequently the built-in touchpad will not work. The patch will simply
> reread the value until it gets the expected value or a retry limit is
> hit, without touching other workaround code in the same area.
> 
> Signed-off-by: Roland Scheidegger <[EMAIL PROTECTED]>
> Signed-off-by: Dmitry Torokhov <[EMAIL PROTECTED]>
> Signed-off-by: Chris Wright <[EMAIL PROTECTED]>
> Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
> ---
> X-Git-Url: 
> http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=d2ada5597d33a9108acb2caf912f85cbc9caab1e
> 

Also needed for 2.6.20.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[patch 16/54] Input: i8042 - fix AUX port detection with some chips

2007-06-08 Thread Chris Wright
-stable review patch.  If anyone has any objections, please let us know.
-

From: Roland Scheidegger <[EMAIL PROTECTED]>

The i8042 driver fails detection of the AUX port with some chips,
because they apparently do not change the I8042_CTR_AUXDIS bit
immediately. This is known to affect at least HP500/HP510 notebooks,
consequently the built-in touchpad will not work. The patch will simply
reread the value until it gets the expected value or a retry limit is
hit, without touching other workaround code in the same area.

Signed-off-by: Roland Scheidegger <[EMAIL PROTECTED]>
Signed-off-by: Dmitry Torokhov <[EMAIL PROTECTED]>
Signed-off-by: Chris Wright <[EMAIL PROTECTED]>
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
---
X-Git-Url: 
http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=d2ada5597d33a9108acb2caf912f85cbc9caab1e

 drivers/input/serio/i8042.c |   35 +--
 1 file changed, 29 insertions(+), 6 deletions(-)

--- linux-2.6.21.4.orig/drivers/input/serio/i8042.c
+++ linux-2.6.21.4/drivers/input/serio/i8042.c
@@ -526,6 +526,33 @@ static irqreturn_t __devinit i8042_aux_t
return IRQ_HANDLED;
 }
 
+/*
+ * i8042_toggle_aux - enables or disables AUX port on i8042 via command and
+ * verifies success by readinng CTR. Used when testing for presence of AUX
+ * port.
+ */
+static int __devinit i8042_toggle_aux(int on)
+{
+   unsigned char param;
+   int i;
+
+   if (i8042_command(,
+   on ? I8042_CMD_AUX_ENABLE : I8042_CMD_AUX_DISABLE))
+   return -1;
+
+   /* some chips need some time to set the I8042_CTR_AUXDIS bit */
+   for (i = 0; i < 100; i++) {
+   udelay(50);
+
+   if (i8042_command(, I8042_CMD_CTL_RCTR))
+   return -1;
+
+   if (!(param & I8042_CTR_AUXDIS) == on)
+   return 0;
+   }
+
+   return -1;
+}
 
 /*
  * i8042_check_aux() applies as much paranoia as it can at detecting
@@ -580,16 +607,12 @@ static int __devinit i8042_check_aux(voi
  * Bit assignment test - filters out PS/2 i8042's in AT mode
  */
 
-   if (i8042_command(, I8042_CMD_AUX_DISABLE))
-   return -1;
-   if (i8042_command(, I8042_CMD_CTL_RCTR) || (~param & 
I8042_CTR_AUXDIS)) {
+   if (i8042_toggle_aux(0)) {
printk(KERN_WARNING "Failed to disable AUX port, but continuing 
anyway... Is this a SiS?\n");
printk(KERN_WARNING "If AUX port is really absent please use 
the 'i8042.noaux' option.\n");
}
 
-   if (i8042_command(, I8042_CMD_AUX_ENABLE))
-   return -1;
-   if (i8042_command(, I8042_CMD_CTL_RCTR) || (param & 
I8042_CTR_AUXDIS))
+   if (i8042_toggle_aux(1))
return -1;
 
 /*

-- 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[patch 16/54] Input: i8042 - fix AUX port detection with some chips

2007-06-08 Thread Chris Wright
-stable review patch.  If anyone has any objections, please let us know.
-

From: Roland Scheidegger [EMAIL PROTECTED]

The i8042 driver fails detection of the AUX port with some chips,
because they apparently do not change the I8042_CTR_AUXDIS bit
immediately. This is known to affect at least HP500/HP510 notebooks,
consequently the built-in touchpad will not work. The patch will simply
reread the value until it gets the expected value or a retry limit is
hit, without touching other workaround code in the same area.

Signed-off-by: Roland Scheidegger [EMAIL PROTECTED]
Signed-off-by: Dmitry Torokhov [EMAIL PROTECTED]
Signed-off-by: Chris Wright [EMAIL PROTECTED]
Signed-off-by: Greg Kroah-Hartman [EMAIL PROTECTED]
---
X-Git-Url: 
http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=d2ada5597d33a9108acb2caf912f85cbc9caab1e

 drivers/input/serio/i8042.c |   35 +--
 1 file changed, 29 insertions(+), 6 deletions(-)

--- linux-2.6.21.4.orig/drivers/input/serio/i8042.c
+++ linux-2.6.21.4/drivers/input/serio/i8042.c
@@ -526,6 +526,33 @@ static irqreturn_t __devinit i8042_aux_t
return IRQ_HANDLED;
 }
 
+/*
+ * i8042_toggle_aux - enables or disables AUX port on i8042 via command and
+ * verifies success by readinng CTR. Used when testing for presence of AUX
+ * port.
+ */
+static int __devinit i8042_toggle_aux(int on)
+{
+   unsigned char param;
+   int i;
+
+   if (i8042_command(param,
+   on ? I8042_CMD_AUX_ENABLE : I8042_CMD_AUX_DISABLE))
+   return -1;
+
+   /* some chips need some time to set the I8042_CTR_AUXDIS bit */
+   for (i = 0; i  100; i++) {
+   udelay(50);
+
+   if (i8042_command(param, I8042_CMD_CTL_RCTR))
+   return -1;
+
+   if (!(param  I8042_CTR_AUXDIS) == on)
+   return 0;
+   }
+
+   return -1;
+}
 
 /*
  * i8042_check_aux() applies as much paranoia as it can at detecting
@@ -580,16 +607,12 @@ static int __devinit i8042_check_aux(voi
  * Bit assignment test - filters out PS/2 i8042's in AT mode
  */
 
-   if (i8042_command(param, I8042_CMD_AUX_DISABLE))
-   return -1;
-   if (i8042_command(param, I8042_CMD_CTL_RCTR) || (~param  
I8042_CTR_AUXDIS)) {
+   if (i8042_toggle_aux(0)) {
printk(KERN_WARNING Failed to disable AUX port, but continuing 
anyway... Is this a SiS?\n);
printk(KERN_WARNING If AUX port is really absent please use 
the 'i8042.noaux' option.\n);
}
 
-   if (i8042_command(param, I8042_CMD_AUX_ENABLE))
-   return -1;
-   if (i8042_command(param, I8042_CMD_CTL_RCTR) || (param  
I8042_CTR_AUXDIS))
+   if (i8042_toggle_aux(1))
return -1;
 
 /*

-- 
-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 16/54] Input: i8042 - fix AUX port detection with some chips

2007-06-08 Thread Chuck Ebbert
On 06/08/2007 03:21 AM, Chris Wright wrote:
 -stable review patch.  If anyone has any objections, please let us know.
 -
 
 From: Roland Scheidegger [EMAIL PROTECTED]
 
 The i8042 driver fails detection of the AUX port with some chips,
 because they apparently do not change the I8042_CTR_AUXDIS bit
 immediately. This is known to affect at least HP500/HP510 notebooks,
 consequently the built-in touchpad will not work. The patch will simply
 reread the value until it gets the expected value or a retry limit is
 hit, without touching other workaround code in the same area.
 
 Signed-off-by: Roland Scheidegger [EMAIL PROTECTED]
 Signed-off-by: Dmitry Torokhov [EMAIL PROTECTED]
 Signed-off-by: Chris Wright [EMAIL PROTECTED]
 Signed-off-by: Greg Kroah-Hartman [EMAIL PROTECTED]
 ---
 X-Git-Url: 
 http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=d2ada5597d33a9108acb2caf912f85cbc9caab1e
 

Also needed for 2.6.20.

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/