• Robert Schedel's avatar
    HID: Support new variants of Samsung USB IR receiver (0419:0001) · 0810b511
    Robert Schedel authored
    This patch extends the existing Samsung IrDA (0419:0001) quirk file with newly
    reported variants:
    
    * New device variants with 203 byte and 135 byte report descriptors were
      reported to be recognized incorrectly. This patch adds an autodetection for
      those two, using report descriptor size to enable new quirks.
    
    * Any other unknown 0419:0001 variants will now be treated without any quirk
      flags (i.e. IGNORE_HIDINPUT/HIDDEV_FORCE will not be set by default anymore).
    
    More details:
    
    1. Descriptor size 184 bytes ("Satelco bundled remote")
    Already supported since kernel 2.6.25 (my old patch).
    
    2. Descriptor size 203 bytes ("Optronix remote")
    This receiver mostly works with the regular HID input driver. Only when some
    keys are released, another spurious key press event is interpreted due to
    incorrect array ranges. According to HID 1.11, section 6.2.2.5, arrays should
    return a 0 value when no control is asserted, and ranges should go from 1 to
    the number of elements. The patch clips the value with a logical range from
    1..15 (instead of originally 0..18).
    
    Ticket with more information available at
    https://bugs.launchpad.net/bugs/326986
    
    3. Descriptor size 135 bytes ("Gotview remote")
    This receiver has a similar issue than the previous one, i.e. it mostly works
    with regular HID input, except some key press events get stuck on key release.
    The patch clips the array value from 1..14 (instead of originally 0..17).
    
    Ticket with more information available at
    http://bugs.archlinux.org/task/15216
    
    4. Other unknown variants (found one report with 218 bytes,
       but no further information about issues)
    
    For such unknown variants we should refrain from changing any device flags.
    Currently, HIDINPUT is suppressed and HIDDEV is enforced (because in 2.6.25 the
    quirk table did not yet allow differentiating variants and we
    did not expect variants either). Now we should be as strict as
    possible and enable it only for the first variant above.
    Signed-off-by: default avatarRobert Schedel <r.schedel@yahoo.de>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    0810b511
hid-samsung.c 3.36 KB