27.10.2015 Views

Advanced Configuration and Power Interface Specification

ACPI_6.0

ACPI_6.0

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Advanced</strong> <strong>Configuration</strong> <strong>and</strong> <strong>Power</strong> <strong>Interface</strong> <strong>Specification</strong><br />

Operation regions are regions in some space that contain hardware registers for exclusive use by<br />

ACPI control methods. In general, no hardware register (at least byte-granular) within the operation<br />

region accessed by an ACPI control method can be shared with any accesses from any other source,<br />

with the exception of using the Global Lock to share a region with the firmware. The entire<br />

Operation Region can be allocated for exclusive use to the ACPI subsystem in the host OS.<br />

Operation Regions that are defined within the scope of a method are the exception to this rule. These<br />

Operation Regions are known as “Dynamic” since the OS has no idea that they exist or what<br />

registers they use until the control method is executed. Using a Dynamic SystemIO or<br />

SystemMemory Operation Region is not recommended since the OS cannot guarantee exclusive<br />

access. All other types of Operation Regions may be Dynamic.<br />

Operation Regions define the overall base address <strong>and</strong> length of a hardware region, but they cannot<br />

be accessed directly by AML code. A Field object containing one or more FieldUnits is used to<br />

overlay the Operation Region in order to access individual areas of the Region. An individual<br />

FieldUnit within an Operation Region may be as small as one bit, or as large as the length of the<br />

entire Region. FieldUnit values are normalized (shifted <strong>and</strong> masked to the proper length.) The data<br />

type of a FieldUnit can be either a Buffer or an Integer, depending on the bit length of the<br />

FieldUnit. If the FieldUnit is smaller than or equal to the size of an Integer (in bits), it will be treated<br />

as an Integer. If the FieldUnit is larger than the size of an Integer, it will be treated as a Buffer. The<br />

size of an Integer is indicated by the DSDT header’s Revision field. A revision less than 2 indicates<br />

that the size of an Integer is 32 bits. A value greater than or equal to 2 signifies that the size of an<br />

Integer is 64 bits. For more information about data types <strong>and</strong> FieldUnit type conversion rules, see<br />

Section 19.3.5.7, “Data Type Conversion Rules”.<br />

An Operation Region object implicitly supports Mutex synchronization. Updates to the object, or a<br />

Field data object for the region, will automatically synchronize on the Operation Region object;<br />

however, a control method may also explicitly synchronize to a region to prevent other accesses to<br />

the region (from other control methods). Notice that according to the control method execution<br />

model, control method execution is non-preemptive. Because of this, explicit synchronization to an<br />

Operation Region needs to be done only in cases where a control method blocks or yields execution<br />

<strong>and</strong> where the type of register usage requires such synchronization.<br />

The predefined Operation Region types specified in ACPI are shown in the table below:<br />

Table 19-371 Predefined Operation Region types<br />

Name (RegionSpace Keyword)<br />

Value<br />

SystemMemory 0<br />

SystemIO 1<br />

PCI_Config 2<br />

EmbeddedControl 3<br />

SMBus 4<br />

SystemCMOS 5<br />

PCIBARTarget 6<br />

IPMI 7<br />

GeneralPurposeIO 8<br />

GenericSerialbus 9<br />

870 April, 2015 Version 6.0

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

Saved successfully!

Ooh no, something went wrong!