• Anssi Hannula's avatar
    Input: xpad - fix dpad handling of unknown devices · a0979923
    Anssi Hannula authored
    For devices not specifically listed in xpad.c, xpad->dpad_mapping
    is initially set to MAP_DPAD_UNKNOWN. In xpad_probe() it gets changed
    to either MAP_DPAD_TO_BUTTONS or MAP_DPAD_TO_AXES, depending on the
    module parameter dpad_to_buttons.
    
    However, MAP_DPAD_UNKNOWN is defined as -1, while the field is u8.
    This results in actual value of 255, causing the MAP_DPAD_UNKNOWN
    check in xpad_probe() to fail.
    Fix that by defining MAP_DPAD_UNKNOWN as 2 instead.
    
    Also, setting module parameter dpad_to_buttons to 1 should obviously
    map dpad to buttons, while the default behaviour (0) should be to map
    dpad to axes. However, dpad_to_buttons is directly assigned to
    xpad->dpad_mapping, and as MAP_DPAD_TO_BUTTONS is 0, the actual
    behaviour is reversed.
    Fix that by negating dpad_to_buttons in assignment.
    Signed-off-by: default avatarAnssi Hannula <anssi.hannula@gmail.com>
    Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
    a0979923
xpad.c 22.9 KB