On Thu, Feb 09, 2012 at 11:51:45AM +0100, Gerd Hoffmann wrote: > Hi, > > >> Pretend that resume was caused by power button */ > >> pm1a->sts |= > >> (ACPI_BITMASK_WAKE_STATUS | > >> ACPI_BITMASK_POWER_BUTTON_STATUS); > > Here we should report real reason for a wakeup (if it can be reported in > > mp1sts that is). > > These are available I guess? > Yes. Once those defines had the same names as ACPI spec, but some kind soul renamed them to be more "descriptive". So forgive me if I will use names that you actually can lookup in ACPI spec.
> /* PM1x_STS */ > #define ACPI_BITMASK_TIMER_STATUS 0x0001 > #define ACPI_BITMASK_BUS_MASTER_STATUS 0x0010 > #define ACPI_BITMASK_GLOBAL_LOCK_STATUS 0x0020 > #define ACPI_BITMASK_POWER_BUTTON_STATUS 0x0100 > #define ACPI_BITMASK_SLEEP_BUTTON_STATUS 0x0200 > #define ACPI_BITMASK_RT_CLOCK_STATUS 0x0400 > #define ACPI_BITMASK_PCIEXP_WAKE_STATUS 0x4000 /* ACPI 3.0 */ > #define ACPI_BITMASK_WAKE_STATUS 0x8000 > Only three of those are actually wakeup source related: PWRBTN_STS (bit 8) RTC_STS (bit 10) PCIEXP_WAKE_STS (bit 14) And of course if system was awoken WAK_STS (bit 15) should be set too. > What do they mean? How would the rtc wakeup be tagged? Set > ACPI_BITMASK_RT_CLOCK_STATUS? Anything I can use for ps/2 kbd/mouse > wakeup? What do you suggest to do when there is nothing usable (such as > qemu monitor command which simply doesn't exist on real hardware)? > RTC will set RTC_STS. In other reply I suggested to use PWRBTN_STS for monitor command wakeup. Other devices are more complicated :( They have to provide _PRW (Power Resources for Wake) method in the device description in DSDT. This method, among other things, specifies which bit in GPE (and which GPE) correspond to the device. -- Gleb.