Advanced Configuration and Power Interface Specification Hewlett-Packard Corporation



Download 7.02 Mb.
Page2/86
Date31.01.2017
Size7.02 Mb.
#13953
1   2   3   4   5   6   7   8   9   ...   86

Contents


1 Introduction 21

1.1    Principal Goals 21

1.2    Power Management Rationale 22

1.3    Legacy Support 23

1.4    OEM Implementation Strategy 23

1.5    Power and Sleep Buttons 23

1.6    ACPI Specification and the Structure Of ACPI 23

1.7    OS and Platform Compliance 25

1.7.1    Platform Implementations of ACPI-defined Interfaces 25

1.7.2    OSPM Implementations 28

1.7.3    OS Requirements 29



1.8    Target Audience 29

1.9    Document Organization 29

1.9.1    ACPI Introduction and Overview 30

1.9.2    Programming Models 30

1.9.3    Implementation Details 30

2    Technical Reference 31

2.1    Related Documents 31

3    Definition of Terms 32

3.1    General ACPI Terminology 32

3.2    Global System State Definitions 37

3.3    Device Power State Definitions 40

3.4    Sleeping State Definitions 41

3.5    Processor Power State Definitions 42

3.6    Device and Processor Performance State Definitions 42

4    ACPI Overview 44

4.1    System Power Management 45

4.2    Power States 45

4.2.1    Power Button 47

4.2.2    Platform Power Management Characteristics 47

4.3    Device Power Management 48

4.3.1    Power Management Standards 48

4.3.2    Device Power States 48

4.3.3    Device Power State Definitions 49



4.4    Controlling Device Power 49

4.4.1    Getting Device Power Capabilities 49

4.4.2    Setting Device Power States 50

4.4.3    Getting Device Power Status 50

4.4.4    Waking the Computer 50

4.4.5    Example: Modem Device Power Management 52



4.5    Processor Power Management 54

4.6    Device and Processor Performance States 55

4.7    Configuration and “Plug and Play” 55

4.7.1    Device Configuration Example: Configuring the Modem 56

4.7.2    NUMA Nodes 56

4.8    System Events 56

4.9    Battery Management 57

4.9.1    Battery Communications 57

4.9.2    Battery Capacity 57

4.9.3    Battery Gas Gauge 58

4.9.4    Low Battery Levels 58

4.9.5 Battery Calibration 60



4.10    Thermal Management 61

4.10.1    Active and Passive Cooling Modes 62

4.10.2    Performance vs. Energy Conservation 62

4.10.3    Acoustics (Noise) 62

4.10.4    Multiple Thermal Zones 62

5    ACPI Hardware Specification 63

5.1    Fixed Hardware Programming Model 63

5.1.1    Functional Fixed Hardware 63



5.2    Generic Hardware Programming Model 64

5.3    Diagram Legends 66

5.4    Register Bit Notation 67

5.5    The ACPI Hardware Model 67

5.5.1    Hardware Reserved Bits 70

5.5.2    Hardware Ignored Bits 71

5.5.3    Hardware Write-Only Bits 71

5.5.4    Cross Device Dependencies 71

5.6    ACPI Hardware Features 71

5.7    ACPI Register Model 73

5.7.1    ACPI Register Summary 76

5.7.2    Fixed Hardware Features 78

5.7.3    Fixed Hardware Registers 87

5.7.4    Generic Hardware Registers 94

6    ACPI Software Programming Model 103

6.1    Overview of the System Description Table Architecture 103

6.1.1    Address Space Translation 105



6.2    ACPI System Description Tables 106

6.2.1    Reserved Bits and Fields 106

6.2.2    Compatibility 107

6.2.3    Address Format 107

6.2.4    Universal Uniform Identifiers (UUID) 108

6.2.5    Root System Description Pointer (RSDP) 108

6.2.6    System Description Table Header 110

6.2.7    Root System Description Table (RSDT) 113

6.2.8    Extended System Description Table (XSDT) 113

6.2.9    Fixed ACPI Description Table (FADT) 114

