Commit 87903ac5 authored by Michael Schierl's avatar Michael Schierl Committed by Linus Torvalds

[PATCH] [APM] Is this the correct way to fix suspend bug introduced

This fixes my APM problems (without them my laptop, Acer TravelMate
210TEV (Celeron 700, 128 MB RAM), hangs after resuming from APM since
2.6.0-test4).

Modified based on comments from Pavel Machek <pavel@suse.cz>, who
has acked the updated patch.
parent 215dd828
......@@ -1201,6 +1201,7 @@ static int suspend(int vetoable)
}
device_suspend(3);
device_power_down(3);
/* serialize with the timer interrupt */
write_seqlock_irq(&xtime_lock);
......@@ -1234,6 +1235,7 @@ static int suspend(int vetoable)
if (err != APM_SUCCESS)
apm_error("suspend", err);
err = (err == APM_SUCCESS) ? 0 : -EIO;
device_power_up();
device_resume();
pm_send_all(PM_RESUME, (void *)0);
queue_event(APM_NORMAL_RESUME, NULL);
......@@ -1252,6 +1254,7 @@ static void standby(void)
{
int err;
device_power_down(3);
/* serialize with the timer interrupt */
write_seqlock_irq(&xtime_lock);
/* If needed, notify drivers here */
......@@ -1261,6 +1264,7 @@ static void standby(void)
err = set_system_power_state(APM_STATE_STANDBY);
if ((err != APM_SUCCESS) && (err != APM_NO_ERROR))
apm_error("standby", err);
device_power_up();
}
static apm_event_t get_event(void)
......
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