actbl3.h revision 241973
1227896Sjkim/****************************************************************************** 2227896Sjkim * 3227896Sjkim * Name: actbl3.h - ACPI Table Definitions 4227896Sjkim * 5227896Sjkim *****************************************************************************/ 6227896Sjkim 7227896Sjkim/* 8229989Sjkim * Copyright (C) 2000 - 2012, Intel Corp. 9227896Sjkim * All rights reserved. 10227896Sjkim * 11227896Sjkim * Redistribution and use in source and binary forms, with or without 12227896Sjkim * modification, are permitted provided that the following conditions 13227896Sjkim * are met: 14227896Sjkim * 1. Redistributions of source code must retain the above copyright 15227896Sjkim * notice, this list of conditions, and the following disclaimer, 16227896Sjkim * without modification. 17227896Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18227896Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 19227896Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 20227896Sjkim * including a substantially similar Disclaimer requirement for further 21227896Sjkim * binary redistribution. 22227896Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 23227896Sjkim * of any contributors may be used to endorse or promote products derived 24227896Sjkim * from this software without specific prior written permission. 25227896Sjkim * 26227896Sjkim * Alternatively, this software may be distributed under the terms of the 27227896Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 28227896Sjkim * Software Foundation. 29227896Sjkim * 30227896Sjkim * NO WARRANTY 31227896Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32227896Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33227896Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34227896Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35227896Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36227896Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37227896Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38227896Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39227896Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40227896Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41227896Sjkim * POSSIBILITY OF SUCH DAMAGES. 42227896Sjkim */ 43227896Sjkim 44227896Sjkim#ifndef __ACTBL3_H__ 45227896Sjkim#define __ACTBL3_H__ 46227896Sjkim 47227896Sjkim 48227896Sjkim/******************************************************************************* 49227896Sjkim * 50227896Sjkim * Additional ACPI Tables (3) 51227896Sjkim * 52227896Sjkim * These tables are not consumed directly by the ACPICA subsystem, but are 53227896Sjkim * included here to support device drivers and the AML disassembler. 54227896Sjkim * 55227896Sjkim * The tables in this file are fully defined within the ACPI specification. 56227896Sjkim * 57227896Sjkim ******************************************************************************/ 58227896Sjkim 59227896Sjkim 60227896Sjkim/* 61227896Sjkim * Values for description table header signatures for tables defined in this 62227896Sjkim * file. Useful because they make it more difficult to inadvertently type in 63227896Sjkim * the wrong signature. 64227896Sjkim */ 65227896Sjkim#define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */ 66227896Sjkim#define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */ 67227896Sjkim#define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */ 68227896Sjkim#define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */ 69227896Sjkim#define ACPI_SIG_MPST "MPST" /* Memory Power State Table */ 70227896Sjkim#define ACPI_SIG_PCCT "PCCT" /* Platform Communications Channel Table */ 71227896Sjkim#define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */ 72227896Sjkim#define ACPI_SIG_RASF "RASF" /* RAS Feature table */ 73227896Sjkim 74227896Sjkim#define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */ 75227896Sjkim#define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */ 76227896Sjkim 77227896Sjkim/* Reserved table signatures */ 78227896Sjkim 79227896Sjkim#define ACPI_SIG_CSRT "CSRT" /* Core System Resources Table */ 80227896Sjkim#define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */ 81227896Sjkim#define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ 82227896Sjkim#define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ 83227896Sjkim 84227896Sjkim/* 85227896Sjkim * All tables must be byte-packed to match the ACPI specification, since 86227896Sjkim * the tables are provided by the system BIOS. 87227896Sjkim */ 88227896Sjkim#pragma pack(1) 89227896Sjkim 90227896Sjkim/* 91239340Sjkim * Note: C bitfields are not used for this reason: 92239340Sjkim * 93239340Sjkim * "Bitfields are great and easy to read, but unfortunately the C language 94239340Sjkim * does not specify the layout of bitfields in memory, which means they are 95239340Sjkim * essentially useless for dealing with packed data in on-disk formats or 96239340Sjkim * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, 97239340Sjkim * this decision was a design error in C. Ritchie could have picked an order 98239340Sjkim * and stuck with it." Norman Ramsey. 99239340Sjkim * See http://stackoverflow.com/a/1053662/41661 100227896Sjkim */ 101227896Sjkim 102227896Sjkim 103227896Sjkim/******************************************************************************* 104227896Sjkim * 105227896Sjkim * BGRT - Boot Graphics Resource Table (ACPI 5.0) 106227896Sjkim * Version 1 107227896Sjkim * 108227896Sjkim ******************************************************************************/ 109227896Sjkim 110227896Sjkimtypedef struct acpi_table_bgrt 111227896Sjkim{ 112227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 113227896Sjkim UINT16 Version; 114227896Sjkim UINT8 Status; 115227896Sjkim UINT8 ImageType; 116227896Sjkim UINT64 ImageAddress; 117227896Sjkim UINT32 ImageOffsetX; 118227896Sjkim UINT32 ImageOffsetY; 119227896Sjkim 120227896Sjkim} ACPI_TABLE_BGRT; 121227896Sjkim 122227896Sjkim 123227896Sjkim/******************************************************************************* 124227896Sjkim * 125227896Sjkim * DRTM - Dynamic Root of Trust for Measurement table 126227896Sjkim * 127227896Sjkim ******************************************************************************/ 128227896Sjkim 129227896Sjkimtypedef struct acpi_table_drtm 130227896Sjkim{ 131227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 132227896Sjkim UINT64 EntryBaseAddress; 133227896Sjkim UINT64 EntryLength; 134227896Sjkim UINT32 EntryAddress32; 135227896Sjkim UINT64 EntryAddress64; 136227896Sjkim UINT64 ExitAddress; 137227896Sjkim UINT64 LogAreaAddress; 138227896Sjkim UINT32 LogAreaLength; 139227896Sjkim UINT64 ArchDependentAddress; 140227896Sjkim UINT32 Flags; 141227896Sjkim 142227896Sjkim} ACPI_TABLE_DRTM; 143227896Sjkim 144227896Sjkim/* 1) Validated Tables List */ 145227896Sjkim 146227896Sjkimtypedef struct acpi_drtm_vtl_list 147227896Sjkim{ 148227896Sjkim UINT32 ValidatedTableListCount; 149227896Sjkim 150227896Sjkim} ACPI_DRTM_VTL_LIST; 151227896Sjkim 152227896Sjkim/* 2) Resources List */ 153227896Sjkim 154227896Sjkimtypedef struct acpi_drtm_resource_list 155227896Sjkim{ 156227896Sjkim UINT32 ResourceListCount; 157227896Sjkim 158227896Sjkim} ACPI_DRTM_RESOURCE_LIST; 159227896Sjkim 160227896Sjkim/* 3) Platform-specific Identifiers List */ 161227896Sjkim 162227896Sjkimtypedef struct acpi_drtm_id_list 163227896Sjkim{ 164227896Sjkim UINT32 IdListCount; 165227896Sjkim 166227896Sjkim} ACPI_DRTM_ID_LIST; 167227896Sjkim 168227896Sjkim 169227896Sjkim/******************************************************************************* 170227896Sjkim * 171227896Sjkim * FPDT - Firmware Performance Data Table (ACPI 5.0) 172227896Sjkim * Version 1 173227896Sjkim * 174227896Sjkim ******************************************************************************/ 175227896Sjkim 176227896Sjkimtypedef struct acpi_table_fpdt 177227896Sjkim{ 178227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 179227896Sjkim 180227896Sjkim} ACPI_TABLE_FPDT; 181227896Sjkim 182227896Sjkim 183227896Sjkim/* FPDT subtable header */ 184227896Sjkim 185227896Sjkimtypedef struct acpi_fpdt_header 186227896Sjkim{ 187227896Sjkim UINT16 Type; 188227896Sjkim UINT8 Length; 189227896Sjkim UINT8 Revision; 190227896Sjkim 191227896Sjkim} ACPI_FPDT_HEADER; 192227896Sjkim 193227896Sjkim/* Values for Type field above */ 194227896Sjkim 195227896Sjkimenum AcpiFpdtType 196227896Sjkim{ 197227896Sjkim ACPI_FPDT_TYPE_BOOT = 0, 198227896Sjkim ACPI_FPDT_TYPE_S3PERF = 1, 199227896Sjkim}; 200227896Sjkim 201227896Sjkim 202227896Sjkim/* 203227896Sjkim * FPDT subtables 204227896Sjkim */ 205227896Sjkim 206227896Sjkim/* 0: Firmware Basic Boot Performance Record */ 207227896Sjkim 208227896Sjkimtypedef struct acpi_fpdt_boot 209227896Sjkim{ 210227896Sjkim ACPI_FPDT_HEADER Header; 211227896Sjkim UINT8 Reserved[4]; 212227896Sjkim UINT64 ResetEnd; 213227896Sjkim UINT64 LoadStart; 214227896Sjkim UINT64 StartupStart; 215227896Sjkim UINT64 ExitServicesEntry; 216227896Sjkim UINT64 ExitServicesExit; 217227896Sjkim 218227896Sjkim} ACPI_FPDT_BOOT; 219227896Sjkim 220227896Sjkim 221227896Sjkim/* 1: S3 Performance Table Pointer Record */ 222227896Sjkim 223227896Sjkimtypedef struct acpi_fpdt_s3pt_ptr 224227896Sjkim{ 225227896Sjkim ACPI_FPDT_HEADER Header; 226227896Sjkim UINT8 Reserved[4]; 227227896Sjkim UINT64 Address; 228227896Sjkim 229227896Sjkim} ACPI_FPDT_S3PT_PTR; 230227896Sjkim 231227896Sjkim 232227896Sjkim/* 233227896Sjkim * S3PT - S3 Performance Table. This table is pointed to by the 234227896Sjkim * FPDT S3 Pointer Record above. 235227896Sjkim */ 236227896Sjkimtypedef struct acpi_table_s3pt 237227896Sjkim{ 238227896Sjkim UINT8 Signature[4]; /* "S3PT" */ 239227896Sjkim UINT32 Length; 240227896Sjkim 241227896Sjkim} ACPI_TABLE_S3PT; 242227896Sjkim 243227896Sjkim 244227896Sjkim/* 245227896Sjkim * S3PT Subtables 246227896Sjkim */ 247227896Sjkimtypedef struct acpi_s3pt_header 248227896Sjkim{ 249227896Sjkim UINT16 Type; 250227896Sjkim UINT8 Length; 251227896Sjkim UINT8 Revision; 252227896Sjkim 253227896Sjkim} ACPI_S3PT_HEADER; 254227896Sjkim 255227896Sjkim/* Values for Type field above */ 256227896Sjkim 257227896Sjkimenum AcpiS3ptType 258227896Sjkim{ 259227896Sjkim ACPI_S3PT_TYPE_RESUME = 0, 260227896Sjkim ACPI_S3PT_TYPE_SUSPEND = 1, 261227896Sjkim}; 262227896Sjkim 263227896Sjkimtypedef struct acpi_s3pt_resume 264227896Sjkim{ 265227896Sjkim ACPI_S3PT_HEADER Header; 266227896Sjkim UINT32 ResumeCount; 267227896Sjkim UINT64 FullResume; 268227896Sjkim UINT64 AverageResume; 269227896Sjkim 270227896Sjkim} ACPI_S3PT_RESUME; 271227896Sjkim 272227896Sjkimtypedef struct acpi_s3pt_suspend 273227896Sjkim{ 274227896Sjkim ACPI_S3PT_HEADER Header; 275227896Sjkim UINT64 SuspendStart; 276227896Sjkim UINT64 SuspendEnd; 277227896Sjkim 278227896Sjkim} ACPI_S3PT_SUSPEND; 279227896Sjkim 280227896Sjkim 281227896Sjkim/******************************************************************************* 282227896Sjkim * 283227896Sjkim * GTDT - Generic Timer Description Table (ACPI 5.0) 284227896Sjkim * Version 1 285227896Sjkim * 286227896Sjkim ******************************************************************************/ 287227896Sjkim 288227896Sjkimtypedef struct acpi_table_gtdt 289227896Sjkim{ 290227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 291227896Sjkim UINT64 Address; 292227896Sjkim UINT32 Flags; 293227896Sjkim UINT32 SecurePl1Interrupt; 294227896Sjkim UINT32 SecurePl1Flags; 295227896Sjkim UINT32 NonSecurePl1Interrupt; 296227896Sjkim UINT32 NonSecurePl1Flags; 297227896Sjkim UINT32 VirtualTimerInterrupt; 298227896Sjkim UINT32 VirtualTimerFlags; 299227896Sjkim UINT32 NonSecurePl2Interrupt; 300227896Sjkim UINT32 NonSecurePl2Flags; 301227896Sjkim 302227896Sjkim} ACPI_TABLE_GTDT; 303227896Sjkim 304227896Sjkim/* Values for Flags field above */ 305227896Sjkim 306227896Sjkim#define ACPI_GTDT_MAPPED_BLOCK_PRESENT 1 307227896Sjkim 308227896Sjkim/* Values for all "TimerFlags" fields above */ 309227896Sjkim 310227896Sjkim#define ACPI_GTDT_INTERRUPT_MODE 1 311227896Sjkim#define ACPI_GTDT_INTERRUPT_POLARITY 2 312227896Sjkim 313227896Sjkim 314227896Sjkim/******************************************************************************* 315227896Sjkim * 316227896Sjkim * MPST - Memory Power State Table (ACPI 5.0) 317227896Sjkim * Version 1 318227896Sjkim * 319227896Sjkim ******************************************************************************/ 320227896Sjkim 321227896Sjkim#define ACPI_MPST_CHANNEL_INFO \ 322227896Sjkim UINT8 ChannelId; \ 323241973Sjkim UINT8 Reserved1[3]; \ 324241973Sjkim UINT16 PowerNodeCount; \ 325241973Sjkim UINT16 Reserved2; 326227896Sjkim 327227896Sjkim/* Main table */ 328227896Sjkim 329227896Sjkimtypedef struct acpi_table_mpst 330227896Sjkim{ 331227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 332227896Sjkim ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 333227896Sjkim 334227896Sjkim} ACPI_TABLE_MPST; 335227896Sjkim 336227896Sjkim 337227896Sjkim/* Memory Platform Communication Channel Info */ 338227896Sjkim 339227896Sjkimtypedef struct acpi_mpst_channel 340227896Sjkim{ 341227896Sjkim ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ 342227896Sjkim 343227896Sjkim} ACPI_MPST_CHANNEL; 344227896Sjkim 345227896Sjkim 346227896Sjkim/* Memory Power Node Structure */ 347227896Sjkim 348227896Sjkimtypedef struct acpi_mpst_power_node 349227896Sjkim{ 350227896Sjkim UINT8 Flags; 351227896Sjkim UINT8 Reserved1; 352227896Sjkim UINT16 NodeId; 353227896Sjkim UINT32 Length; 354227896Sjkim UINT64 RangeAddress; 355227896Sjkim UINT64 RangeLength; 356241973Sjkim UINT32 NumPowerStates; 357241973Sjkim UINT32 NumPhysicalComponents; 358227896Sjkim 359227896Sjkim} ACPI_MPST_POWER_NODE; 360227896Sjkim 361227896Sjkim/* Values for Flags field above */ 362227896Sjkim 363227896Sjkim#define ACPI_MPST_ENABLED 1 364227896Sjkim#define ACPI_MPST_POWER_MANAGED 2 365227896Sjkim#define ACPI_MPST_HOT_PLUG_CAPABLE 4 366227896Sjkim 367227896Sjkim 368227896Sjkim/* Memory Power State Structure (follows POWER_NODE above) */ 369227896Sjkim 370227896Sjkimtypedef struct acpi_mpst_power_state 371227896Sjkim{ 372227896Sjkim UINT8 PowerState; 373227896Sjkim UINT8 InfoIndex; 374227896Sjkim 375227896Sjkim} ACPI_MPST_POWER_STATE; 376227896Sjkim 377227896Sjkim 378227896Sjkim/* Physical Component ID Structure (follows POWER_STATE above) */ 379227896Sjkim 380227896Sjkimtypedef struct acpi_mpst_component 381227896Sjkim{ 382227896Sjkim UINT16 ComponentId; 383227896Sjkim 384227896Sjkim} ACPI_MPST_COMPONENT; 385227896Sjkim 386227896Sjkim 387227896Sjkim/* Memory Power State Characteristics Structure (follows all POWER_NODEs) */ 388227896Sjkim 389227896Sjkimtypedef struct acpi_mpst_data_hdr 390227896Sjkim{ 391227896Sjkim UINT16 CharacteristicsCount; 392241973Sjkim UINT16 Reserved; 393227896Sjkim 394227896Sjkim} ACPI_MPST_DATA_HDR; 395227896Sjkim 396227896Sjkimtypedef struct acpi_mpst_power_data 397227896Sjkim{ 398241973Sjkim UINT8 StructureId; 399227896Sjkim UINT8 Flags; 400227896Sjkim UINT16 Reserved1; 401227896Sjkim UINT32 AveragePower; 402227896Sjkim UINT32 PowerSaving; 403227896Sjkim UINT64 ExitLatency; 404227896Sjkim UINT64 Reserved2; 405227896Sjkim 406227896Sjkim} ACPI_MPST_POWER_DATA; 407227896Sjkim 408227896Sjkim/* Values for Flags field above */ 409227896Sjkim 410227896Sjkim#define ACPI_MPST_PRESERVE 1 411227896Sjkim#define ACPI_MPST_AUTOENTRY 2 412227896Sjkim#define ACPI_MPST_AUTOEXIT 4 413227896Sjkim 414227896Sjkim 415227896Sjkim/* Shared Memory Region (not part of an ACPI table) */ 416227896Sjkim 417227896Sjkimtypedef struct acpi_mpst_shared 418227896Sjkim{ 419227896Sjkim UINT32 Signature; 420227896Sjkim UINT16 PccCommand; 421227896Sjkim UINT16 PccStatus; 422241973Sjkim UINT32 CommandRegister; 423241973Sjkim UINT32 StatusRegister; 424241973Sjkim UINT32 PowerStateId; 425241973Sjkim UINT32 PowerNodeId; 426227896Sjkim UINT64 EnergyConsumed; 427227896Sjkim UINT64 AveragePower; 428227896Sjkim 429227896Sjkim} ACPI_MPST_SHARED; 430227896Sjkim 431227896Sjkim 432227896Sjkim/******************************************************************************* 433227896Sjkim * 434227896Sjkim * PCCT - Platform Communications Channel Table (ACPI 5.0) 435227896Sjkim * Version 1 436227896Sjkim * 437227896Sjkim ******************************************************************************/ 438227896Sjkim 439227896Sjkimtypedef struct acpi_table_pcct 440227896Sjkim{ 441227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 442227896Sjkim UINT32 Flags; 443227896Sjkim UINT32 Latency; 444227896Sjkim UINT32 Reserved; 445227896Sjkim 446227896Sjkim} ACPI_TABLE_PCCT; 447227896Sjkim 448227896Sjkim/* Values for Flags field above */ 449227896Sjkim 450227896Sjkim#define ACPI_PCCT_DOORBELL 1 451227896Sjkim 452227896Sjkim/* 453227896Sjkim * PCCT subtables 454227896Sjkim */ 455227896Sjkim 456227896Sjkim/* 0: Generic Communications Subspace */ 457227896Sjkim 458227896Sjkimtypedef struct acpi_pcct_subspace 459227896Sjkim{ 460227896Sjkim ACPI_SUBTABLE_HEADER Header; 461227896Sjkim UINT8 Reserved[6]; 462227896Sjkim UINT64 BaseAddress; 463227896Sjkim UINT64 Length; 464227896Sjkim ACPI_GENERIC_ADDRESS DoorbellRegister; 465227896Sjkim UINT64 PreserveMask; 466227896Sjkim UINT64 WriteMask; 467227896Sjkim 468227896Sjkim} ACPI_PCCT_SUBSPACE; 469227896Sjkim 470227896Sjkim 471227896Sjkim/* 472227896Sjkim * PCC memory structures (not part of the ACPI table) 473227896Sjkim */ 474227896Sjkim 475227896Sjkim/* Shared Memory Region */ 476227896Sjkim 477227896Sjkimtypedef struct acpi_pcct_shared_memory 478227896Sjkim{ 479227896Sjkim UINT32 Signature; 480227896Sjkim UINT16 Command; 481227896Sjkim UINT16 Status; 482227896Sjkim 483227896Sjkim} ACPI_PCCT_SHARED_MEMORY; 484227896Sjkim 485227896Sjkim 486227896Sjkim/******************************************************************************* 487227896Sjkim * 488227896Sjkim * PMTT - Platform Memory Topology Table (ACPI 5.0) 489227896Sjkim * Version 1 490227896Sjkim * 491227896Sjkim ******************************************************************************/ 492227896Sjkim 493227896Sjkimtypedef struct acpi_table_pmtt 494227896Sjkim{ 495227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 496227896Sjkim UINT32 Reserved; 497227896Sjkim 498227896Sjkim} ACPI_TABLE_PMTT; 499227896Sjkim 500227896Sjkim 501227896Sjkim/* Common header for PMTT subtables that follow main table */ 502227896Sjkim 503227896Sjkimtypedef struct acpi_pmtt_header 504227896Sjkim{ 505227896Sjkim UINT8 Type; 506227896Sjkim UINT8 Reserved1; 507227896Sjkim UINT16 Length; 508227896Sjkim UINT16 Flags; 509227896Sjkim UINT16 Reserved2; 510227896Sjkim 511227896Sjkim} ACPI_PMTT_HEADER; 512227896Sjkim 513227896Sjkim/* Values for Type field above */ 514227896Sjkim 515227896Sjkim#define ACPI_PMTT_TYPE_SOCKET 0 516227896Sjkim#define ACPI_PMTT_TYPE_CONTROLLER 1 517227896Sjkim#define ACPI_PMTT_TYPE_DIMM 2 518227896Sjkim#define ACPI_PMTT_TYPE_RESERVED 3 /* 0x03-0xFF are reserved */ 519227896Sjkim 520227896Sjkim/* Values for Flags field above */ 521227896Sjkim 522227896Sjkim#define ACPI_PMTT_TOP_LEVEL 0x0001 523227896Sjkim#define ACPI_PMTT_PHYSICAL 0x0002 524227896Sjkim#define ACPI_PMTT_MEMORY_TYPE 0x000C 525227896Sjkim 526227896Sjkim 527227896Sjkim/* 528227896Sjkim * PMTT subtables, correspond to Type in acpi_pmtt_header 529227896Sjkim */ 530227896Sjkim 531227896Sjkim 532227896Sjkim/* 0: Socket Structure */ 533227896Sjkim 534227896Sjkimtypedef struct acpi_pmtt_socket 535227896Sjkim{ 536227896Sjkim ACPI_PMTT_HEADER Header; 537227896Sjkim UINT16 SocketId; 538227896Sjkim UINT16 Reserved; 539227896Sjkim 540227896Sjkim} ACPI_PMTT_SOCKET; 541227896Sjkim 542227896Sjkim 543227896Sjkim/* 1: Memory Controller subtable */ 544227896Sjkim 545227896Sjkimtypedef struct acpi_pmtt_controller 546227896Sjkim{ 547227896Sjkim ACPI_PMTT_HEADER Header; 548227896Sjkim UINT32 ReadLatency; 549227896Sjkim UINT32 WriteLatency; 550227896Sjkim UINT32 ReadBandwidth; 551227896Sjkim UINT32 WriteBandwidth; 552227896Sjkim UINT16 AccessWidth; 553227896Sjkim UINT16 Alignment; 554227896Sjkim UINT16 Reserved; 555227896Sjkim UINT16 DomainCount; 556227896Sjkim 557227896Sjkim} ACPI_PMTT_CONTROLLER; 558227896Sjkim 559227896Sjkim/* 1a: Proximity Domain substructure */ 560227896Sjkim 561227896Sjkimtypedef struct acpi_pmtt_domain 562227896Sjkim{ 563227896Sjkim UINT32 ProximityDomain; 564227896Sjkim 565227896Sjkim} ACPI_PMTT_DOMAIN; 566227896Sjkim 567227896Sjkim 568227896Sjkim/* 2: Physical Component Identifier (DIMM) */ 569227896Sjkim 570227896Sjkimtypedef struct acpi_pmtt_physical_component 571227896Sjkim{ 572227896Sjkim ACPI_PMTT_HEADER Header; 573227896Sjkim UINT16 ComponentId; 574227896Sjkim UINT16 Reserved; 575227896Sjkim UINT32 MemorySize; 576227896Sjkim UINT32 BiosHandle; 577227896Sjkim 578227896Sjkim} ACPI_PMTT_PHYSICAL_COMPONENT; 579227896Sjkim 580227896Sjkim 581227896Sjkim/******************************************************************************* 582227896Sjkim * 583227896Sjkim * RASF - RAS Feature Table (ACPI 5.0) 584227896Sjkim * Version 1 585227896Sjkim * 586227896Sjkim ******************************************************************************/ 587227896Sjkim 588227896Sjkimtypedef struct acpi_table_rasf 589227896Sjkim{ 590227896Sjkim ACPI_TABLE_HEADER Header; /* Common ACPI table header */ 591227896Sjkim UINT8 ChannelId[12]; 592227896Sjkim 593227896Sjkim} ACPI_TABLE_RASF; 594227896Sjkim 595227896Sjkim/* RASF Platform Communication Channel Shared Memory Region */ 596227896Sjkim 597227896Sjkimtypedef struct acpi_rasf_shared_memory 598227896Sjkim{ 599227896Sjkim UINT32 Signature; 600227896Sjkim UINT16 Command; 601227896Sjkim UINT16 Status; 602227896Sjkim UINT64 RequestedAddress; 603227896Sjkim UINT64 RequestedLength; 604227896Sjkim UINT64 ActualAddress; 605227896Sjkim UINT64 ActualLength; 606227896Sjkim UINT16 Flags; 607227896Sjkim UINT8 Speed; 608227896Sjkim 609227896Sjkim} ACPI_RASF_SHARED_MEMORY; 610227896Sjkim 611227896Sjkim/* Masks for Flags and Speed fields above */ 612227896Sjkim 613227896Sjkim#define ACPI_RASF_SCRUBBER_RUNNING 1 614227896Sjkim#define ACPI_RASF_SPEED (7<<1) 615227896Sjkim 616227896Sjkim/* Channel Commands */ 617227896Sjkim 618227896Sjkimenum AcpiRasfCommands 619227896Sjkim{ 620227896Sjkim ACPI_RASF_GET_RAS_CAPABILITIES = 1, 621227896Sjkim ACPI_RASF_GET_PATROL_PARAMETERS = 2, 622227896Sjkim ACPI_RASF_START_PATROL_SCRUBBER = 3, 623227896Sjkim ACPI_RASF_STOP_PATROL_SCRUBBER = 4 624227896Sjkim}; 625227896Sjkim 626227896Sjkim/* Channel Command flags */ 627227896Sjkim 628227896Sjkim#define ACPI_RASF_GENERATE_SCI (1<<15) 629227896Sjkim 630227896Sjkim/* Status values */ 631227896Sjkim 632227896Sjkimenum AcpiRasfStatus 633227896Sjkim{ 634227896Sjkim ACPI_RASF_SUCCESS = 0, 635227896Sjkim ACPI_RASF_NOT_VALID = 1, 636227896Sjkim ACPI_RASF_NOT_SUPPORTED = 2, 637227896Sjkim ACPI_RASF_BUSY = 3, 638227896Sjkim ACPI_RASF_FAILED = 4, 639227896Sjkim ACPI_RASF_ABORTED = 5, 640227896Sjkim ACPI_RASF_INVALID_DATA = 6 641227896Sjkim}; 642227896Sjkim 643227896Sjkim/* Status flags */ 644227896Sjkim 645227896Sjkim#define ACPI_RASF_COMMAND_COMPLETE (1) 646227896Sjkim#define ACPI_RASF_SCI_DOORBELL (1<<1) 647227896Sjkim#define ACPI_RASF_ERROR (1<<2) 648227896Sjkim#define ACPI_RASF_STATUS (0x1F<<3) 649227896Sjkim 650227896Sjkim 651227896Sjkim/* Reset to default packing */ 652227896Sjkim 653227896Sjkim#pragma pack() 654227896Sjkim 655227896Sjkim#endif /* __ACTBL3_H__ */ 656