6.2.10    Firmware ACPI Control Structure (FACS) 125

6.2.11    Definition Blocks 131

6.2.12    Multiple APIC Description Table (MADT) 134

6.2.13    Global System Interrupts 145

6.2.14    Smart Battery Table (SBST) 146

6.2.15    Embedded Controller Boot Resources Table (ECDT) 146

6.2.16    System Resource Affinity Table (SRAT) 148

6.2.17    System Locality Distance Information Table (SLIT) 151

6.2.18    Corrected Platform Error Polling Table (CPEP) 153

6.2.19 Maximum System Characteristics Table (MSCT) 154



6.3    ACPI Namespace 157

Except for names preceded with a ‘\’, the current namespace determines where in the namespace hierarchy a name being created goes and where a name being referenced is found. A name is located by finding the matching name in the current namespace, and then in the parent namespace. If the parent namespace does not contain the name, the search continues recursively upwards until either the name is found or the namespace does not have a parent (the root of the namespace). This indicates that the name is not found. 157

An attempt to access names in the parent of the root will result in the name not being found. 157

6.3.1    Predefined Root Namespaces 158

6.3.2    Objects 159

6.4    Definition Block Encoding 159

6.5    Using the ACPI Control Method Source Language 160

6.5.1    ASL Statements 161

6.5.2    Control Method Execution 161

The object \XYZ.BAR is a static object created when the table that contains the above ASL is loaded. The object \XYZ.FOO.BAR is a dynamic object that is created when the Name (BAR, 7) statement in the FOO method is executed. The object \XYZ.FOOB is a dynamic object created by the \XYZ.FOO method when the Name (\XYZ.FOOB, 3) statement is executed. Notice that the \XYZ.FOOB object is destroyed after the \XYZ.FOO method exits. 163



6.6    ACPI Event Programming Model 169

6.6.1    ACPI Event Programming Model Components 169

6.6.2    Types of ACPI Events 170

6.6.3    Fixed Event Handling 171

6.6.5    General-Purpose Event Handling 172

6.6.6    Device Object Notifications 175

6.6.7 Device Class-Specific Objects 180

6.6.8    Predefined ACPI Names for Objects, Methods, and Resources 183



6.7    Predefined Objects 191

6.7.1    \_GL (Global Lock Mutex) 191

6.7.2    \_OSI (Operating System Interfaces) 191

6.7.3    \_OS (OS Name Object) 194

6.7.4    \_REV (Revision Data Object) 195

6.8    System Configuration Objects 195

6.8.1    _PIC Method 195



7    Device Configuration 196

7.1    Device Identification Objects 196

7.1.1    _ADR (Address) 197

7.1.2    _CID (Compatible ID) 198

7.1.3    _DDN (DOS Device Name) 198

7.1.4    _HID (Hardware ID) 199

7.1.5     _MLS (Multiple Language String) 199

7.1.6 _PLD (Physical Device Location) 200

7.1.7 _STR (String) 206

7.1.8    _SUN (Slot User Number) 207

7.1.9    _UID (Unique ID) 207



7.2    Device Configuration Objects 207

7.2.1    _CDM (Clock Domain) 208

7.2.2 _CRS (Current Resource Settings) 209

7.2.3    _DIS (Disable) 209

7.2.4    _DMA (Direct Memory Access) 209

7.2.5    _FIX (Fixed Register Resource Provider) 212

7.2.6 _GSB (Global System Interrupt Base) 213

7.2.7    _HPP (Hot Plug Parameters) 214

7.2.8    _HPX (Hot Plug Parameter Extensions) 216

7.2.9    _MAT (Multiple APIC Table Entry) 221

7.2.10    _OSC (Operating System Capabilities) 222

7.2.11    _PRS (Possible Resource Settings) 232

7.2.12    _PRT (PCI Routing Table) 232

7.2.13    _PXM (Proximity) 234

7.2.14    _SLI (System Locality Information) 235

7.2.15    _SRS (Set Resource Settings) 239



