1. 12 6月, 2010 3 次提交
    • R
      ACPI / ACPICA: Fix low-level GPE manipulation code · fd247447
      Rafael J. Wysocki 提交于
      ACPICA uses acpi_ev_enable_gpe() for enabling GPEs at the low level,
      which is incorrect, because this function only enables the GPE if the
      corresponding bit in its enable register's enable_for_run mask is set.
      This causes acpi_set_gpe() to work incorrectly if used for enabling
      GPEs that were not previously enabled with acpi_enable_gpe().  As a
      result, among other things, wakeup-only GPEs are never enabled by
      acpi_enable_wakeup_device(), so the devices that use them are unable
      to wake up the system.
      
      To fix this issue remove acpi_ev_enable_gpe() and its counterpart
      acpi_ev_disable_gpe() and replace acpi_hw_low_disable_gpe() with
      acpi_hw_low_set_gpe() that will be used instead to manipulate GPE
      enable bits at the low level.  Make the users of acpi_ev_enable_gpe()
      and acpi_ev_disable_gpe() call acpi_hw_low_set_gpe() instead and
      make sure that GPE enable masks are only updated by acpi_enable_gpe()
      and acpi_disable_gpe() when GPE reference counters change from 0
      to 1 and from 1 to 0, respectively.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      fd247447
    • R
      ACPI / ACPICA: Use helper function for computing GPE masks · e4e9a735
      Rafael J. Wysocki 提交于
      In quite a few places ACPICA needs to compute a GPE enable mask with
      only one bit, corresponding to a given GPE, set.  Currently, that
      computation is always open coded which leads to unnecessary code
      duplication.  Fix this by introducing a helper function for computing
      one-bit GPE enable masks and using it where appropriate.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      e4e9a735
    • R
      ACPI / ACPICA: Do not attempt to disable GPE when installing handler · a997ab33
      Rafael J. Wysocki 提交于
      Commit 0f849d2c (ACPICA: Minimize
      the differences between linux GPE code and ACPICA code base)
      introduced a change attempting to disable a GPE before installing
      a handler for it in acpi_install_gpe_handler() which was incorrect.
      First, the GPE disabled by it is never enabled again (except during
      resume) which leads to battery insert/remove events not being
      reported on the Maxim Levitsky's machine.  Second, the disabled
      GPE is still reported as enabled by the sysfs interface that only
      checks its enable register's enable_for_run mask.
      
      Revert this change for now, because it causes more damage to happen
      than the bug it was supposed to fix.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Reported-and-tested-by: NMaxim Levitsky <maximlevitsky@gmail.com>
      Signed-off-by: NLen Brown <len.brown@intel.com>
      a997ab33
  2. 20 4月, 2010 22 次提交
  3. 19 4月, 2010 15 次提交