Skip to content

Commit

Permalink
Merge branch 'acpi_pm_device_sleep_state' into release
Browse files Browse the repository at this point in the history
  • Loading branch information
Len Brown committed Oct 25, 2010
2 parents 38add9b + 761afb8 commit e000f8f
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 10 deletions.
16 changes: 10 additions & 6 deletions drivers/acpi/sleep.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@

u8 sleep_states[ACPI_S_STATE_COUNT];

static u32 acpi_target_sleep_state = ACPI_STATE_S0;

static void acpi_sleep_tts_switch(u32 acpi_state)
{
union acpi_object in_arg = { ACPI_TYPE_INTEGER };
Expand Down Expand Up @@ -79,8 +81,6 @@ static int acpi_sleep_prepare(u32 acpi_state)
}

#ifdef CONFIG_ACPI_SLEEP
static u32 acpi_target_sleep_state = ACPI_STATE_S0;

/*
* The ACPI specification wants us to save NVS memory regions during hibernation
* and to restore them during the subsequent resume. Windows does that also for
Expand Down Expand Up @@ -562,7 +562,7 @@ int acpi_suspend(u32 acpi_state)
return -EINVAL;
}

#ifdef CONFIG_PM_SLEEP
#ifdef CONFIG_PM_OPS
/**
* acpi_pm_device_sleep_state - return preferred power state of ACPI device
* in the system sleep state given by %acpi_target_sleep_state
Expand Down Expand Up @@ -624,15 +624,17 @@ int acpi_pm_device_sleep_state(struct device *dev, int *d_min_p)
* can wake the system. _S0W may be valid, too.
*/
if (acpi_target_sleep_state == ACPI_STATE_S0 ||
(device_may_wakeup(dev) && adev->wakeup.state.enabled &&
(device_may_wakeup(dev) &&
adev->wakeup.sleep_state <= acpi_target_sleep_state)) {
acpi_status status;

acpi_method[3] = 'W';
status = acpi_evaluate_integer(handle, acpi_method, NULL,
&d_max);
if (ACPI_FAILURE(status)) {
d_max = d_min;
if (acpi_target_sleep_state != ACPI_STATE_S0 ||
status != AE_NOT_FOUND)
d_max = d_min;
} else if (d_max < d_min) {
/* Warn the user of the broken DSDT */
printk(KERN_WARNING "ACPI: Wrong value from %s\n",
Expand All @@ -646,7 +648,9 @@ int acpi_pm_device_sleep_state(struct device *dev, int *d_min_p)
*d_min_p = d_min;
return d_max;
}
#endif /* CONFIG_PM_OPS */

#ifdef CONFIG_PM_SLEEP
/**
* acpi_pm_device_sleep_wake - enable or disable the system wake-up
* capability of given device
Expand Down Expand Up @@ -677,7 +681,7 @@ int acpi_pm_device_sleep_wake(struct device *dev, bool enable)

return error;
}
#endif
#endif /* CONFIG_PM_SLEEP */

static void acpi_power_off_prepare(void)
{
Expand Down
12 changes: 8 additions & 4 deletions include/acpi/acpi_bus.h
Original file line number Diff line number Diff line change
Expand Up @@ -389,21 +389,25 @@ struct acpi_pci_root *acpi_pci_find_root(acpi_handle handle);
int acpi_enable_wakeup_device_power(struct acpi_device *dev, int state);
int acpi_disable_wakeup_device_power(struct acpi_device *dev);

#ifdef CONFIG_PM_SLEEP
#ifdef CONFIG_PM_OPS
int acpi_pm_device_sleep_state(struct device *, int *);
int acpi_pm_device_sleep_wake(struct device *, bool);
#else /* !CONFIG_PM_SLEEP */
#else
static inline int acpi_pm_device_sleep_state(struct device *d, int *p)
{
if (p)
*p = ACPI_STATE_D0;
return ACPI_STATE_D3;
}
#endif

#ifdef CONFIG_PM_SLEEP
int acpi_pm_device_sleep_wake(struct device *, bool);
#else
static inline int acpi_pm_device_sleep_wake(struct device *dev, bool enable)
{
return -ENODEV;
}
#endif /* !CONFIG_PM_SLEEP */
#endif

#endif /* CONFIG_ACPI */

Expand Down

0 comments on commit e000f8f

Please sign in to comment.