[PATCH 1/1] Input: atkbd - add keyboard quirk for HP Pavilion ZV6100 laptop

Stefan Bader stefan.bader at canonical.com
Thu Jan 15 14:04:05 UTC 2009


Andy Whitcroft wrote:
> From: Rikard Ljungstrand <lrikard at student.chalmers.se>
> 
> Bug: #291878
> 
> commit 181f63827a7655e84781fe0494189c1fea52816f upstream
> 
> Add quirk for misbehaving volume buttons on HP Pavilion ZV6100 laptop which
> are not sending keyrelease events, as reported by Aaron Pickett.
> 
> Signed-off-by: Rikard Ljungstrand <lrikard at student.chalmers.se>
> Signed-off-by: Dmitry Torokhov <dtor at mail.ru>
> Signed-off-by: Andy Whitcroft <apw at canonical.com>
> ---
>  drivers/input/keyboard/atkbd.c |   26 ++++++++++++++++++++++++++
>  1 files changed, 26 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
> index c694eaa..1aa2eaf 100644
> --- a/drivers/input/keyboard/atkbd.c
> +++ b/drivers/input/keyboard/atkbd.c
> @@ -884,6 +884,23 @@ static void atkbd_inventec_keymap_fixup(struct atkbd *atkbd)
>  }
>  
>  /*
> + * Perform fixup for HP Pavilion ZV6100 laptop that doesn't generate release
> + * for its volume buttons
> + */
> +static void atkbd_hp_zv6100_keymap_fixup(struct atkbd *atkbd)
> +{
> +	const unsigned int forced_release_keys[] = {
> +		0xae, 0xb0,
> +	};
> +	int i;
> +
> +	if (atkbd->set == 2)
> +		for (i = 0; i < ARRAY_SIZE(forced_release_keys); i++)
> +			__set_bit(forced_release_keys[i],
> +					atkbd->force_release_mask);
> +}
> +
> +/*
>   * atkbd_set_keycode_table() initializes keyboard's keycode table
>   * according to the selected scancode set
>   */
> @@ -1495,6 +1512,15 @@ static struct dmi_system_id atkbd_dmi_quirk_table[] __initdata = {
>  		.driver_data = atkbd_hp_keymap_fixup,
>  	},
>  	{
> +		.ident = "HP Pavilion ZV6100",
> +		.matches = {
> +			DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
> +			DMI_MATCH(DMI_PRODUCT_NAME, "Pavilion ZV6100"),
> +		},
> +		.callback = atkbd_setup_fixup,
> +		.driver_data = atkbd_hp_zv6100_keymap_fixup,
> +	},
> +	{
>  		.ident = "Inventec Symphony",
>  		.matches = {
>  			DMI_MATCH(DMI_SYS_VENDOR, "INVENTEC"),

ACK

-- 

When all other means of communication fail, try words!






More information about the kernel-team mailing list