7.3    Device Insertion, Removal, and Status Objects 239

7.3.1    _EDL (Eject Device List) 241

7.3.2    _EJD (Ejection Dependent Device) 241

7.3.3    _EJx (Eject) 243

7.3.4    _LCK (Lock) 243

7.3.5    _OST (OSPM Status Indication) 244

7.3.6    _RMV (Remove) 248

7.3.7    _STA (Status) 248



7.4    Resource Data Types for ACPI 249

7.4.1    ASL Macros for Resource Descriptors 249

7.4.2    Small Resource Data Type 249

7.4.3    Large Resource Data Type 254



7.5    Other Objects and Control Methods 276

7.5.1    _INI (Init) 276

7.5.2    _DCK (Dock) 277

7.5.3    _BDN (BIOS Dock Name) 277

7.5.4    _REG (Region) 277

7.5.5    _BBN (Base Bus Number) 279

7.5.6    _SEG (Segment) 279

7.5.7    _GLK (Global Lock) 281



8    Power and Performance Management 283

8.1    Declaring a Power Resource Object 283

8.1.1    Defined Child Objects for a Power Resource 284

8.1.2    _OFF 284

8.1.3    _ON 284

8.1.4    _STA (Status) 285

8.2    Device Power Management Objects 285

8.2.1 _DSW (Device Sleep Wake) 287

8.2.2    _PS0 (Power State 0) 287

8.2.3    _PS1 (Power State 1) 287

8.2.4    _PS2 (Power State 2) 288

8.2.5    _PS3 (Power State 3) 288

8.2.6    _PSC (Power State Current) 288

8.2.7    _PR0 (Power Resources for D0) 288

8.2.8    _PR1 (Power Resources for D1) 289

8.2.9    _PR2 (Power Resources for D2) 289

8.2.10    _PR3 (Power Resources for D3hot) 290

8.2.11    _PRW (Power Resources for Wake) 290

8.2.12    _PSW (Power State Wake) 291

8.2.13    _IRC (In Rush Current) 291

8.2.14    _S1D (S1 Device State) 292

8.2.15    _S2D (S2 Device State) 292

8.2.16    _S3D (S3 Device State) 293

8.2.17    _S4D (S4 Device State) 294

8.2.18 _S0W (S0 Device Wake State) 294

8.2.19 _S1W (S1 Device Wake State) 294

8.2.20 _S2W (S2 Device Wake State) 295

8.2.21 _S3W (S3 Device Wake State) 295

8.2.22 _S4W (S4 Device Wake State) 295

8.3    OEM-Supplied System-Level Control Methods 295

8.3.1    \_BFS (Back From Sleep) 296

8.3.2    \_PTS (Prepare To Sleep) 296

8.3.3    \_GTS (Going To Sleep) 297

8.3.4    System \_Sx states 297

8.3.5 _SWS (System Wake Source) 301

8.3.6 \_TTS (Transition To State) 302

8.3.7    \_WAK (System Wake) 302



8.4 OSPM usage of _GTS, _PTS, _TTS, _WAK, and _BFS 303

9    Processor Configuration and Control 306

9.1    Processor Power States 306

9.1.1    Processor Power State C0 308

9.1.2    Processor Power State C1 310

9.1.3    Processor Power State C2 310

9.1.4    Processor Power State C3 310

9.1.5    Additional Processor Power States 311



9.2    Flushing Caches 311

9.3    Power, Performance, and Throttling State Dependencies 312

9.4 Declaring Processors 312

9.4.1    _PDC (Processor Driver Capabilities) 313

9.4.2    Processor Power State Control 314

9.4.3    Processor Throttling Controls 319

9.4.4    Processor Performance Control 325

9.4.5    _PPE (Polling for Platform Errors) 332



9.5    Processor Aggregator Device 332

9.5.1 Logical Processor Idling 332



10    ACPI-Defined Devices and Device Specific Objects 334

10.1    \_SI System Indicators 334

10.1.1    _SST (System Status) 334

10.1.2    _MSG (Message) 334

