--- old/kernel/power/suspend.c 2004-11-25 13:51:15 +0200 +++ new/kernel/power/suspend.c 2004-11-25 13:51:45 +0200 @@ -53,6 +53,7 @@ #include #include #include +#include #include #include "suspend.h" @@ -91,6 +91,8 @@ SUSPEND_DRIVERS_PRE_POWERDOWN, }; +static int pm_suspend_state = 0; + void suspend_drivers_resume(int stage) { switch (stage) { @@ -100,6 +102,12 @@ case SUSPEND_DRIVERS_USED_DEVICES_IRQS_ENABLED: BUG_ON(irqs_disabled()); + if (pm_suspend_state) { + if (pm_send_all(PM_RESUME,(void *)0)) + printk(name_suspend + "Problem while sending resume event\n"); + pm_suspend_state=0; + } break; case SUSPEND_DRIVERS_UNUSED_DEVICES_IRQS_DISABLED: @@ -140,6 +148,14 @@ case SUSPEND_DRIVERS_USED_DEVICES_IRQS_ENABLED: BUG_ON(irqs_disabled()); + if (!pm_suspend_state) { + if (pm_send_all(PM_SUSPEND,(void *)3)) { + printk(name_suspend + "Problem while sending suspend event\n"); + result=1; + } + pm_suspend_state=1; + } break; case SUSPEND_DRIVERS_PRE_POWERDOWN: /* Power down system */