1. 26 2月, 2010 1 次提交
    • H
      thinkpad-acpi: lock down video output state access · b525c06c
      Henrique de Moraes Holschuh 提交于
      Given the right combination of ThinkPad and X.org, just reading the
      video output control state is enough to hard-crash X.org.
      
      Until the day I somehow find out a model or BIOS cut date to not
      provide this feature to ThinkPads that can do video switching through
      X RandR, change permissions so that only processes with CAP_SYS_ADMIN
      can access any sort of video output control state.
      
      This bug could be considered a local DoS I suppose, as it allows any
      non-privledged local user to cause some versions of X.org to
      hard-crash some ThinkPads.
      Reported-by: NJidanni <jidanni@jidanni.org>
      Signed-off-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Cc: stable@kernel.org
      b525c06c
  2. 27 12月, 2009 1 次提交
  3. 16 12月, 2009 6 次提交
    • H
      backlight/thinkpad-acpi: issue backlight class events · 6baddba4
      Henrique de Moraes Holschuh 提交于
      Take advantage of the new events capabilities of the backlight class to
      notify userspace of backlight changes.
      Signed-off-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Signed-off-by: NRichard Purdie <rpurdie@linux.intel.com>
      6baddba4
    • H
      5d2eb14d
    • H
      thinkpad-acpi: basic ALSA mixer support (v2) · 0d204c34
      Henrique de Moraes Holschuh 提交于
      Add the basic ALSA mixer functionality.  The mixer is event-driven,
      and will work fine on IBM ThinkPads.  I expect Lenovo ThinkPads will
      cause some trouble with the event interface.
      
      Heavily based on work by Lorne Applebaum <lorne.applebaum@gmail.com>
      and ideas from Matthew Garrett <mjg@redhat.com>.
      Signed-off-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Cc: Lorne Applebaum <lorne.applebaum@gmail.com>
      Cc: Matthew Garrett <mjg@redhat.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      0d204c34
    • H
      thinkpad-acpi: disable volume control · c7ac6291
      Henrique de Moraes Holschuh 提交于
      Disable volume control by default.  It can be enabled at module load
      time by a module parameter (volume_control=1).
      
      The audio control mixer that thinkpad-acpi interacts with is fully
      functional without any drivers, and operated by hotkeys.
      
      The idea behind the console audio control is that the human operator
      is the only one that can interact with it.  The ThinkVantage suite in
      Windows does not allow any software-based overrides, and only does OSD
      (on-screen-display) functions.
      
      The Linux driver will, with the addition of the ALSA interface, try to
      follow and enforce the ThinkVantage UI design:
      
      The user is supposed to use the keyboard hotkeys to interact with the
      console audio control.  The kernel and the desktop environment is
      supposed to cooperate to provide proper user feedback through
      on-screen-display functions.
      
      Distros are urged to not to enable volume control by default.
      Enabling this must be a local admin's decision.  This is the reason
      why there is no Kconfig option.
      
      Keep in mind that all ThinkPads have a normal, main mixer (AC97 or
      HDA) for regular software-based audio control.  We are not talking
      about that mixer here.
      
      Advanced users are, of course, free to enable volume control and do as
      they please.
      Signed-off-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Cc: Lorne Applebaum <lorne.applebaum@gmail.com>
      Cc: Matthew Garrett <mjg@redhat.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      c7ac6291
    • H
      thinkpad-acpi: support MUTE-only ThinkPads · a112ceee
      Henrique de Moraes Holschuh 提交于
      Lenovo removed the extra mixer since the T61 and thereabouts.
      Newer Lenovo models only have the mute gate function, and leave
      the volume control to the HDA mixer.
      
      Until a way to automatically query the firmware about its audio
      control capabilities is discovered (there might not be any), use a
      white/black list.
      
      We will likely need to ask T60 (old and new model) and Z60/Z61 users
      whether they have volume control to populate the black/white list.
      Meanwhile, provide a volume_capabilities parameter that can be used to
      override the defaults.
      Signed-off-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Cc: Lorne Applebaum <lorne.applebaum@gmail.com>
      Cc: Matthew Garrett <mjg@redhat.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      a112ceee
    • H
      thinkpad-acpi: volume subdriver rewrite · 329e4e18
      Henrique de Moraes Holschuh 提交于
      I don't trust the coupled EC writes and SMI calls the current volume
      control code does very much, although it is exactly what the IBM DSDTs
      seem to do (they never do more than a single step though).
      
      Change the driver to stop issuing SMIs, and just drive the EC directly
      to the desired level (DSDTs seem to confirm this will work even on
      very old models like the 570 and 600e/x).
      
      We checkpoint directly to NVRAM (this can be turned off) at
      suspend/shutdown/driver unload, which from what I can see in tbp,
      should also work on every ThinkPad.
      Signed-off-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Cc: Lorne Applebaum <lorne.applebaum@gmail.com>
      Cc: Matthew Garrett <mjg@redhat.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      329e4e18
  4. 10 12月, 2009 1 次提交
  5. 21 9月, 2009 2 次提交
    • H
      thinkpad-acpi: hotkey event driver update · 0d922e3b
      Henrique de Moraes Holschuh 提交于
      Update the HKEY event driver to:
      
      1. Handle better the second-gen firmware, which has no HKEY mask
         support but does report FN+F3, FN+F4 and FN+F12 without the need
         for NVRAM polling.
      
         a) always make the mask-related attributes available in sysfs;
         b) use DMI quirks to detect the second-gen firmware;
         c) properly report that FN+F3, FN+F4 and FN+F12 are enabled,
            and available even on mask-less second-gen firmware;
      
      2. Decouple the issuing of hotkey events towards userspace from
         their reception from the firmware.  ALSA mixer and brightness
         event reporting support will need this feature.
      
      3. Clean up the mess in the hotkey driver a great deal.  It is
         still very convoluted, and wants a full refactoring into a
         proper event API interface, but that is not going to happen
         today.
      
      4. Fully reset firmware interface on resume (restore hotkey
         mask and status).
      
      5. Stop losing polled events for no good reason when changing the
         mask and poll frequencies.  We will still lose them when the
         hotkey_source_mask is changed, as well as any that happened
         between driver suspend and driver resume.
      
      The hotkey subdriver now has the notion of user-space-visible hotkey
      event mask, as well as of the set of "hotkey" events the driver needs
      (because brightness/volume change reports are not just keypress
      reports in most ThinkPad models).
      
      With this rewrite, the ABI level is bumped to 0x020500 should
      userspace need to know it is dealing with the updated hotkey
      subdriver.
      Signed-off-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      0d922e3b
    • H
      thinkpad-acpi: drop HKEY event 0x5010 · 176dd985
      Henrique de Moraes Holschuh 提交于
      HKEY event 0x5010 is useless to us: old ThinkPads don't issue it.  Newer
      ThinkPads won't issue it anymore.  And all ThinkPads issue 0x1010 and
      0x1011 events.
      
      Just silently drop it instead of sending it to userspace.
      Signed-off-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      176dd985
  6. 19 9月, 2009 2 次提交
  7. 02 8月, 2009 1 次提交
    • H
      thinkpad-acpi: remove dock and bay subdrivers · 1f6fc2de
      Henrique de Moraes Holschuh 提交于
      The standard ACPI dock driver can handle the hotplug bays and docks of
      the ThinkPads just fine (including batteries) as of 2.6.27, and the
      code in thinkpad-acpi for the dock and bay subdrivers is currently
      broken anyway...
      
      Userspace needs some love to support the two-stage ejection nicely,
      but it is simple enough to do through udev rules (you don't even need
      HAL) so this wouldn't justify fixing the dock and bay subdrivers,
      either.
      
      That leaves warm-swap bays (_EJ3) support for thinkpad-acpi, as well
      as support for the weird dock of the model 570, but since such support
      has never left the "experimental" stage, it is also not a strong
      enough reason to find a way to fix this code.
      
      Users of ThinkPads with warm-swap bays are urged to request that _EJ3
      support be added to the regular ACPI dock driver, if such feature is
      indeed useful for them.
      Signed-off-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      1f6fc2de
  8. 18 6月, 2009 3 次提交
    • H
      thinkpad-acpi: support the second fan on the X61 · d7377247
      Henrique de Moraes Holschuh 提交于
      Support reading the tachometer of the auxiliary fan of a X60/X61.
      
      It was found out by sheer luck, that bit 0 of EC register 0x31
      (formely HBRV) selects which fan is active for tachometer readings
      through EC 0x84/0x085: 0 for fan1, 1 for fan2.
      
      Many thanks to Christoph Kl??nter, to Whoopie, and to weasel, who
      helped confirm that behaviour.
      
      Fan control through EC HFSP applies to both fans equally, regardless
      of the state of bit 0 of EC 0x31.  That matches the way the DSDT uses
      HFSP.
      
      In order to better support the secondary fan, export a second
      tachometer over hwmon, and add defensive measures to make sure we are
      reading the correct tachometer.
      
      Support for the second fan is whitelist-based, as I have not found
      anything obvious to look for in the DSDT to detect the presence of
      the second fan.
      Signed-off-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      d7377247
    • H
      thinkpad-acpi: forbid the use of HBRV on Lenovo ThinkPads · d7880f10
      Henrique de Moraes Holschuh 提交于
      Forcing thinkpad-acpi to do EC-based brightness control (HBRV) on a
      X61 has very... interesting effects, instead of doing nothing (since
      it doesn't have EC-based backlight control), it causes "weirdness" in
      the fan tachometer readings, for example.
      
      This means the EC register that used to be HBRV has been reused by
      Lenovo for something else, but they didn't remove it from the DSDT.
      
      Make sure the documentation reflects this data, and forbid the user
      from forcing the driver to access HBRV on Lenovo ThinkPads.
      Signed-off-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      d7880f10
    • H
      thinkpad-acpi: enhance led support · f21179a4
      Henrique de Moraes Holschuh 提交于
      Add support for extra LEDs on recent ThinkPads, and avoid registering
      with the led class the LEDs which are not available for a given
      ThinkPad model.
      
      All non-restricted LEDs are always available through the procfs
      interface, as the firmware doesn't care if an attempt is made to
      access an invalid LED.
      Signed-off-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      f21179a4
  9. 13 6月, 2009 1 次提交
  10. 18 4月, 2009 1 次提交
  11. 04 4月, 2009 8 次提交
  12. 16 1月, 2009 3 次提交
  13. 06 1月, 2009 1 次提交
  14. 29 8月, 2008 1 次提交
  15. 21 7月, 2008 2 次提交
  16. 12 6月, 2008 1 次提交
  17. 29 4月, 2008 5 次提交