1. 24 12月, 2010 10 次提交
  2. 11 11月, 2010 1 次提交
    • R
      PM: Allow devices to be removed during late suspend and early resume · d08a5ace
      Rafael J. Wysocki 提交于
      Holding dpm_list_mtx across late suspend and early resume of devices
      is problematic for the PCMCIA subsystem and doesn't allow device
      objects to be removed by late suspend and early resume driver
      callbacks.  This appears to be overly restrictive, as drivers are
      generally allowed to remove device objects in other phases of suspend
      and resume.  Therefore rework dpm_{suspend|resume}_noirq() so that
      they don't have to hold dpm_list_mtx all the time.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      d08a5ace
  3. 29 10月, 2010 2 次提交
  4. 27 10月, 2010 1 次提交
  5. 23 10月, 2010 16 次提交
  6. 22 10月, 2010 1 次提交
    • G
      of/device: Rework to use common platform_device_alloc() for allocating devices · 7096d042
      Grant Likely 提交于
      The current code allocates and manages platform_devices created from
      the device tree manually.  It also uses an unsafe shortcut for
      allocating the platform_device and the resource table at the same
      time. (which I added in the last rework; sorry).
      
      This patch refactors the code to use platform_device_alloc() for
      allocating new devices.  This reduces the amount of custom code
      implemented by of_platform, eliminates the unsafe alloc trick, and has
      the side benefit of letting the platform_bus code manage freeing the
      device data and resources when the device is freed.
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Greg Kroah-Hartman <gregkh@suse.de>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Michal Simek <monstr@monstr.eu>
      7096d042
  7. 20 10月, 2010 1 次提交
  8. 17 10月, 2010 8 次提交
    • N
      PM: Introduce library for device-specific OPPs (v7) · e1f60b29
      Nishanth Menon 提交于
      SoCs have a standard set of tuples consisting of frequency and
      voltage pairs that the device will support per voltage domain. These
      are called Operating Performance Points or OPPs. The actual
      definitions of OPP varies over silicon versions. For a specific domain,
      we can have a set of {frequency, voltage} pairs. As the kernel boots
      and more information is available, a default set of these are activated
      based on the precise nature of device. Further on operation, based on
      conditions prevailing in the system (such as temperature), some OPP
      availability may be temporarily controlled by the SoC frameworks.
      
      To implement an OPP, some sort of power management support is necessary
      hence this library depends on CONFIG_PM.
      
      Contributions include:
      Sanjeev Premi for the initial concept:
      	http://patchwork.kernel.org/patch/50998/
      Kevin Hilman for converting original design to device-based.
      Kevin Hilman and Paul Walmsey for cleaning up many of the function
      abstractions, improvements and data structure handling.
      Romit Dasgupta for using enums instead of opp pointers.
      Thara Gopinath, Eduardo Valentin and Vishwanath BS for fixes and
      cleanups.
      Linus Walleij for recommending this layer be made generic for usage
      in other architectures beyond OMAP and ARM.
      Mark Brown, Andrew Morton, Rafael J. Wysocki, Paul E. McKenney for
      valuable improvements.
      
      Discussions and comments from:
      http://marc.info/?l=linux-omap&m=126033945313269&w=2
      http://marc.info/?l=linux-omap&m=125482970102327&w=2
      http://marc.info/?t=125809247500002&r=1&w=2
      http://marc.info/?l=linux-omap&m=126025973426007&w=2
      http://marc.info/?t=128152609200064&r=1&w=2
      http://marc.info/?t=128468723000002&r=1&w=2
      incorporated.
      
      v1: http://marc.info/?t=128468723000002&r=1&w=2Signed-off-by: NNishanth Menon <nm@ti.com>
      Signed-off-by: NKevin Hilman <khilman@deeprootsystems.com>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      e1f60b29
    • J
      PM: Add sysfs attr for rechecking dev hash from PM trace · d33ac60b
      James Hogan 提交于
      If the device which fails to resume is part of a loadable kernel module
      it won't be checked at startup against the magic number stored in the
      RTC.
      
      Add a read-only sysfs attribute /sys/power/pm_trace_dev_match which
      contains a list of newline separated devices (usually just the one)
      which currently match the last magic number. This allows the device
      which is failing to resume to be found after the modules are loaded
      again.
      Signed-off-by: NJames Hogan <james@albanarts.com>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      d33ac60b
    • J
      PM: Lock PM device list mutex in show_dev_hash() · 2ac21c6b
      James Hogan 提交于
      Lock the PM device list mutex using device_pm_lock() and
      device_pm_unlock() around the list iteration in show_dev_hash().
      
      show_dev_hash() was reverse iterating dpm_list without first locking the
      mutex that the functions in drivers/base/power/main.c lock. I assume
      this was unintentional since there is no comment suggesting why the lock
      might not be necessary.
      Signed-off-by: NJames Hogan <james@albanarts.com>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      2ac21c6b
    • R
      PM / Runtime: Remove idle notification after failing suspend · f71648d7
      Rafael J. Wysocki 提交于
      If runtime suspend of a device fails returning -EAGAIN or -EBUSY,
      which means that it's safe to try to suspend it again, the PM core
      runs the runtime idle helper function for it.  Unfortunately this may
      lead to problems, for example for PCI devices whose drivers don't
      implement the ->runtime_idle() callback, because in that case the
      PCI bus type's ->runtime_idle() always calls pm_runtime_suspend()
      for the given device.  Then, if there's an automatic idle
      notification after the driver's ->runtime_suspend() returning -EAGAIN
      or -EBUSY, it will make the suspend happen again possibly causing a
      busy loop to appear.  To avoid that, remove the idle notification
      after failing runtime suspend of a device altogether and let the
      callers of pm_runtime_suspend() repeat the operation if need be.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: NAlan Stern <stern@rowland.harvard.edu>
      f71648d7
    • R
      PM / Runtime: Reduce code duplication in core helper functions · 71c63122
      Rafael J. Wysocki 提交于
      Reduce code duplication in rpm_idle(), rpm_suspend() and rpm_resume()
      by using local pointers to store callback addresses and moving some
      duplicated code into a separate function.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Reviewed-by: NAlan Stern <stern@rowland.harvard.edu>
      71c63122
    • A
      PM / Runtime: Implement autosuspend support · 15bcb91d
      Alan Stern 提交于
      This patch (as1427) implements the "autosuspend" facility for runtime
      PM.  A few new fields are added to the dev_pm_info structure and
      several new PM helper functions are defined, for telling the PM core
      whether or not a device uses autosuspend, for setting the autosuspend
      delay, and for marking periods of device activity.
      
      Drivers that do not want to use autosuspend can continue using the
      same helper functions as before; their behavior will not change.  In
      addition, drivers supporting autosuspend can also call the old helper
      functions to get the old behavior.
      
      The details are all explained in Documentation/power/runtime_pm.txt
      and Documentation/ABI/testing/sysfs-devices-power.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      15bcb91d
    • A
      PM / Runtime: Add no_callbacks flag · 7490e442
      Alan Stern 提交于
      Some devices, such as USB interfaces, cannot be power-managed
      independently of their parents, i.e., they cannot be put in low power
      while the parent remains at full power.  This patch (as1425) creates a
      new "no_callbacks" flag, which tells the PM core not to invoke the
      runtime-PM callback routines for the such devices but instead to
      assume that the callbacks always succeed.  In addition, the
      non-debugging runtime-PM sysfs attributes for the devices are removed,
      since they are pretty much meaningless.
      
      The advantage of this scheme comes not so much from avoiding the
      callbacks themselves, but rather from the fact that without the need
      for a process context in which to run the callbacks, more work can be
      done in interrupt context.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      7490e442
    • A
      PM / Runtime: Combine runtime PM entry points · 140a6c94
      Alan Stern 提交于
      This patch (as1424) combines the various public entry points for the
      runtime PM routines into three simple functions: one for idle, one for
      suspend, and one for resume.  A new bitflag specifies whether or not
      to increment or decrement the usage_count field.
      
      The new entry points are named __pm_runtime_idle,
      __pm_runtime_suspend, and __pm_runtime_resume, to reflect that they
      are trampolines.  Simultaneously, the corresponding internal routines
      are renamed to rpm_idle, rpm_suspend, and rpm_resume.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      140a6c94