summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael J. Wysocki <rjw@sisk.pl>2011-02-11 00:04:52 +0100
committerRafael J. Wysocki <rjw@sisk.pl>2011-03-15 00:43:15 +0100
commitcd51e61cf4e8b220da37dc35e9c2dc2dc258b4de (patch)
treef2cb7a54e59b0bc238ac14f226214e0fc0817891
parentcb8f51bdadb7969139c2e39c2defd4cde98c1ea8 (diff)
downloadlwn-cd51e61cf4e8b220da37dc35e9c2dc2dc258b4de.tar.gz
lwn-cd51e61cf4e8b220da37dc35e9c2dc2dc258b4de.zip
PM / ACPI: Remove references to pm_flags from bus.c
If direct references to pm_flags are removed from drivers/acpi/bus.c, CONFIG_ACPI will not need to depend on CONFIG_PM any more. Make that happen. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Acked-by: Len Brown <len.brown@intel.com>
-rw-r--r--drivers/acpi/Kconfig1
-rw-r--r--drivers/acpi/bus.c7
-rw-r--r--include/linux/suspend.h6
-rw-r--r--kernel/power/main.c12
4 files changed, 21 insertions, 5 deletions
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index 2aa042a5da6d..3a17ca5fff6f 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -7,7 +7,6 @@ menuconfig ACPI
depends on !IA64_HP_SIM
depends on IA64 || X86
depends on PCI
- depends on PM
select PNP
default y
help
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 7ced61f39492..973b0709972c 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -40,6 +40,7 @@
#include <acpi/acpi_bus.h>
#include <acpi/acpi_drivers.h>
#include <linux/dmi.h>
+#include <linux/suspend.h>
#include "internal.h"
@@ -1025,13 +1026,13 @@ static int __init acpi_init(void)
if (!result) {
pci_mmcfg_late_init();
- if (!(pm_flags & PM_APM))
- pm_flags |= PM_ACPI;
- else {
+ if (pm_apm_enabled()) {
printk(KERN_INFO PREFIX
"APM is already active, exiting\n");
disable_acpi();
result = -ENODEV;
+ } else {
+ pm_set_acpi_flag();
}
} else
disable_acpi();
diff --git a/include/linux/suspend.h b/include/linux/suspend.h
index 5a89e3612875..5e364db8a56a 100644
--- a/include/linux/suspend.h
+++ b/include/linux/suspend.h
@@ -272,6 +272,9 @@ extern int unregister_pm_notifier(struct notifier_block *nb);
register_pm_notifier(&fn##_nb); \
}
+extern bool pm_apm_enabled(void);
+extern void pm_set_acpi_flag(void);
+
/* drivers/base/power/wakeup.c */
extern bool events_check_enabled;
@@ -292,6 +295,9 @@ static inline int unregister_pm_notifier(struct notifier_block *nb)
#define pm_notifier(fn, pri) do { (void)(fn); } while (0)
+static inline bool pm_apm_enabled(void) { return false; }
+static inline void pm_set_acpi_flag(void) {}
+
static inline bool pm_wakeup_pending(void) { return false; }
#endif /* !CONFIG_PM_SLEEP */
diff --git a/kernel/power/main.c b/kernel/power/main.c
index 701853042c28..b5405af48ddb 100644
--- a/kernel/power/main.c
+++ b/kernel/power/main.c
@@ -17,10 +17,20 @@
DEFINE_MUTEX(pm_mutex);
+#ifdef CONFIG_PM_SLEEP
+
unsigned int pm_flags;
EXPORT_SYMBOL(pm_flags);
-#ifdef CONFIG_PM_SLEEP
+bool pm_apm_enabled(void)
+{
+ return !!(pm_flags & PM_APM);
+}
+
+void pm_set_acpi_flag(void)
+{
+ pm_flags |= PM_ACPI;
+}
/* Routines for PM-transition notifications */