Thread (15 messages) 15 messages, 5 authors, 2013-09-07

Re: [GIT] HID for 3.12 merge window

From: David Herrmann <hidden>
Date: 2013-09-07 08:57:52
Also in: lkml

Possibly related (same subject, not in this thread)

Hi

On Sat, Sep 7, 2013 at 10:24 AM, Benjamin Tissoires
[off-list ref] wrote:
On Sat, Sep 7, 2013 at 9:31 AM, David Herrmann [off-list ref] wrote:
quoted
Hi

On Sat, Sep 7, 2013 at 5:22 AM, Dmitry Torokhov
[off-list ref] wrote:
quoted
On Fri, Sep 06, 2013 at 06:00:29PM -0700, Linus Torvalds wrote:
quoted
On Fri, Sep 6, 2013 at 5:58 PM, Dmitry Torokhov
[off-list ref] wrote:
quoted
The patch still had problems so I'd revert it and wii bits and try again later.
Ok. Mind giving me a list of commits, so that I don't have to do a
trial-and-error thing? I know the primary commit that causes problems,
but there are commits that seem to depend on it..

Sorry for the delay. I believe you need to revert:

73f8645 HID: wiimote: add support for Guitar-Hero drums
61e0065 Input: introduce BTN/ABS bits for drums and guitars

Hmm... there also was "HID: wiimote: add support for Guitar-Hero
guitars" but I do not see it...
The commits to revert are:

commit 61e00655e9cb82e034eb72b95a51072e718d14a7
Author: David Herrmann [off-list ref]
Date:   Mon Aug 26 19:14:46 2013 +0200

    Input: introduce BTN/ABS bits for drums and guitars

commit 73f8645db1913ab2475ec3c1cee8d5f748963aa7
Author: David Herrmann [off-list ref]
Date:   Mon Aug 26 19:14:47 2013 +0200

    HID: wiimote: add support for Guitar-Hero drums

commit 8e22ecb603c88b7397ab2e80b7b0811b8a1318f5
Author: Nicolas Adenis-Lamarre [off-list ref]
Date:   Mon Aug 26 19:14:48 2013 +0200

    HID: wiimote: add support for Guitar-Hero guitars

Last one is not from me, so I guess that's why Dmitry missed it. And
sorry for the delay, stupid UTC+1..
The bug only occurs for multi-touch devices (their ABS_* bits are
quoted
0x1f), that's why I didn't see it happening during my tests..
If you didn't revert it, yet, attached (and inlined) is a patch which
reverts the ABS_MAX change and just moves the new identifiers in
between the others. On top of 3.12-rc1, this should fix all issues. If
you already reverted the patches, I guess we will just push it in
linux-next again and wait for 3.13?

Thanks
David

(Inlined patch below, also attached to mail as gmail hates long lines)

From 13d549489b4bd2eade719cf2ec8c37724be6e640 Mon Sep 17 00:00:00 2001
From: David Herrmann <redacted>
Date: Sat, 7 Sep 2013 09:17:11 +0200
Subject: [PATCH] Revert/Fix "Input: introduce BTN/ABS bits for drums and
 guitars"

commit 61e00655e9cb82e034eb72b95a51072e718d14a7
Author: David Herrmann [off-list ref]
Date:   Mon Aug 26 19:14:46 2013 +0200

    Input: introduce BTN/ABS bits for drums and guitars

This introduced several new identifiers for drums/guitar devices. However,
it also increased ABS_MAX. Unfortunately, 0x3f is already the maximum we
can use for ABS_MAX due to the limited EVIOCSABS ioctl.

Revert this commit and move the new identifiers somewhere in between. We
need to figure out some other way to add new identifiers for the future.
To avoid this happening again, I added a small comment.

This also fixes an issue where xf86-input-evdev failed on EVIOCGABS() due
to ABS_MAX not being a full mask.

Markus Trippelsdorf [off-list ref]
Signed-off-by: David Herrmann <redacted>
---
 include/linux/mod_devicetable.h |  2 +-
 include/uapi/linux/input.h      | 33 ++++++++++++++++++---------------
 2 files changed, 19 insertions(+), 16 deletions(-)
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
index 329aa30..45e9214 100644
--- a/include/linux/mod_devicetable.h
+++ b/include/linux/mod_devicetable.h
@@ -277,7 +277,7 @@ struct pcmcia_device_id {
 #define INPUT_DEVICE_ID_KEY_MIN_INTERESTING 0x71
 #define INPUT_DEVICE_ID_KEY_MAX 0x2ff
 #define INPUT_DEVICE_ID_REL_MAX 0x0f
-#define INPUT_DEVICE_ID_ABS_MAX 0x4f
+#define INPUT_DEVICE_ID_ABS_MAX 0x3f
 #define INPUT_DEVICE_ID_MSC_MAX 0x07
 #define INPUT_DEVICE_ID_LED_MAX 0x0f
 #define INPUT_DEVICE_ID_SND_MAX 0x07
diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h
index 76457ee..12c33f8 100644
--- a/include/uapi/linux/input.h
+++ b/include/uapi/linux/input.h
@@ -819,8 +819,24 @@ struct input_keymap_entry {

 #define ABS_VOLUME 0x20

+/* Drums and guitars (mostly toys) */
+#define ABS_TOM_FAR_LEFT 0x21
+#define ABS_TOM_LEFT 0x22
+#define ABS_TOM_RIGHT 0x23
+#define ABS_TOM_FAR_RIGHT 0x24
+#define ABS_CYMBAL_FAR_LEFT 0x25
+#define ABS_CYMBAL_LEFT 0x26
+#define ABS_CYMBAL_RIGHT 0x27
+
 #define ABS_MISC 0x28

+/* Drums and guitars continued */
+#define ABS_CYMBAL_FAR_RIGHT 0x29
+#define ABS_BASS 0x2a
+#define ABS_HI_HAT 0x2b
+#define ABS_FRET_BOARD 0x2c /* Guitar fret board, vertical pos */
+#define ABS_WHAMMY_BAR 0x2d /* Guitar whammy bar (or vibrato) */
+
I'm not particularly in favor of adding semantic between ABS_MISC and
ABS_MT_SLOT. We already did that once with the ABS_MT_* stuff, and the
problem comes from devices showing several axes, not really mapped
(like joysticks). These axes are all mapped to ABS_MISC, but the input
core function map them to ABS_MISC+N. This way some joysticks show
multitouch axes and are treated as such, whereas the axis are just
regular absolute axes. (not sure I am clear enough... :( )

Currently, nothing is done in X or in Wayland to detect these false
multitouch devices with a large number of absolute axes. But if we
keep a hole between ABS_MISC and ABS_MT_SLOT, we could add an
heuristic like:
"if all the axes between ABS_MISC and ABS_MT_SLOT are available, then
ABS_MT_SLOT does not mean multitouch, but ABS_MISC+6."
So Xorg just took control over the unused ABS_* slots? Hmm, then I
have no other idea than reverting the 3 patches.
Sadly, that also means there's no way for us to easily extend the
ABS_* bits. If someone has an idea, let me know. But for now I'll just
put the drums/guitar patches on hold.

Thanks
David
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help