Pull bugzilla-9194 into release branch

This commit is contained in:
Len Brown 2008-01-11 12:27:13 -05:00
commit 02d5bccf8e
6 changed files with 17 additions and 22 deletions

View File

@ -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)
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);

View File

@ -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)
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();

View File

@ -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 */

View File

@ -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);
#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)

View File

@ -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 */

View File

@ -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)
EXPORT_SYMBOL(pm_register); EXPORT_SYMBOL(pm_register);
EXPORT_SYMBOL(pm_send_all); EXPORT_SYMBOL(pm_send_all);
EXPORT_SYMBOL(pm_active);