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.

Reply via email to