• Henrique de Moraes Holschuh's avatar
    thinkpad-acpi: fix volume/mute hotkey poll handling · 5d756db9
    Henrique de Moraes Holschuh authored
    The hotkey polling code is supposed to generate hotkey messages as
    close to the way the IBM event-based volume hotkey firmware does as
    possible, i.e:
    
    * Pressing MUTE issues a mute hotkey event, even if already mute;
    
    * Pressing Volume up/down issues a volume up/down hotkey event,
      even if already at maximum or minumum volume;
    
    * The act of unmuting issues a volume up/down event, depending on
      which hotkey was used to unmute.
    
    Fix the code to do just that (mute handling was incorrect), and handle
    multiple hotkey presses between two polling cycles.
    
    The new code uses the volume_toggle bit in NVRAM only to detect
    repeated presses of the mute key and multiple presses of the volume
    keys trying to go past the end of the volume scale.  This will work
    around a bug in recent Lenovo firmware (e.g. T400), which causes the
    firmware to not update the volume_toggle bit in certain situations.
    Reported-by: default avatarYang Zhe <yangzhe1990@gmail.com>
    Signed-off-by: default avatarHenrique de Moraes Holschuh <hmh@hmh.eng.br>
    5d756db9
thinkpad_acpi.c 231 KB