27.10.2015 Views

Advanced Configuration and Power Interface Specification

ACPI_6.0

ACPI_6.0

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ACPI Hardware <strong>Specification</strong><br />

would be called to access this address space. This takes a long time <strong>and</strong> will either adversely affect<br />

the power of the system (when trying to enter a low-power state) or the accuracy of the event (when<br />

trying to get a time stamp value).<br />

Access to fixed hardware by OSPM allows OSPM to control the wake process without having to<br />

load the entire OS. For example, if PCI configuration space access is needed, the bus enumerator is<br />

loaded with all drivers used by the enumerator. Defining these interfaces in fixed hardware at<br />

addresses with which OSPM can communicate without any other driver’s assistance, allows OSPM<br />

to gather information prior to making a decision as to whether it continues loading the entire OS or<br />

puts it back to sleep.<br />

If elements of the OS fail, it may be possible for OSPM to access address spaces that need no driver<br />

support. In such a situation, OSPM will attempt to honor fixed power button requests to transition<br />

the system to the G2 state. In the case where OSPM event h<strong>and</strong>ler is no longer able to respond to<br />

power button events, the power button override feature provides a back-up mechanism to<br />

unconditionally transition the system to the soft-off state.<br />

4.3 Generic Hardware Programming Model<br />

Although the fixed hardware programming model requires hardware registers to be defined at<br />

specific address locations, the generic hardware programming model allows hardware registers to<br />

reside in most address spaces <strong>and</strong> provides system OEMs with a wide degree of flexibility in the<br />

implementation of specific functions in hardware. OSPM directly accesses the fixed hardware<br />

registers, but relies on OEM-provided ACPI Machine Language (AML) code to access generic<br />

hardware registers.<br />

AML code allows the OEM to provide the means for OSPM to control a generic hardware feature’s<br />

control <strong>and</strong> event logic.<br />

The section entitled “ACPI Source Language Reference” describes the ACPI Source Language<br />

(ASL)—a programming language that OEMs use to create AML. The ASL language provides many<br />

of the operators found in common object-oriented programming languages, but it has been<br />

optimized to enable the description of platform power management <strong>and</strong> configuration hardware. An<br />

ASL compiler converts ASL source code to AML, which is a very compact machine language that<br />

the ACPI AML code interpreter executes.<br />

AML does two things:<br />

• Abstracts the hardware from OSPM<br />

• Buffers OEM code from the different OS implementations<br />

One goal of ACPI is to allow the OEM “value added” hardware to remain basically unchanged in an<br />

ACPI configuration. One attribute of value-added hardware is that it is all implemented differently.<br />

To enable OSPM to execute properly on different types of value added hardware, ACPI defines<br />

higher level “control methods” that it calls to perform an action. The OEM provides AML code,<br />

which is associated with control methods, to be executed by OSPM. By providing AML code,<br />

generic hardware can take on almost any form.<br />

Another important goal of ACPI is to provide OS independence. To do this, the OEM AML code has<br />

to execute the same under any ACPI-compatible OS. ACPI allows for this by making the AML code<br />

interpreter part of OSPM. This allows OSPM to take care of synchronizing <strong>and</strong> blocking issues<br />

specific to each particular OS.<br />

Version 6.0 59

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!