Commit 02d5bccf authored by Len Brown's avatar Len Brown

Pull bugzilla-9194 into release branch

parents eba6860a 9f9adecd
...@@ -2256,14 +2256,12 @@ static int __init apm_init(void) ...@@ -2256,14 +2256,12 @@ static int __init apm_init(void)
apm_info.disabled = 1; apm_info.disabled = 1;
return -ENODEV; return -ENODEV;
} }
if (PM_IS_ACTIVE()) { if (pm_flags & PM_ACPI) {
printk(KERN_NOTICE "apm: overridden by ACPI.\n"); printk(KERN_NOTICE "apm: overridden by ACPI.\n");
apm_info.disabled = 1; apm_info.disabled = 1;
return -ENODEV; return -ENODEV;
} }
#ifdef CONFIG_PM_LEGACY pm_flags |= PM_APM;
pm_active = 1;
#endif
/* /*
* Set up a segment that references the real mode segment 0x40 * Set up a segment that references the real mode segment 0x40
...@@ -2366,9 +2364,7 @@ static void __exit apm_exit(void) ...@@ -2366,9 +2364,7 @@ static void __exit apm_exit(void)
kthread_stop(kapmd_task); kthread_stop(kapmd_task);
kapmd_task = NULL; kapmd_task = NULL;
} }
#ifdef CONFIG_PM_LEGACY pm_flags &= ~PM_APM;
pm_active = 0;
#endif
} }
module_init(apm_init); module_init(apm_init);
......
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
#include <linux/list.h> #include <linux/list.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/pm.h> #include <linux/pm.h>
#include <linux/pm_legacy.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/proc_fs.h> #include <linux/proc_fs.h>
#ifdef CONFIG_X86 #ifdef CONFIG_X86
...@@ -764,16 +763,14 @@ static int __init acpi_init(void) ...@@ -764,16 +763,14 @@ static int __init acpi_init(void)
result = acpi_bus_init(); result = acpi_bus_init();
if (!result) { if (!result) {
#ifdef CONFIG_PM_LEGACY if (!(pm_flags & PM_APM))
if (!PM_IS_ACTIVE()) pm_flags |= PM_ACPI;
pm_active = 1;
else { else {
printk(KERN_INFO PREFIX printk(KERN_INFO PREFIX
"APM is already active, exiting\n"); "APM is already active, exiting\n");
disable_acpi(); disable_acpi();
result = -ENODEV; result = -ENODEV;
} }
#endif
} else } else
disable_acpi(); disable_acpi();
......
...@@ -246,6 +246,15 @@ static inline int call_platform_enable_wakeup(struct device *dev, int is_on) ...@@ -246,6 +246,15 @@ static inline int call_platform_enable_wakeup(struct device *dev, int is_on)
device_set_wakeup_enable(dev,val); \ device_set_wakeup_enable(dev,val); \
} while(0) } while(0)
/*
* Global Power Management flags
* Used to keep APM and ACPI from both being active
*/
extern unsigned int pm_flags;
#define PM_APM 1
#define PM_ACPI 2
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* _LINUX_PM_H */ #endif /* _LINUX_PM_H */
...@@ -4,10 +4,6 @@ ...@@ -4,10 +4,6 @@
#ifdef CONFIG_PM_LEGACY #ifdef CONFIG_PM_LEGACY
extern int pm_active;
#define PM_IS_ACTIVE() (pm_active != 0)
/* /*
* Register a device with power management * Register a device with power management
*/ */
...@@ -21,8 +17,6 @@ int __deprecated pm_send_all(pm_request_t rqst, void *data); ...@@ -21,8 +17,6 @@ int __deprecated pm_send_all(pm_request_t rqst, void *data);
#else /* CONFIG_PM_LEGACY */ #else /* CONFIG_PM_LEGACY */
#define PM_IS_ACTIVE() 0
static inline struct pm_dev *pm_register(pm_dev_t type, static inline struct pm_dev *pm_register(pm_dev_t type,
unsigned long id, unsigned long id,
pm_callback callback) pm_callback callback)
......
...@@ -28,6 +28,9 @@ BLOCKING_NOTIFIER_HEAD(pm_chain_head); ...@@ -28,6 +28,9 @@ BLOCKING_NOTIFIER_HEAD(pm_chain_head);
DEFINE_MUTEX(pm_mutex); DEFINE_MUTEX(pm_mutex);
unsigned int pm_flags;
EXPORT_SYMBOL(pm_flags);
#ifdef CONFIG_SUSPEND #ifdef CONFIG_SUSPEND
/* This is just an arbitrary number */ /* This is just an arbitrary number */
......
...@@ -27,8 +27,6 @@ ...@@ -27,8 +27,6 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/mutex.h> #include <linux/mutex.h>
int pm_active;
/* /*
* Locking notes: * Locking notes:
* pm_devs_lock can be a semaphore providing pm ops are not called * pm_devs_lock can be a semaphore providing pm ops are not called
...@@ -204,6 +202,4 @@ int pm_send_all(pm_request_t rqst, void *data) ...@@ -204,6 +202,4 @@ int pm_send_all(pm_request_t rqst, void *data)
EXPORT_SYMBOL(pm_register); EXPORT_SYMBOL(pm_register);
EXPORT_SYMBOL(pm_send_all); EXPORT_SYMBOL(pm_send_all);
EXPORT_SYMBOL(pm_active);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment