[PATCH 0/21] ACPI / PM: Switch ACPI bus type and drivers to dev_pm_ops

Rafael J. Wysocki
2012-06-23T21:17:05Z

Hi all,

The following patchset converts the ACPI bus type and all of the ACPI drivers
to the power management handling based on struct dev_pm_ops. It does that in
the following way:

(1) The (unused) pm_message_t argument is dropped from the ACPI driver suspend
callback throughout the tree (patch [1/21]).

(2) A struct dev_pm_ops object is defined for the ACPI bus type (patches
[2-3/21]) in such a way that
(a) driver callbacks from struct acpi_device_ops are executed for drivers
that provide them,
(b) driver callbacks from struct dev_pm_ops are executed for drivers that
provide them,
(c) 0 is returned for the remaining drivers.
Only suspend/resume, freeze/thaw, poweroff/restore bus type callbacks are
defined, because they are sufficient for the transition (they are removed
later on anyway).

(3) All ACPI drivers that use PM callbacks are converted to the PM handling
based on struct dev_pm_ops (patches [4-18/21]).

(4) The ACPI bus type is modified not to execute driver callbacks from
struct acpi_device_ops any more (patch [19/21]). This affects several
x86 platform drivers and the ACPI power meter driver too.

(5) The driver PM callbacks in struct acpi_device_ops are removed
(patch [20/21]).

(6) The ACPI bus type PM callbacks added in step (2) are dropped, because they
aren't necessary any more (the PM core will execute the driver callbacks
directly now).

As a result, the redundant bus type level of PM handling between ACPI drivers
and the PM core is eliminated and the ACPI drivers are now able to define
runtime PM callbacks, proper hibernation callbacks and late/early callbacks
for system suspend/resume.

The patchset has been tested on Toshiba Portege R500 and more testing is in
the works. If there are no objections, I'd like to push if for 3.6 through
the linux-pm tree.

If you want to give it a go, it's available from the pm-acpi branch of the
linux-pm tree. Please note, however, that this branch will be rebased, because
it is based on the linux-pm tree's linux-next branch at the moment.

Thanks,
Rafael