Device Wake-up for OnNow and Windows 98

Updated: December 4, 2001

The system architecture built on the OnNow design initiative and Advanced Configuration and Power Interface Specification, Revision 1.0 (ACPI) supports a wide range of wake-up devices. This article describes the operating system policies for wake-up devices and the support for wake-up devices offered in Microsoft Windows 98.

On This Page
 Wake-up Overview Wake-up Overview
 Wake-up Policies Wake-up Policies
 Windows 98 Defaults for Wake-up Devices Windows 98 Defaults for Wake-up Devices
*

Wake-up Overview

In the OnNow architecture, any device can claim to support wake-up. These capabilities are reported as defined in bus standard specifications such as the PCI Power Management Specification (PCI-PM) or by specifying a _PRW object under the device in the ACPI namespace. The fact that a device claims to have wake-up capabilities does not necessarily mean that the device will always have that wake-up feature enabled every time the system goes to sleep. Wake-up features are enabled for a device only when requested by an application or when an application performs some action that implies wake-up, such as using the TAPI interface to await an incoming phone call.

Top of pageTop of page

Wake-up Policies

When a device is enabled for wake-up, the combined capabilities of that device and the operating system dictate which sleeping states (S1-S4) are available. The operating system policy is to put the system into the lowest power sleeping state that can support all currently enabled wake-up devices. If a given device is enabled for wake-up and can only wake the system from S1, then the operating system will put the system into the S1 state--even if the system supports S2-S4--because that wake-up device does not support lower system states. To use a lower system state would ignore the end-user's request. In Windows 98, this policy also applies to the S4/BIOS state.

For example, all current USB host controllers only support wake-up from the S1 state from USB devices or device insertion/removal. If the USB host controller is enabled for wake-up, and the user has hibernate (S4) enabled, then Windows 98 will choose the S1 state--that is, the lowest state that still supports wake-up from the USB host controller.

Wake-up signals from devices on peripheral buses, USB devices, PCI add-on cards, Cardbus devices, and so on come through their host bus; their wake-up capabilities are dependent on the capabilities of the host bus. For example, a modem card might support wake-up from the D3 cold state. If it were placed in a system that supports S1-S3, but only supports PME# in S1, then that system could go only into the S1 state with the modem enabled for wake on ring. If the card were placed in a system that supports S1-S3 and that system supports PME in S3, then the system would go into the S3 state with the modem enabled for wake on ring.

Both OEMs and IHVs should consider the behaviors of wake-up devices and their capability dependencies in designing their products.

Top of pageTop of page

Windows 98 Defaults for Wake-up Devices

Several drivers that ship with Windows 98 support wake-up devices natively. Table 1 shows the defaults for which devices support wake-up and when the wake-up feature is enabled.

Table 1. Windows 98 Defaults for Wake-up Devices

DeviceDesktopPortable*

8042 (PS/2 style) keyboard**

Always enabled

Never enabled

8042 (PS/2 style) mouse**

Always enabled

Never enabled

ACPI buttons (lid, power, sleep)

Always enabled

Always enabled

COM ports/modems

When COM port open

When COM port open

RTC

On demand from applications

On demand from applications

USB root hub (device insertion/removal only)

Always enabled

Never enabled

USB keyboard

Always enabled

Never enabled

USB mouse

Always enabled

Never enabled

Other devices

Based on third-party driver

Based on third-party driver

*  A portable is any system with a PC Card controller.
**  Wake-up using 8042 keyboard and mouse is only supported using ACPI mechanisms: the device must have appropriate _PRW and _PSW objects, must set a GPE on wake, and WAK_STS must be cleared accordingly.

OEMs can alter these defaults in their pre-install package by modifying registry flags. Bit 16 of the ConfigFlags variable in the hardware registry node for a device controls whether wake-up is allowed. Setting bit 16 (ConfigFlags set to 00 00 01 00, where bytes are reversed in the registry) will prevent the device from enabling wake-up. Any requests from the driver to enable wake-up from that device will be ignored.

Note that this only affects wake-up originating from the device itself. It does not affect child devices. For example, in a portable, the USB root hub wake-up is disabled. This prevents the root hub itself from generating a wake-up, which it does when devices are inserted or removed. If a device such as a modem on the USB bus is enabled for wake-up, then wake-up will be enabled both for the modem and all parent hubs, including the root hub.

Clearing bit 16 allows the device to function as normal--wake-up will be enabled on demand from drivers and applications.

For example, to prevent keyboard wake-up on a desktop system, do the following:

1.

Find the keyboard hardware node in the registry (probably HKEY_LOCAL_MACHINE\Enum\ACPI\*PNP0303\0).

2.

Set ConfigFlags to the binary value 00 00 01 00.

Call to action for device wake-up in OnNow and Windows 98:

Follow the operating system policies for wake-up devices to support wake-up devices.

For device class power management reference specifications and white papers that provide implementation guidelines, see http://www.microsoft.com/whdc/system/pnppwr/powermgmt/devicepm.mspx. This web site also provides the PCI-PM and ACPI specifications.

For device driver guidelines for implementing power management, see the Windows 98 DDK and the latest version of the Windows 2000 DDK.


Top of pageTop of page