10.1.3 _BLT (Battery Level Threshold) 334



10.2    Ambient Light Sensor Device 335

10.2.1 Overview 335

10.2.2    _ALI (Ambient Light Illuminance) 336

10.2.3    _ALT (Ambient Light Temperature) 336

10.2.4 _ALC (Ambient Light Color Chromaticity) 337

10.2.5    _ALR (Ambient Light Response) 337

10.2.6    _ALP (Ambient Light Polling) 341

10.2.7    Ambient Light Sensor Events 341

10.2.8    Relationship to Backlight Control Methods 341

10.3    Battery Device 342

10.4    Control Method Lid Device 342

10.4.1    _LID 342



10.5    Control Method Power and Sleep Button Devices 342

10.6    Embedded Controller Device 343

10.7    Generic Container Device 343

10.8    ATA Controller Devices 343

10.8.1    Objects for Both ATA and SATA Controllers 344

10.8.2    IDE Controller Device 345

10.8.3    Serial ATA (SATA) Controller Device 347



10.9    Floppy Controller Device Objects 349

10.9.1    _FDE (Floppy Disk Enumerate) 349

10.9.2    _FDI (Floppy Disk Information) 350

10.9.3    _FDM (Floppy Disk Drive Mode) 351



10.10    GPE Block Device 351

10.10.1    Matching Control Methods for General-Purpose Events in a GPE Block Device 352



10.11    Module Device 352

10.11.1    Describing PCI Bus and Segment Group Numbers under Module Devices 354



10.12    Memory Devices 356

10.12.1    Address Decoding 357

10.12.2 Memory Bandwidth Monitoring and Reporting 357

10.12.3    _OSC Definition for Memory Device 359

10.12.4    Example: Memory Device 359

10.13    _UPC (USB Port Capabilities) 360

10.13.1    USB 2.0 Host Controllers and _UPC and _PLD 364



10.14    Device Object Name Collision 365

10.14.1    _DSM (Device Specific Method) 365



10.15 PC/AT RTC/CMOS Devices 368

10.15.1   PC/AT-compatible RTC/CMOS Devices (PNP0B00) 368

10.15.2 Intel PIIX4-compatible RTC/CMOS Devices (PNP0B01) 369

10.15.3 Dallas Semiconductor-compatible RTC/CMOS Devices (PNP0B02) 370



10.16    User Presence Detection Device 370

10.16.1 _UPD (User Presence Detect) 371

10.16.2    _UPP (User Presence Polling) 371

10.16.3 User Presence Sensor Events 371



10.17 I/O APIC Device 371

10.18    Wake Alarm Device 372

10.18.1 Overview 372

10.18.2    _STP (Set Expired Timer Wake Policy) 374

10.18.3    _STV (Set Timer Value) 375

10.18.4    _TIP (Expired Timer Wake Policy) 375

10.18.5    _TIV (Timer Values) 375

10.18.6 ACPI Wakeup Alarm Events 375

10.18.7 Relationship to Real Time Clock Alarm 375

10.18.8 Example ASL code 376

11    Power Source and Power Meter Devices 379

11.1    Smart Battery Subsystems 379

11.1.1    ACPI Smart Battery Status Change Notification Requirements 381

11.1.2    Smart Battery Objects 382

11.1.3    _SBS (Smart Battery Subsystem) 382



11.2    Control Method Batteries 385

11.2.1    Battery Events 385

11.2.2    Battery Control Methods 386

11.3    AC Adapters and Power Source Objects 398

11.3.1    _PSR (Power Source) 398

11.3.2    _PCL (Power Consumer List) 399

11.3.3    _PIF (Power Source Information) 399

11.3.4    _PRL (Power Source Redundancy List) 400

11.4    Power Meters 400

11.4.1    _PMC (Power Meter Capabilities) 400

11.4.2    _PTP (Power Trip Points) 402

11.4.3    _PMM (Power Meter Measurement) 403

11.4.4    _PAI (Power Averaging Interval) 403

