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

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

 



On Dec 08 2016 or thereabouts, Vladyslav Shtabovenko wrote:
> By the way, I also did some research on the internet and apparently
> many gaming/mechanical keyboards require similar quirks:
> 
> https://unix.stackexchange.com/questions/280564/usb-submit-urbctrl-failed-1-corsair-k65-rgb-keyboard/280574#280574
> 
> This one concerns the same chip as in my keyboard:
> 
> https://askubuntu.com/questions/811162/keyboard-not-working-after-waking-from-suspend-sleep/846019
> 
> With usbhid.quirks=0x04D9:0xA0CD:0x20000408 added to GRUB_CMDLINE_LINUX
> the keyboard works fine also on unpatched kernels.

Then can you just submit a patch which adds
"HID_QUIRK_NOGET | HID_QUIRK_ALWAYS_POLL | HID_QUIRK_NO_INIT_REPORTS" in
drivers/hid/usbhid/hid-quirks.c?

There should not be a need of patching hid-holtek.c

Cheers,
Benjamin

> 
> Cheers,
> Vladyslav
> 
> 
> 
> 
> Am 05.12.2016 um 22:56 schrieb Vladyslav Shtabovenko:
> >Hi,
> >
> >sorry for the late reply. I prefer to test things before submitting
> >them here and compiling the kernel takes more than one hour on
> >my machine...
> >
> >It sounds very weird, but if I remove the drivers/hid/hid-holtek-kbd.c
> >hunk and leave the other quirks, then the keyboard does not work at all:
> >It just does not recognized, so I cannot type anything. Does this make
> >any sense?
> >
> >Unless it is some sort of anomaly on Fedora's 4.8.10-100 kernel, it
> >seems that for some reason (that I don't understand) one has to declare
> >the keyboard in hid-holtek-kbd, although it is then controlled by usbhid.
> >
> >Cheers,
> >Vladyslav
> >
> >
> >
> >Am 01.12.2016 um 15:23 schrieb Benjamin Tissoires:
> >>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