diff options
Diffstat (limited to 'HID-input-fix-a4tech-horizontal-wheel-custom-usage.patch')
-rw-r--r-- | HID-input-fix-a4tech-horizontal-wheel-custom-usage.patch | 142 |
1 files changed, 0 insertions, 142 deletions
diff --git a/HID-input-fix-a4tech-horizontal-wheel-custom-usage.patch b/HID-input-fix-a4tech-horizontal-wheel-custom-usage.patch deleted file mode 100644 index df6a45999..000000000 --- a/HID-input-fix-a4tech-horizontal-wheel-custom-usage.patch +++ /dev/null @@ -1,142 +0,0 @@ -From mboxrd@z Thu Jan 1 00:00:00 1970 -Return-Path: <SRS0=TvG7=UK=vger.kernel.org=linux-kernel-owner@kernel.org> -X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on - aws-us-west-2-korg-lkml-1.web.codeaurora.org -X-Spam-Level: -X-Spam-Status: No, score=-8.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, - INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, - USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 -Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) - by smtp.lore.kernel.org (Postfix) with ESMTP id 25464C4321A - for <linux-kernel@archiver.kernel.org>; Tue, 11 Jun 2019 12:13:29 +0000 (UTC) -Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) - by mail.kernel.org (Postfix) with ESMTP id 0217A206E0 - for <linux-kernel@archiver.kernel.org>; Tue, 11 Jun 2019 12:13:29 +0000 (UTC) -Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand - id S2387819AbfFKMN1 (ORCPT - <rfc822;linux-kernel@archiver.kernel.org>); - Tue, 11 Jun 2019 08:13:27 -0400 -Received: from mx2.suse.de ([195.135.220.15]:44798 "EHLO mx1.suse.de" - rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP - id S2387538AbfFKMN1 (ORCPT <rfc822;linux-kernel@vger.kernel.org>); - Tue, 11 Jun 2019 08:13:27 -0400 -X-Virus-Scanned: by amavisd-new at test-mx.suse.de -Received: from relay2.suse.de (unknown [195.135.220.254]) - by mx1.suse.de (Postfix) with ESMTP id 5E5D7B00C; - Tue, 11 Jun 2019 12:13:25 +0000 (UTC) -From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> -To: Jiri Kosina <jikos@kernel.org>, - Benjamin Tissoires <benjamin.tissoires@redhat.com> -Cc: dmitry.torokhov@gmail.com, wbauer@tmo.at, - Nicolas Saenz Julienne <nsaenzjulienne@suse.de>, - linux-input@vger.kernel.org, linux-kernel@vger.kernel.org -Subject: [PATCH v2] HID: input: fix a4tech horizontal wheel custom usage -Date: Tue, 11 Jun 2019 14:13:20 +0200 -Message-Id: <20190611121320.30267-1-nsaenzjulienne@suse.de> -X-Mailer: git-send-email 2.21.0 -MIME-Version: 1.0 -Content-Transfer-Encoding: 8bit -Sender: linux-kernel-owner@vger.kernel.org -Precedence: bulk -List-ID: <linux-kernel.vger.kernel.org> -X-Mailing-List: linux-kernel@vger.kernel.org -Archived-At: <https://lore.kernel.org/lkml/20190611121320.30267-1-nsaenzjulienne@suse.de/> -List-Archive: <https://lore.kernel.org/lkml/> -List-Post: <mailto:linux-kernel@vger.kernel.org> - -Some a4tech mice use the 'GenericDesktop.00b8' usage to inform whether -the previous wheel report was horizontal or vertical. Before -c01908a14bf73 ("HID: input: add mapping for "Toggle Display" key") this -usage was being mapped to 'Relative.Misc'. After the patch it's simply -ignored (usage->type == 0 & usage->code == 0). Which ultimately makes -hid-a4tech ignore the WHEEL/HWHEEL selection event, as it has no -usage->type. - -We shouldn't rely on a mapping for that usage as it's nonstandard and -doesn't really map to an input event. So we bypass the mapping and make -sure the custom event handling properly handles both reports. - -Fixes: c01908a14bf73 ("HID: input: add mapping for "Toggle Display" key") -Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> ---- - -NOTE: I CC'd Wolfgang as he's the one who can test this. - -Changes since v1: - - new approach, moved fix into hid-a4tech - - drivers/hid/hid-a4tech.c | 30 +++++++++++++++++++++++++++--- - 1 file changed, 27 insertions(+), 3 deletions(-) - -diff --git a/drivers/hid/hid-a4tech.c b/drivers/hid/hid-a4tech.c -index 98bf694626f7..3a8c4a5971f7 100644 ---- a/drivers/hid/hid-a4tech.c -+++ b/drivers/hid/hid-a4tech.c -@@ -23,12 +23,36 @@ - #define A4_2WHEEL_MOUSE_HACK_7 0x01 - #define A4_2WHEEL_MOUSE_HACK_B8 0x02 - -+#define A4_WHEEL_ORIENTATION (HID_UP_GENDESK | 0x000000b8) -+ - struct a4tech_sc { - unsigned long quirks; - unsigned int hw_wheel; - __s32 delayed_value; - }; - -+static int a4_input_mapping(struct hid_device *hdev, struct hid_input *hi, -+ struct hid_field *field, struct hid_usage *usage, -+ unsigned long **bit, int *max) -+{ -+ struct a4tech_sc *a4 = hid_get_drvdata(hdev); -+ -+ if (a4->quirks & A4_2WHEEL_MOUSE_HACK_B8 && -+ usage->hid == A4_WHEEL_ORIENTATION) { -+ /* -+ * We do not want to have this usage mapped to anything as it's -+ * nonstandard and doesn't really behave like an HID report. -+ * It's only selecting the orientation (vertical/horizontal) of -+ * the previous mouse wheel report. The input_events will be -+ * generated once both reports are recorded in a4_event(). -+ */ -+ return -1; -+ } -+ -+ return 0; -+ -+} -+ - static int a4_input_mapped(struct hid_device *hdev, struct hid_input *hi, - struct hid_field *field, struct hid_usage *usage, - unsigned long **bit, int *max) -@@ -52,8 +76,7 @@ static int a4_event(struct hid_device *hdev, struct hid_field *field, - struct a4tech_sc *a4 = hid_get_drvdata(hdev); - struct input_dev *input; - -- if (!(hdev->claimed & HID_CLAIMED_INPUT) || !field->hidinput || -- !usage->type) -+ if (!(hdev->claimed & HID_CLAIMED_INPUT) || !field->hidinput) - return 0; - - input = field->hidinput->input; -@@ -64,7 +87,7 @@ static int a4_event(struct hid_device *hdev, struct hid_field *field, - return 1; - } - -- if (usage->hid == 0x000100b8) { -+ if (usage->hid == A4_WHEEL_ORIENTATION) { - input_event(input, EV_REL, value ? REL_HWHEEL : - REL_WHEEL, a4->delayed_value); - input_event(input, EV_REL, value ? REL_HWHEEL_HI_RES : -@@ -131,6 +154,7 @@ MODULE_DEVICE_TABLE(hid, a4_devices); - static struct hid_driver a4_driver = { - .name = "a4tech", - .id_table = a4_devices, -+ .input_mapping = a4_input_mapping, - .input_mapped = a4_input_mapped, - .event = a4_event, - .probe = a4_probe, --- -2.21.0 - - |