Lucid/Maverick pre-stable, Input: i8042 - introduce notimeout blacklist for Dell Vostro V13
Stefan Bader
stefan.bader at canonical.com
Fri Jan 14 20:24:57 UTC 2011
Backport from upstream, only changes things for that one model. Sounds ok to me.
Acked-by: Stefan Bader <stefan.bader at canonical.com>
On 01/14/2011 01:41 PM, Tim Gardner wrote:
> The following changes since commit 87129e06f19f3d040ff6cb67e96dc242e6bef756:
> Brad Figg (1):
> UBUNTU: Ubuntu-2.6.35-25.43
>
> are available in the git repository at:
>
> git://kernel.ubuntu.com/rtg/ubuntu-maverick.git i8042-v13-lp380126
>
> Jiri Kosina (1):
> Input: i8042 - introduce 'notimeout' blacklist for Dell Vostro V13
>
> Documentation/kernel-parameters.txt | 1 +
> drivers/input/serio/i8042-x86ia64io.h | 21 +++++++++++++++++++++
> drivers/input/serio/i8042.c | 6 +++++-
> 3 files changed, 27 insertions(+), 1 deletions(-)
>
> From 7f58f757c90fe45cabbe299cc17716b9ced0997b Mon Sep 17 00:00:00 2001
> From: Jiri Kosina <jkosina at suse.cz>
> Date: Sat, 8 Jan 2011 01:37:26 -0800
> Subject: [PATCH] Input: i8042 - introduce 'notimeout' blacklist for Dell Vostro V13
>
> BugLink: http://bugs.launchpad.net/bugs/380126
>
> i8042 controller present in Dell Vostro V13 errorneously signals spurious
> timeouts.
>
> Introduce i8042.notimeout parameter for ignoring i8042-signalled timeouts
> and apply this quirk automatically for Dell Vostro V13, based on DMI match.
>
> In addition to that, this machine also needs to be added to nomux blacklist.
>
> Signed-off-by: Jiri Kosina <jkosina at suse.cz>
> Signed-off-by: Dmitry Torokhov <dtor at mail.ru>
> Backported from f8313ef1f448006207f12c107123522c8bc00f15
> Signed-off-by: Tim Gardner <tim.gardner at canonical.com>
> ---
> Documentation/kernel-parameters.txt | 1 +
> drivers/input/serio/i8042-x86ia64io.h | 21 +++++++++++++++++++++
> drivers/input/serio/i8042.c | 6 +++++-
> 3 files changed, 27 insertions(+), 1 deletions(-)
>
> diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
> index b61f89f..5d96cd9 100644
> --- a/Documentation/kernel-parameters.txt
> +++ b/Documentation/kernel-parameters.txt
> @@ -921,6 +921,7 @@ and is between 256 and 4096 characters. It is defined in the file
> i8042.panicblink=
> [HW] Frequency with which keyboard LEDs should blink
> when kernel panics (default is 0.5 sec)
> + i8042.notimeout [HW] Ignore timeout condition signalled by conroller
> i8042.reset [HW] Reset the controller during init and cleanup
> i8042.unlock [HW] Unlock (ignore) the keylock
>
> diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h
> index 8c53926..a0730fd 100644
> --- a/drivers/input/serio/i8042-x86ia64io.h
> +++ b/drivers/input/serio/i8042-x86ia64io.h
> @@ -420,6 +420,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
> DMI_MATCH(DMI_PRODUCT_VERSION, "0100"),
> },
> },
> + {
> + /* Dell Vostro V13 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_NAME, "Vostro V13"),
> + },
> + },
> { }
> };
>
> @@ -541,6 +548,17 @@ static const struct dmi_system_id __initconst i8042_dmi_laptop_table[] = {
> };
> #endif
>
> +static const struct dmi_system_id __initconst i8042_dmi_notimeout_table[] = {
> + {
> + /* Dell Vostro V13 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_NAME, "Vostro V13"),
> + },
> + },
> + { }
> +};
> +
> /*
> * Some Wistron based laptops need us to explicitly enable the 'Dritek
> * keyboard extension' to make their extra keys start generating scancodes.
> @@ -893,6 +911,9 @@ static int __init i8042_platform_init(void)
> if (dmi_check_system(i8042_dmi_nomux_table))
> i8042_nomux = true;
>
> + if (dmi_check_system(i8042_dmi_notimeout_table))
> + i8042_notimeout = true;
> +
> if (dmi_check_system(i8042_dmi_dritek_table))
> i8042_dritek = true;
> #endif /* CONFIG_X86 */
> diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
> index 5d42358..3e8a78f 100644
> --- a/drivers/input/serio/i8042.c
> +++ b/drivers/input/serio/i8042.c
> @@ -65,6 +65,10 @@ static unsigned int i8042_blink_frequency = 500;
> module_param_named(panicblink, i8042_blink_frequency, uint, 0600);
> MODULE_PARM_DESC(panicblink, "Frequency with which keyboard LEDs should blink when kernel panics");
>
> +static bool i8042_notimeout;
> +module_param_named(notimeout, i8042_notimeout, bool, 0);
> +MODULE_PARM_DESC(notimeout, "Ignore timeouts signalled by i8042");
> +
> #ifdef CONFIG_X86
> static bool i8042_dritek;
> module_param_named(dritek, i8042_dritek, bool, 0);
> @@ -507,7 +511,7 @@ static irqreturn_t i8042_interrupt(int irq, void *dev_id)
> } else {
>
> dfl = ((str & I8042_STR_PARITY) ? SERIO_PARITY : 0) |
> - ((str & I8042_STR_TIMEOUT) ? SERIO_TIMEOUT : 0);
> + ((str & I8042_STR_TIMEOUT && !i8042_notimeout) ? SERIO_TIMEOUT : 0);
>
> port_no = (str & I8042_STR_AUXDATA) ?
> I8042_AUX_PORT_NO : I8042_KBD_PORT_NO;
More information about the kernel-team
mailing list