Ver Fonte

PM: Remove bus_type suspend_late()/resume_early() V2

Remove the ->suspend_late() and ->resume_early() callbacks
from struct bus_type V2. These callbacks are legacy stuff
at this point and since there seem to be no in-tree users
we may as well remove them. New users should use dev_pm_ops.

Signed-off-by: Magnus Damm <damm@igel.co.jp>
Acked-by: Pavel Machek <pavel@ucw.cz>
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Magnus Damm há 16 anos atrás
pai
commit
e240b58c79
3 ficheiros alterados com 5 adições e 38 exclusões
  1. 5 29
      Documentation/power/devices.txt
  2. 0 7
      drivers/base/power/main.c
  3. 0 2
      include/linux/device.h

+ 5 - 29
Documentation/power/devices.txt

@@ -75,9 +75,6 @@ may need to apply in domain-specific ways to their devices:
 struct bus_type {
 struct bus_type {
 	...
 	...
 	int  (*suspend)(struct device *dev, pm_message_t state);
 	int  (*suspend)(struct device *dev, pm_message_t state);
-	int  (*suspend_late)(struct device *dev, pm_message_t state);
-
-	int  (*resume_early)(struct device *dev);
 	int  (*resume)(struct device *dev);
 	int  (*resume)(struct device *dev);
 };
 };
 
 
@@ -226,20 +223,7 @@ The phases are seen by driver notifications issued in this order:
 
 
 	This call should handle parts of device suspend logic that require
 	This call should handle parts of device suspend logic that require
 	sleeping.  It probably does work to quiesce the device which hasn't
 	sleeping.  It probably does work to quiesce the device which hasn't
-	been abstracted into class.suspend() or bus.suspend_late().
-
-   3	bus.suspend_late(dev, message) is called with IRQs disabled, and
-	with only one CPU active.  Until the bus.resume_early() phase
-	completes (see later), IRQs are not enabled again.  This method
-	won't be exposed by all busses; for message based busses like USB,
-	I2C, or SPI, device interactions normally require IRQs.  This bus
-	call may be morphed into a driver call with bus-specific parameters.
-
-	This call might save low level hardware state that might otherwise
-	be lost in the upcoming low power state, and actually put the
-	device into a low power state ... so that in some cases the device
-	may stay partly usable until this late.  This "late" call may also
-	help when coping with hardware that behaves badly.
+	been abstracted into class.suspend().
 
 
 The pm_message_t parameter is currently used to refine those semantics
 The pm_message_t parameter is currently used to refine those semantics
 (described later).
 (described later).
@@ -351,19 +335,11 @@ devices processing each phase's calls before the next phase begins.
 
 
 The phases are seen by driver notifications issued in this order:
 The phases are seen by driver notifications issued in this order:
 
 
-   1	bus.resume_early(dev) is called with IRQs disabled, and with
-   	only one CPU active.  As with bus.suspend_late(), this method
-	won't be supported on busses that require IRQs in order to
-	interact with devices.
-
-	This reverses the effects of bus.suspend_late().
-
-   2	bus.resume(dev) is called next.  This may be morphed into a device
-   	driver call with bus-specific parameters; implementations may sleep.
-
-	This reverses the effects of bus.suspend().
+   1	bus.resume(dev) reverses the effects of bus.suspend().  This may
+	be morphed into a device driver call with bus-specific parameters;
+	implementations may sleep.
 
 
-   3	class.resume(dev) is called for devices associated with a class
+   2	class.resume(dev) is called for devices associated with a class
 	that has such a method.  Implementations may sleep.
 	that has such a method.  Implementations may sleep.
 
 
 	This reverses the effects of class.suspend(), and would usually
 	This reverses the effects of class.suspend(), and would usually

+ 0 - 7
drivers/base/power/main.c

@@ -334,9 +334,6 @@ static int device_resume_noirq(struct device *dev, pm_message_t state)
 	if (dev->bus->pm) {
 	if (dev->bus->pm) {
 		pm_dev_dbg(dev, state, "EARLY ");
 		pm_dev_dbg(dev, state, "EARLY ");
 		error = pm_noirq_op(dev, dev->bus->pm, state);
 		error = pm_noirq_op(dev, dev->bus->pm, state);
-	} else if (dev->bus->resume_early) {
-		pm_dev_dbg(dev, state, "legacy EARLY ");
-		error = dev->bus->resume_early(dev);
 	}
 	}
  End:
  End:
 	TRACE_RESUME(error);
 	TRACE_RESUME(error);
@@ -581,10 +578,6 @@ static int device_suspend_noirq(struct device *dev, pm_message_t state)
 	if (dev->bus->pm) {
 	if (dev->bus->pm) {
 		pm_dev_dbg(dev, state, "LATE ");
 		pm_dev_dbg(dev, state, "LATE ");
 		error = pm_noirq_op(dev, dev->bus->pm, state);
 		error = pm_noirq_op(dev, dev->bus->pm, state);
-	} else if (dev->bus->suspend_late) {
-		pm_dev_dbg(dev, state, "legacy LATE ");
-		error = dev->bus->suspend_late(dev, state);
-		suspend_report_result(dev->bus->suspend_late, error);
 	}
 	}
 	return error;
 	return error;
 }
 }

+ 0 - 2
include/linux/device.h

@@ -62,8 +62,6 @@ struct bus_type {
 	void (*shutdown)(struct device *dev);
 	void (*shutdown)(struct device *dev);
 
 
 	int (*suspend)(struct device *dev, pm_message_t state);
 	int (*suspend)(struct device *dev, pm_message_t state);
-	int (*suspend_late)(struct device *dev, pm_message_t state);
-	int (*resume_early)(struct device *dev);
 	int (*resume)(struct device *dev);
 	int (*resume)(struct device *dev);
 
 
 	struct dev_pm_ops *pm;
 	struct dev_pm_ops *pm;