HID: Fix reporting of nonexistent HWheel for Elecom BM084 (bluetooth mouse).
PATCH v2 1/1 HID: Fix reporting of nonexistent HWheel for Elecom BM084 (bluetooth mouse).
Hi,
my last patch was missing the blacklist entry in hid-core.c. Now I think it is complete. It would be nice if you could review it and add it to the input-tree, in case it is ready...
Greetings,
Richard
--snip--
HID: Fix reporting of nonexistent HWheel for Elecom BM084 (bluetooth mouse).
This patch removes the annoying feature of Elecoms BM084 to constantly scroll to the right. The device can be found at:
http://www.dealextreme.com/details.dx/sku.15402
--- drivers/hid/Kconfig | 6 +++++ drivers/hid/Makefile | 1 + drivers/hid/hid-core.c | 1 + drivers/hid/hid-elecom.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++ drivers/hid/hid-ids.h | 3 ++ 5 files changed, 68 insertions(+), 0 deletions(-) create mode 100644 drivers/hid/hid-elecom.c
drivers/hid/Kconfig +6 -0
@@ -148,6 +148,12 @@ config HID_EGALAX ---help--- Support for the eGalax dual-touch panel. +config HID_ELECOM + tristate "ELECOM" + depends on USB_HID + ---help--- + Support for the ELECOM BM084 (bluetooth mouse). + config HID_EZKEY tristate "Ezkey" if EMBEDDED depends on USB_HID
drivers/hid/Makefile +1 -0
@@ -32,6 +32,7 @@ obj-$(CONFIG_HID_CHICONY) += hid-chicony.o obj-$(CONFIG_HID_CYPRESS) += hid-cypress.o obj-$(CONFIG_HID_DRAGONRISE) += hid-drff.o obj-$(CONFIG_HID_EGALAX) += hid-egalax.o +obj-$(CONFIG_HID_ELECOM) += hid-elecom.o obj-$(CONFIG_HID_EZKEY) += hid-ezkey.o obj-$(CONFIG_HID_GYRATION) += hid-gyration.o obj-$(CONFIG_HID_KENSINGTON) += hid-kensington.o
drivers/hid/hid-core.c +1 -0
@@ -1294,6 +1294,7 @@ static const struct hid_device_id hid_blacklist[] = { { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE) }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0006) }, { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH) }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084) }, { HID_USB_DEVICE(USB_VENDOR_ID_EZKEY, USB_DEVICE_ID_BTC_8193) }, { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR) }, { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR) },
drivers/hid/hid-elecom.c new file +57 -0
57 lines not on this page · raw message
drivers/hid/hid-ids.h +3 -0
@@ -186,6 +186,9 @@#define USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER 0x0001#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH 0x480d +#define USB_VENDOR_ID_ELECOM 0x056e +#define USB_DEVICE_ID_ELECOM_BM084 0x0061 +#define USB_VENDOR_ID_ELO 0x04E7#define USB_DEVICE_ID_ELO_TS2700 0x0020
Signature · 1 line
1.6.4.2
Hi Richard,
HID changes shoudl go toJiri (CCed).
Thanks.
Quoted 147 lines · Richard Nauber
Hi,
my last patch was missing the blacklist entry inhid-core.c. Now I think it is complete. It would be nice if you could review it and add it to the input-tree, in case it is ready...Greetings,
Richard--snip--
HID: Fix reporting of nonexistent HWheel for Elecom BM084 (bluetooth mouse).
This patch removes the annoying feature of Elecoms BM084 to constantly scroll to the right. The device can be found at:
http://www.dealextreme.com/details.dx/sku.15402Signed-off-by Richard Nauber <[email protected]>--- drivers/hid/Kconfig | 6 +++++ drivers/hid/Makefile | 1 + drivers/hid/hid-core.c | 1 + drivers/hid/hid-elecom.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++ drivers/hid/hid-ids.h | 3 ++ 5 files changed, 68 insertions(+), 0 deletions(-) create mode 100644 drivers/hid/hid-elecom.cdrivers/hid/Kconfig +6
-0@@ -148,6 +148,12 @@ config HID_EGALAX ---help--- Support for the eGalax dual-touch panel. +config HID_ELECOM + tristate "ELECOM" + depends on USB_HID + ---help--- + Support for the ELECOM BM084 (bluetooth mouse). + config HID_EZKEY tristate "Ezkey" if EMBEDDED depends on USB_HIDdrivers/hid/Makefile +1
-0@@ -32,6 +32,7 @@ obj-$(CONFIG_HID_CHICONY) += hid-chicony.o obj-$(CONFIG_HID_CYPRESS) += hid-cypress.o obj-$(CONFIG_HID_DRAGONRISE) += hid-drff.o obj-$(CONFIG_HID_EGALAX) += hid-egalax.o +obj-$(CONFIG_HID_ELECOM) += hid-elecom.o obj-$(CONFIG_HID_EZKEY) += hid-ezkey.o obj-$(CONFIG_HID_GYRATION) += hid-gyration.o obj-$(CONFIG_HID_KENSINGTON) += hid-kensington.odrivers/hid/hid-core.c +1
-0@@ -1294,6 +1294,7 @@ static const struct hid_device_id hid_blacklist[] = { { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE) }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0006) }, { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH) }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084) }, { HID_USB_DEVICE(USB_VENDOR_ID_EZKEY, USB_DEVICE_ID_BTC_8193) }, { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR) }, { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR) },drivers/hid/hid-elecom.c new file +57
-0@@ -0,0 +1,57 @@ +/* +* HID driver for Elecom BM084 (bluetooth mouse). +* Removes a non-existing horizontal wheel from +* the HID descriptor. +* (This module is based on "hid-ortek".) +* +* Copyright (c) 2010 Richard Nauber <[email protected]> +*/ + +/* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the Free +* Software Foundation; either version 2 of the License, or (at your option) +* any later version. +*/ + +#include <linux/device.h> +#include <linux/hid.h> +#include <linux/module.h> + +#include "hid-ids.h" + +static void elecom_report_fixup (struct hid_device *hdev,__u8 *rdesc, +unsigned int rsize) +{ +if (rsize >=48 && rdesc[46 ] ==0x05 && rdesc[47 ] ==0x0c ) { +dev_info (&hdev->dev,"Fixing up Elecom BM084 " +"report descriptor.\n" ); + rdesc[47 ] =0x00 ; + } +} + +static const struct hid_device_id elecom_devices[] = { + {HID_BLUETOOTH_DEVICE (USB_VENDOR_ID_ELECOM ,USB_DEVICE_ID_ELECOM_BM084 )}, + { } +}; +MODULE_DEVICE_TABLE (hid, elecom_devices); + +static struct hid_driver elecom_driver = { + .name ="elecom" , + .id_table = elecom_devices, + .report_fixup = elecom_report_fixup +}; + +static int __init elecom_init (void ) +{ +return hid_register_driver (&elecom_driver); +} + +static void __exit elecom_exit(void) +{ +hid_unregister_driver (&elecom_driver); +} + +module_init (elecom_init); +module_exit (elecom_exit); +MODULE_LICENSE ("GPL" );drivers/hid/hid-ids.h +3
-0@@ -186,6 +186,9 @@#define USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER 0x0001#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH 0x480d +#define USB_VENDOR_ID_ELECOM 0x056e +#define USB_DEVICE_ID_ELECOM_BM084 0x0061 +#define USB_VENDOR_ID_ELO 0x04E7#define USB_DEVICE_ID_ELO_TS2700 0x0020Signature · 1 line
1.6.4.2
Signature · 1 line
Dmitry
Quoted 3 lines · Dmitry Torokhov
Hi Richard,
HID changes shoudl go toJiri (CCed).
Thanks.
Quoted 24 lines
Quoted 24 lines
HID: Fix reporting of nonexistent HWheel for Elecom BM084 (bluetooth mouse).
This patch removes the annoying feature of Elecoms BM084 to constantly scroll to the right. The device can be found at:
http://www.dealextreme.com/details.dx/sku.15402Signed-off-by Richard Nauber <[email protected]>--- drivers/hid/Kconfig | 6 +++++ drivers/hid/Makefile | 1 + drivers/hid/hid-core.c | 1 + drivers/hid/hid-elecom.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++ drivers/hid/hid-ids.h | 3 ++ 5 files changed, 68 insertions(+), 0 deletions(-) create mode 100644 drivers/hid/hid-elecom.cdrivers/hid/Kconfig +0
-0@@ -148,6 +148,12 @@ config HID_EGALAX ---help--- Support for the eGalax dual-touch panel.
Quoted 3 lines
drivers/hid/Kconfig config HID_EGALAX · line 153
Quoted 3 lines
drivers/hid/Kconfig +3
-0+config HID_ELECOM + tristate "ELECOM" + depends on USB_HID
As this is apparently Bluetooth HID device, BT_HIDP would be the correct dependency here, right?
Quoted 101 lines
Quoted 101 lines
drivers/hid/Kconfig +3
-0+ ---help--- + Support for the ELECOM BM084 (bluetooth mouse). + config HID_EZKEY tristate "Ezkey" if EMBEDDED depends on USB_HIDdrivers/hid/Makefile +1
-0@@ -32,6 +32,7 @@ obj-$(CONFIG_HID_CHICONY) += hid-chicony.o obj-$(CONFIG_HID_CYPRESS) += hid-cypress.o obj-$(CONFIG_HID_DRAGONRISE) += hid-drff.o obj-$(CONFIG_HID_EGALAX) += hid-egalax.o +obj-$(CONFIG_HID_ELECOM) += hid-elecom.o obj-$(CONFIG_HID_EZKEY) += hid-ezkey.o obj-$(CONFIG_HID_GYRATION) += hid-gyration.o obj-$(CONFIG_HID_KENSINGTON) += hid-kensington.odrivers/hid/hid-core.c +1
-0@@ -1294,6 +1294,7 @@ static const struct hid_device_id hid_blacklist[] = { { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE) }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0006) }, { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH) }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084) }, { HID_USB_DEVICE(USB_VENDOR_ID_EZKEY, USB_DEVICE_ID_BTC_8193) }, { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR) }, { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR) },drivers/hid/hid-elecom.c new file +57
-0@@ -0,0 +1,57 @@ +/* +* HID driver for Elecom BM084 (bluetooth mouse). +* Removes a non-existing horizontal wheel from +* the HID descriptor. +* (This module is based on "hid-ortek".) +* +* Copyright (c) 2010 Richard Nauber <[email protected]> +*/ + +/* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the Free +* Software Foundation; either version 2 of the License, or (at your option) +* any later version. +*/ + +#include <linux/device.h> +#include <linux/hid.h> +#include <linux/module.h> + +#include "hid-ids.h" + +static void elecom_report_fixup (struct hid_device *hdev,__u8 *rdesc, +unsigned int rsize) +{ +if (rsize >=48 && rdesc[46 ] ==0x05 && rdesc[47 ] ==0x0c ) { +dev_info (&hdev->dev,"Fixing up Elecom BM084 " +"report descriptor.\n" ); + rdesc[47 ] =0x00 ; + } +} + +static const struct hid_device_id elecom_devices[] = { + {HID_BLUETOOTH_DEVICE (USB_VENDOR_ID_ELECOM ,USB_DEVICE_ID_ELECOM_BM084 )}, + { } +}; +MODULE_DEVICE_TABLE (hid, elecom_devices); + +static struct hid_driver elecom_driver = { + .name ="elecom" , + .id_table = elecom_devices, + .report_fixup = elecom_report_fixup +}; + +static int __init elecom_init (void ) +{ +return hid_register_driver (&elecom_driver); +} + +static void __exit elecom_exit(void) +{ +hid_unregister_driver (&elecom_driver); +} + +module_init (elecom_init); +module_exit (elecom_exit); +MODULE_LICENSE ("GPL" );drivers/hid/hid-ids.h +0
-0@@ -186,6 +186,9 @@#define USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER 0x0001#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH 0x480d
Quoted 5 lines
drivers/hid/hid-ids.h line 193
Quoted 5 lines
drivers/hid/hid-ids.h +3
-0+#define USB_VENDOR_ID_ELECOM 0x056e +#define USB_DEVICE_ID_ELECOM_BM084 0x0061 +#define USB_VENDOR_ID_ELO 0x04E7#define USB_DEVICE_ID_ELO_TS2700 0x0020
Thanks,
Signature · 2 lines
Jiri Kosina SUSE Labs, Novell Inc.
Ok, how about this:
-snip-
This patch removes the annoying feature of Elecoms BM084 to constantly scroll to the right. The device can be found at:
http://www.dealextreme.com/details.dx/sku.15402
--- drivers/hid/Kconfig | 6 +++++ drivers/hid/Makefile | 1 + drivers/hid/hid-core.c | 1 + drivers/hid/hid-elecom.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++ drivers/hid/hid-ids.h | 3 ++ 5 files changed, 68 insertions(+), 0 deletions(-) create mode 100644 drivers/hid/hid-elecom.c
drivers/hid/Kconfig +6 -0
@@ -148,6 +148,12 @@ config HID_EGALAX ---help--- Support for the eGalax dual-touch panel. +config HID_ELECOM + tristate "ELECOM" + depends on BT_HIDP + ---help--- + Support for the ELECOM BM084 (bluetooth mouse). + config HID_EZKEY tristate "Ezkey" if EMBEDDED depends on USB_HID
drivers/hid/Makefile +1 -0
@@ -32,6 +32,7 @@ obj-$(CONFIG_HID_CHICONY) += hid-chicony.o obj-$(CONFIG_HID_CYPRESS) += hid-cypress.o obj-$(CONFIG_HID_DRAGONRISE) += hid-drff.o obj-$(CONFIG_HID_EGALAX) += hid-egalax.o +obj-$(CONFIG_HID_ELECOM) += hid-elecom.o obj-$(CONFIG_HID_EZKEY) += hid-ezkey.o obj-$(CONFIG_HID_GYRATION) += hid-gyration.o obj-$(CONFIG_HID_KENSINGTON) += hid-kensington.o
drivers/hid/hid-core.c +1 -0
@@ -1294,6 +1294,7 @@ static const struct hid_device_id hid_blacklist[] = { { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE) }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0006) }, { HID_USB_DEVICE(USB_VENDOR_ID_DWAV, USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH) }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_BM084) }, { HID_USB_DEVICE(USB_VENDOR_ID_EZKEY, USB_DEVICE_ID_BTC_8193) }, { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR) }, { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR) },
drivers/hid/hid-elecom.c new file +57 -0
57 lines not on this page · raw message
drivers/hid/hid-ids.h +3 -0
@@ -186,6 +186,9 @@#define USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER 0x0001#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH 0x480d +#define USB_VENDOR_ID_ELECOM 0x056e +#define USB_DEVICE_ID_ELECOM_BM084 0x0061 +#define USB_VENDOR_ID_ELO 0x04E7#define USB_DEVICE_ID_ELO_TS2700 0x0020
Signature · 6 lines
1.6.4.2 Thanks for the review (and to Dmitry for pointing me into the right direction, spacibo!) Richard
Quoted 1 line · Richard Nauber
Ok, how about this:
[ ... snip ... ]
drivers/hid/hid-elecom.c line 35
Quoted 13 lines
drivers/hid/hid-elecom.c new file +13
-0+static void elecom_report_fixup (struct hid_device *hdev,__u8 *rdesc, +unsigned int rsize) +{ +if (rsize >=48 && rdesc[46 ] ==0x05 && rdesc[47 ] ==0x0c ) { +dev_info (&hdev->dev,"Fixing up Elecom BM084 " +"report descriptor.\n" ); + rdesc[47 ] =0x00 ; + } +} + +static const struct hid_device_id elecom_devices[] = { + {HID_BLUETOOTH_DEVICE (USB_VENDOR_ID_ELECOM ,USB_DEVICE_ID_ELECOM_BM084 )}, + { } heads up and
What is this? :)
I will fix that mess up and apply to my tree.
Thanks for the driver!
Signature · 2 lines
Jiri Kosina SUSE Labs, Novell Inc.
Quoted 4 lines · Jiri Kosina
Quoted 1 line · Richard Nauber
Ok, how about this:
[ ... snip ... ]
Quoted 15 lines
drivers/hid/hid-elecom.c line 35
Quoted 13 lines
drivers/hid/hid-elecom.c new file +13
-0+static void elecom_report_fixup (struct hid_device *hdev,__u8 *rdesc, +unsigned int rsize) +{ +if (rsize >=48 && rdesc[46 ] ==0x05 && rdesc[47 ] ==0x0c ) { +dev_info (&hdev->dev,"Fixing up Elecom BM084 " +"report descriptor.\n" ); + rdesc[47 ] =0x00 ; + } +} + +static const struct hid_device_id elecom_devices[] = { + {HID_BLUETOOTH_DEVICE (USB_VENDOR_ID_ELECOM ,USB_DEVICE_ID_ELECOM_BM084 )}, + { } heads up andWhat is this? :)
Whops, I was looking for that phrase. It is probably missing in an other message :)
Quoted 1 line
I will fix that mess up and apply to my tree.
Thanks for that,
Richard