• Rafael J. Wysocki's avatar
    ACPI / PM: Provide ACPI PM callback routines for subsystems · e5cc8ef3
    Rafael J. Wysocki authored
    Some bus types don't support power management natively, but generally
    there may be device nodes in ACPI tables corresponding to the devices
    whose bus types they are (under ACPI 5 those bus types may be SPI,
    I2C and platform).  If that is the case, standard ACPI power
    management may be applied to those devices, although currently the
    kernel has no means for that.
    
    For this reason, provide a set of routines that may be used as power
    management callbacks for such devices.  This may be done in three
    different ways.
    
     (1) Device drivers handling the devices in question may run
         acpi_dev_pm_attach() in their .probe() routines, which (on
         success) will cause the devices to be added to the general ACPI
         PM domain and ACPI power management will be used for them going
         forward.  Then, acpi_dev_pm_detach() may be used to remove the
         devices from the general ACPI PM domain if ACPI power management
         is not necessary for them any more.
    
     (2) The devices' subsystems may use acpi_subsys_runtime_suspend(),
         acpi_subsys_runtime_resume(), acpi_subsys_prepare(),
         acpi_subsys_suspend_late(), acpi_subsys_resume_early() as their
         power management callbacks in the same way as the general ACPI
         PM domain does that.
    
     (3) The devices' drivers may execute acpi_dev_suspend_late(),
         acpi_dev_resume_early(), acpi_dev_runtime_suspend(),
         acpi_dev_runtime_resume() from their power management callbacks
         as appropriate, if that's absolutely necessary, but it is not
         recommended to do that, because such drivers may not work
         without ACPI support as a result.
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    e5cc8ef3
device_pm.c 19.3 KB