11.4.5    _GAI (Get Averaging Interval) 403

11.4.6    _SHL (Set Hardware Limit) 404

11.4.7    _GHL (Get Hardware Limit) 404

11.4.8    _PMD (Power Metered Devices) 404

11.5    Example: Power Source and Power Meter Namespace 405

13    Thermal Management 407

13.1    Thermal Control 407

13.1.1    Active, Passive, and Critical Policies 408

13.1.2    Dynamically Changing Cooling Temperature Trip Points 409

13.1.3    Detecting Temperature Changes 410

13.1.4    Active Cooling 412

13.1.5    Passive Cooling 412

13.1.6    Critical Shutdown 414

13.2    Cooling Preferences 415

13.2.1    Evaluating Thermal Device Lists 416

13.2.2    Evaluating Device Thermal Relationship Information 416

13.2.3 Fan Device Notifications 417



13.3    Fan Device 417

13.3.1    Fan Objects 417



13.4    Thermal Objects 420

13.4.1    _ACx (Active Cooling) 421

13.4.2    _ALx (Active List) 422

13.4.3    _ART (Active Cooling Relationship Table) 422

13.4.4    _CRT (Critical Temperature) 425

13.4.5    _DTI (Device Temperature Indication) 425

13.4.6    _HOT (Hot Temperature) 425

13.4.7    _NTT (Notification Temperature Threshold) 425

13.4.8    _PSL (Passive List) 426

13.4.9    _PSV (Passive) 426

13.4.10    _RTV (Relative Temperature Values) 426

13.4.11 _SCP (Set Cooling Policy) 427

13.4.12    _TC1 (Thermal Constant 1) 429

13.4.13    _TC2 (Thermal Constant 2) 429

13.4.14    _TMP (Temperature) 430

13.4.15 _TPT (Trip Point Temperature) 430

13.4.16    _TRT (Thermal Relationship Table) 430

13.4.17    _TSP (Thermal Sampling Period) 431

13.4.18 _TST (Temperature Sensor Threshold) 431

13.4.19    _TZD (Thermal Zone Devices) 432

13.4.20    _TZM (Thermal Zone Member) 432

13.4.21    _TZP (Thermal Zone Polling) 432



13.5    Native OS Device Driver Thermal Interfaces 433

13.6    Thermal Zone Interface Requirements 433

13.7    Thermal Zone Examples 434

13.7.1    Example: The Basic Thermal Zone 434

13.7.2    Example: Multiple-Speed Fans 435

13.7.3    Example: Thermal Zone with Multiple Devices 436



14    ACPI Embedded Controller Interface Specification 442

14.1    Embedded Controller Interface Description 442

14.2    Embedded Controller Register Descriptions 445

14.2.1    Embedded Controller Status, EC_SC (R) 445

14.2.2    Embedded Controller Command, EC_SC (W) 446

14.2.3    Embedded Controller Data, EC_DATA (R/W) 446



14.3    Embedded Controller Command Set 446

14.3.1    Read Embedded Controller, RD_EC (0x80) 447

14.3.2    Write Embedded Controller, WR_EC (0x81) 447

14.3.3    Burst Enable Embedded Controller, BE_EC (0x82) 447

14.3.4    Burst Disable Embedded Controller, BD_EC (0x83) 448

14.3.5    Query Embedded Controller, QR_EC (0x84) 448



14.4    SMBus Host Controller Notification Header (Optional), OS_SMB_EVT 448

14.5    Embedded Controller Firmware 448

14.6    Interrupt Model 449

14.6.1    Event Interrupt Model 449

14.6.2    Command Interrupt Model 450

14.7    Embedded Controller Interfacing Algorithms 450

14.8    Embedded Controller Description Information 450

14.9    SMBus Host Controller Interface via Embedded Controller 451

14.9.1    Register Description 451

This register determines the type of SMBus transaction generated on the SMBus. In addition to indicating the protocol type to the SMB-HC, a write to this register initiates the transaction on the SMBus. Notice that bit 7 of the protocol value is used to indicate whether packet error checking should be employed. A value of 1 (one) in this bit indicates that PEC format should be used for the specified protocol, and a value of 0 (zero) indicates the standard (non-PEC) format should be used. 452

