• Andy Lutomirski's avatar
    thinkpad-acpi: Try to use full software mute control · 9a417ec0
    Andy Lutomirski authored
    ThinkPads have hardware volume controls and three buttons to control
    them.  (These are separate from the standard mixer.)  By default,
    the buttons are:
    
     - Mute: Mutes the hardware volume control and, on some models,
       generates KEY_MUTE.
    
     - Up: Unmutes, generates KEY_VOLUMEUP, and increases volume if
       applicable.  (Newer thinkpads only have hardware mute/unmute.)
    
     - Down: Unmutes, generates KEY_VOLUMEDOWN, and decreases volume
       if applicable.
    
    This behavior is unfortunate, since modern userspace will also
    handle the hotkeys and change the other mixer.  If the software
    mixer is muted and the hardware mixer is unmuted and you push mute,
    hilarity ensues as they both switch state.
    
    Rather than adding a lot of complex ALSA integration to fix this,
    just disable the special ThinkPad volume controls when possible.
    This turns the mute and volume buttons into regular buttons, and
    standard software controls will work as expected.
    
    ALSA already knows about the mute light on models with a mute light,
    so everything should just work.
    
    This should also allow us to remove _OSI(Linux) for all ThinkPads.
    
    For future reference: It turns out that we can ask ACPI for one of
    three behaviors directly on very new models.  They are "latch" (the
    default), "none" (no automatic control), and "toggle" (mute unmutes
    when muted).  All of the modes besides "none" seem to be a bit
    buggy, though, and there doesn't seem to be a consistent way to get
    any notification when the HW mute state is changed.
    Signed-off-by: default avatarAndy Lutomirski <luto@mit.edu>
    Acked-by: default avatarHenrique de Moraes Holschuh <hmh@hmh.eng.br>
    Signed-off-by: default avatarDarren Hart <dvhart@linux.intel.com>
    9a417ec0
thinkpad_acpi.c 238 KB