Re: [GIT] HID for 3.12 merge window

From: David Herrmann
Date: Sat Sep 07 2013 - 04:58:01 EST


Hi

On Sat, Sep 7, 2013 at 10:24 AM, Benjamin Tissoires
<benjamin.tissoires@xxxxxxxxx> wrote:
> On Sat, Sep 7, 2013 at 9:31 AM, David Herrmann <dh.herrmann@xxxxxxxxx> wrote:
>> Hi
>>
>> On Sat, Sep 7, 2013 at 5:22 AM, Dmitry Torokhov
>> <dmitry.torokhov@xxxxxxxxx> wrote:
>>> On Fri, Sep 06, 2013 at 06:00:29PM -0700, Linus Torvalds wrote:
>>>> On Fri, Sep 6, 2013 at 5:58 PM, Dmitry Torokhov
>>>> <dmitry.torokhov@xxxxxxxxx> wrote:
>>>> >
>>>> > 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 <dh.herrmann@xxxxxxxxx>
>> Date: Mon Aug 26 19:14:46 2013 +0200
>>
>> Input: introduce BTN/ABS bits for drums and guitars
>>
>> commit 73f8645db1913ab2475ec3c1cee8d5f748963aa7
>> Author: David Herrmann <dh.herrmann@xxxxxxxxx>
>> Date: Mon Aug 26 19:14:47 2013 +0200
>>
>> HID: wiimote: add support for Guitar-Hero drums
>>
>> commit 8e22ecb603c88b7397ab2e80b7b0811b8a1318f5
>> Author: Nicolas Adenis-Lamarre <nicolas.adenis.lamarre@xxxxxxxxx>
>> 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
>>>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 <dh.herrmann@xxxxxxxxx>
>> 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 <dh.herrmann@xxxxxxxxx>
>> 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 <markus@xxxxxxxxxxxxxxx>
>> Signed-off-by: David Herrmann <dh.herrmann@xxxxxxxxx>
>> ---
>> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/