14.9.2    Protocol Description 455

14.9.3    SMBus Register Set 458

14.10    SMBus Devices 460

14.10.1    SMBus Device Access Restrictions 460

14.10.2    SMBus Device Command Access Restriction 460

14.11    Defining an Embedded Controller Device in ACPI Namespace 460

14.11.1    Example: EC Definition ASL Code 461



14.12    Defining an EC SMBus Host Controller in ACPI Namespace 461

14.12.1    Example: EC SMBus Host Controller ASL-Code 462



15    ACPI System Management Bus Interface Specification 462

15.1    SMBus Overview 463

15.1.1    SMBus Slave Addresses 463

15.1.2    SMBus Protocols 463

15.1.3    SMBus Status Codes 464

15.1.4    SMBus Command Values 464

15.2    Accessing the SMBus from ASL Code 464

15.2.1    Declaring SMBus Host Controller Objects 464

15.2.2    Declaring SMBus Devices 465

15.2.3    Declaring SMBus Operation Regions 465

15.2.4    Declaring SMBus Fields 466

15.2.5    Declaring and Using an SMBus Data Buffer 468



15.3    Using the SMBus Protocols 469

15.3.1    Read/Write Quick (SMBQuick) 469

15.3.2    Send/Receive Byte (SMBSendReceive) 470

15.3.3    Read/Write Byte (SMBByte) 470

15.3.4    Read/Write Word (SMBWord) 471

15.3.5    Read/Write Block (SMBBlock) 472

15.3.6    Word Process Call (SMBProcessCall) 472

15.3.7    Block Process Call (SMBBlockProcessCall) 473



16    System Address Map Interfaces 474

16.1    INT 15H, E820H - Query System Address Map 475

16.2    E820 Assumptions and Limitations 477

16.3    UEFI GetMemoryMap() Boot Services Function 477

16.4    UEFI Assumptions and Limitations 478

16.5    Example Address Map 479

16.6    Example: Operating System Usage 479

17 Waking and Sleeping 482

17.1    Sleeping States 483

17.1.1    S1 Sleeping State 485

17.1.2    S2 Sleeping State 485

17.1.3    S3 Sleeping State 486

17.1.4    S4 Sleeping State 486

17.1.5    S5 Soft Off State 487

17.1.6 Transitioning from the Working to the Sleeping State 488

17.1.7    Transitioning from the Working to the Soft Off State 488



17.2    Flushing Caches 488

17.3    Initialization 489

17.3.1    Placing the System in ACPI Mode 491

17.3.2    BIOS Initialization of Memory 492

17.3.3    OS Loading 494

17.3.4    Exiting ACPI Mode 495

18 Non-Uniform Memory Access (NUMA) Architecture Platforms 496

18.1 NUMA Node 496

18.2 System Locality 496

18.2.1 System Resource Affinity Table Definition 496



18.3 System Locality Distance Information 497

19    ACPI Platform Error Interfaces (APEI) 499

19.1 Hardware Errors and Error Sources 499

19.2 Relationship between OSPM and System Firmware 500

19.3 Error Source Discovery 500

19.3.1 Boot Error Source 500

19.3.2 ACPI Error Source 502

19.4 Firmware First Error Handling 515

19.4.1 Example: Firmware First Handling Using NMI Notification 515



19.5 Error Serialization 515

19.5.1 Serialization Action Table 516

19.5.2 Operations 522

19.6 Error Injection 526

19.6.1 Error Injection Table (EINJ) 526

19.6.2 Injection Instruction Entries 528

19.6.3 Injection Instructions 529

19.6.4 Trigger Action Table 530

19.6.5 Error Injection Operation 530




Download 7.02 Mb.

Share with your friends:
1   2   3   4   5   6   7   8   9   ...   86




The database is protected by copyright ©ininet.org 2024
send message

    Main page