Re: [PATCH] HID: usbhid: quirk for MechanicalEagle Z-77 keyboard

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Nov 30 2016 or thereabouts, Vladyslav Shtabovenko wrote:
> Hi,
> 
> my MechanicalEagle Z-77 keyboard that identifies itself as
> 
> Bus 003 Device 005: ID 04d9:a0cd Holtek Semiconductor, Inc.
> 
> has troubles getting recognized after standby. My machine is
> a Thinkpad X230 in an Ultrabase docking station and everytime
> the laptop wakes up from standby, the keyboard is not working
> and I have to reconnect it several times until I can type again.
> 
> The problem is identical to the one described here:
> 
> http://lkml.iu.edu/hypermail/linux/kernel/1407.1/04532.html
> 
> I used the same solution as the author, i.e. added quirks for
> the specific ID of the keyboard and the issues went away. Tested
> this for more than three weeks with no problems or side effects whatsoever.
> 
> Initially I sent the patch directly to Benjamin Tissoires and Jiri Kosina.
> Benjamin asked me to add the keyboard to hid_have_special_driver in
> hid-core.c, to ensure that it is handled by hid-holtek instead of
> hid-generic.
> 
> However, after doing so, it turned out that with
> hid-holtek I obtain the same buggy behavior as before. The only difference
> was that the keyboard was sometimes recognized and sometimes not, so it was
> a bit like Russian roulette. I also noticed that the "original" Holtek-patch
> by Wangzhao Cai did not contain this addition to hid_have_special_driver.
> 
> For me, hid-generic + quirks from the attached patch actually work better
> with my Holtek-based keyboard than hid-holtek with the same quirks.
> 
> Please find my patch attached. This is the one without the addition to
> hid_have_special_driver, i.e. it fixes the problem with the keyboard being
> unrecognized after standby in 100% of cases.

Hi,

you probably also need to remove the drivers/hid/hid-holtek-kbd.c hunk
if you prefer having hid-generic hanlding your keyboard.

Cheers,
Benjamin

> 
> 
> Cheers,
> Vladyslav
> 

> From 29dec1f11e53eb87adedad7b2a7c7559ea290e46 Mon Sep 17 00:00:00 2001
> From: Vladyslav Shtabovenko <dev@xxxxxxxxxxxxxxxxxxxxxxx>
> Date: Sat, 26 Nov 2016 17:01:38 +0100
> Subject: [PATCH] HID: usbhid: quirk for MechanicalEagle Z-77 keyboard
> 
> Hello,
> 
> my MechanicalEagle Z-77 keyboard that identifies itself as
> 
> Bus 003 Device 005: ID 04d9:a0cd Holtek Semiconductor, Inc.
> 
> has troubles getting recognized after standby. My machine is
> a Thinkpad X230 in an Ultrabase docking station and everytime
> the laptop wakes up from standby, the keyboard is not working
> and I have to reconnect it several times until I can type again.
> 
> The problem is identical to the one described here:
> 
> http://lkml.iu.edu/hypermail/linux/kernel/1407.1/04532.html
> 
> I used the same solution as the author, i.e. added quirks for
> the specific ID of the keyboard and the issues went away. Tested
> this for more than three weeks with no problems or side effects whatsoever.
> Please find my patch attached.
> 
> 
> Cheers,
> Vladyslav
> 
> 
> Signed-off-by: Vladyslav Shtabovenko <dev@xxxxxxxxxxxxxxxxxxxxxxx>
> ---
>  drivers/hid/hid-holtek-kbd.c    | 4 +++-
>  drivers/hid/hid-ids.h           | 1 +
>  drivers/hid/usbhid/hid-quirks.c | 2 ++
>  3 files changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/hid/hid-holtek-kbd.c b/drivers/hid/hid-holtek-kbd.c
> index 6e1a4a4..6b8593b 100644
> --- a/drivers/hid/hid-holtek-kbd.c
> +++ b/drivers/hid/hid-holtek-kbd.c
> @@ -156,7 +156,9 @@ static int holtek_kbd_probe(struct hid_device *hdev,
>  
>  static const struct hid_device_id holtek_kbd_devices[] = {
>  	{ HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT,
> -			USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD) },
> +			USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD),
> +		HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT,
> +			USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A0CD)	},
>  	{ }
>  };
>  MODULE_DEVICE_TABLE(hid, holtek_kbd_devices);
> diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
> index 575aa65..898e4fe 100644
> --- a/drivers/hid/hid-ids.h
> +++ b/drivers/hid/hid-ids.h
> @@ -527,6 +527,7 @@
>  #define USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A081	0xa081
>  #define USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A0C2	0xa0c2
>  #define USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A096	0xa096
> +#define USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A0CD	0xa0cd
>  
>  #define USB_VENDOR_ID_IMATION		0x0718
>  #define USB_DEVICE_ID_DISC_STAKKA	0xd000
> diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
> index e6cfd32..0632939 100644
> --- a/drivers/hid/usbhid/hid-quirks.c
> +++ b/drivers/hid/usbhid/hid-quirks.c
> @@ -159,6 +159,8 @@ static const struct hid_blacklist {
>  	{ USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_QUAD_HD, HID_QUIRK_NO_INIT_REPORTS },
>  	{ USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_TP_V103, HID_QUIRK_NO_INIT_REPORTS },
>  	{ USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A096, HID_QUIRK_NO_INIT_INPUT_REPORTS },
> +	{ USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD_A0CD,
> +HID_QUIRK_NO_INIT_INPUT_REPORTS },
>  	{ USB_VENDOR_ID_MULTIPLE_1781, USB_DEVICE_ID_RAPHNET_4NES4SNES_OLD, HID_QUIRK_MULTI_INPUT },
>  	{ USB_VENDOR_ID_DRACAL_RAPHNET, USB_DEVICE_ID_RAPHNET_2NES2SNES, HID_QUIRK_MULTI_INPUT },
>  	{ USB_VENDOR_ID_DRACAL_RAPHNET, USB_DEVICE_ID_RAPHNET_4NES4SNES, HID_QUIRK_MULTI_INPUT },
> -- 
> 2.5.5
> 
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux