1*1da177e4SLinus Torvalds /****************************************************************************** 2*1da177e4SLinus Torvalds * 3*1da177e4SLinus Torvalds * Name: actbl.h - Table data structures defined in ACPI specification 4*1da177e4SLinus Torvalds * 5*1da177e4SLinus Torvalds *****************************************************************************/ 6*1da177e4SLinus Torvalds 7*1da177e4SLinus Torvalds /* 8*1da177e4SLinus Torvalds * Copyright (C) 2000 - 2005, R. Byron Moore 9*1da177e4SLinus Torvalds * All rights reserved. 10*1da177e4SLinus Torvalds * 11*1da177e4SLinus Torvalds * Redistribution and use in source and binary forms, with or without 12*1da177e4SLinus Torvalds * modification, are permitted provided that the following conditions 13*1da177e4SLinus Torvalds * are met: 14*1da177e4SLinus Torvalds * 1. Redistributions of source code must retain the above copyright 15*1da177e4SLinus Torvalds * notice, this list of conditions, and the following disclaimer, 16*1da177e4SLinus Torvalds * without modification. 17*1da177e4SLinus Torvalds * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18*1da177e4SLinus Torvalds * substantially similar to the "NO WARRANTY" disclaimer below 19*1da177e4SLinus Torvalds * ("Disclaimer") and any redistribution must be conditioned upon 20*1da177e4SLinus Torvalds * including a substantially similar Disclaimer requirement for further 21*1da177e4SLinus Torvalds * binary redistribution. 22*1da177e4SLinus Torvalds * 3. Neither the names of the above-listed copyright holders nor the names 23*1da177e4SLinus Torvalds * of any contributors may be used to endorse or promote products derived 24*1da177e4SLinus Torvalds * from this software without specific prior written permission. 25*1da177e4SLinus Torvalds * 26*1da177e4SLinus Torvalds * Alternatively, this software may be distributed under the terms of the 27*1da177e4SLinus Torvalds * GNU General Public License ("GPL") version 2 as published by the Free 28*1da177e4SLinus Torvalds * Software Foundation. 29*1da177e4SLinus Torvalds * 30*1da177e4SLinus Torvalds * NO WARRANTY 31*1da177e4SLinus Torvalds * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32*1da177e4SLinus Torvalds * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33*1da177e4SLinus Torvalds * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34*1da177e4SLinus Torvalds * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35*1da177e4SLinus Torvalds * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36*1da177e4SLinus Torvalds * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37*1da177e4SLinus Torvalds * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38*1da177e4SLinus Torvalds * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39*1da177e4SLinus Torvalds * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40*1da177e4SLinus Torvalds * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41*1da177e4SLinus Torvalds * POSSIBILITY OF SUCH DAMAGES. 42*1da177e4SLinus Torvalds */ 43*1da177e4SLinus Torvalds 44*1da177e4SLinus Torvalds #ifndef __ACTBL_H__ 45*1da177e4SLinus Torvalds #define __ACTBL_H__ 46*1da177e4SLinus Torvalds 47*1da177e4SLinus Torvalds 48*1da177e4SLinus Torvalds /* 49*1da177e4SLinus Torvalds * Values for description table header signatures 50*1da177e4SLinus Torvalds */ 51*1da177e4SLinus Torvalds #define RSDP_NAME "RSDP" 52*1da177e4SLinus Torvalds #define RSDP_SIG "RSD PTR " /* RSDT Pointer signature */ 53*1da177e4SLinus Torvalds #define APIC_SIG "APIC" /* Multiple APIC Description Table */ 54*1da177e4SLinus Torvalds #define DSDT_SIG "DSDT" /* Differentiated System Description Table */ 55*1da177e4SLinus Torvalds #define FADT_SIG "FACP" /* Fixed ACPI Description Table */ 56*1da177e4SLinus Torvalds #define FACS_SIG "FACS" /* Firmware ACPI Control Structure */ 57*1da177e4SLinus Torvalds #define PSDT_SIG "PSDT" /* Persistent System Description Table */ 58*1da177e4SLinus Torvalds #define RSDT_SIG "RSDT" /* Root System Description Table */ 59*1da177e4SLinus Torvalds #define XSDT_SIG "XSDT" /* Extended System Description Table */ 60*1da177e4SLinus Torvalds #define SSDT_SIG "SSDT" /* Secondary System Description Table */ 61*1da177e4SLinus Torvalds #define SBST_SIG "SBST" /* Smart Battery Specification Table */ 62*1da177e4SLinus Torvalds #define SPIC_SIG "SPIC" /* IOSAPIC table */ 63*1da177e4SLinus Torvalds #define BOOT_SIG "BOOT" /* Boot table */ 64*1da177e4SLinus Torvalds 65*1da177e4SLinus Torvalds 66*1da177e4SLinus Torvalds #define GL_OWNED 0x02 /* Ownership of global lock is bit 1 */ 67*1da177e4SLinus Torvalds 68*1da177e4SLinus Torvalds 69*1da177e4SLinus Torvalds /* 70*1da177e4SLinus Torvalds * Common table types. The base code can remain 71*1da177e4SLinus Torvalds * constant if the underlying tables are changed 72*1da177e4SLinus Torvalds */ 73*1da177e4SLinus Torvalds #define RSDT_DESCRIPTOR struct rsdt_descriptor_rev2 74*1da177e4SLinus Torvalds #define XSDT_DESCRIPTOR struct xsdt_descriptor_rev2 75*1da177e4SLinus Torvalds #define FACS_DESCRIPTOR struct facs_descriptor_rev2 76*1da177e4SLinus Torvalds #define FADT_DESCRIPTOR struct fadt_descriptor_rev2 77*1da177e4SLinus Torvalds 78*1da177e4SLinus Torvalds 79*1da177e4SLinus Torvalds #pragma pack(1) 80*1da177e4SLinus Torvalds 81*1da177e4SLinus Torvalds /* 82*1da177e4SLinus Torvalds * ACPI Version-independent tables 83*1da177e4SLinus Torvalds * 84*1da177e4SLinus Torvalds * NOTE: The tables that are specific to ACPI versions (1.0, 2.0, etc.) 85*1da177e4SLinus Torvalds * are in separate files. 86*1da177e4SLinus Torvalds */ 87*1da177e4SLinus Torvalds struct rsdp_descriptor /* Root System Descriptor Pointer */ 88*1da177e4SLinus Torvalds { 89*1da177e4SLinus Torvalds char signature [8]; /* ACPI signature, contains "RSD PTR " */ 90*1da177e4SLinus Torvalds u8 checksum; /* To make sum of struct == 0 */ 91*1da177e4SLinus Torvalds char oem_id [6]; /* OEM identification */ 92*1da177e4SLinus Torvalds u8 revision; /* Must be 0 for 1.0, 2 for 2.0 */ 93*1da177e4SLinus Torvalds u32 rsdt_physical_address; /* 32-bit physical address of RSDT */ 94*1da177e4SLinus Torvalds u32 length; /* XSDT Length in bytes including hdr */ 95*1da177e4SLinus Torvalds u64 xsdt_physical_address; /* 64-bit physical address of XSDT */ 96*1da177e4SLinus Torvalds u8 extended_checksum; /* Checksum of entire table */ 97*1da177e4SLinus Torvalds char reserved [3]; /* Reserved field must be 0 */ 98*1da177e4SLinus Torvalds }; 99*1da177e4SLinus Torvalds 100*1da177e4SLinus Torvalds 101*1da177e4SLinus Torvalds struct acpi_common_facs /* Common FACS for internal use */ 102*1da177e4SLinus Torvalds { 103*1da177e4SLinus Torvalds u32 *global_lock; 104*1da177e4SLinus Torvalds u64 *firmware_waking_vector; 105*1da177e4SLinus Torvalds u8 vector_width; 106*1da177e4SLinus Torvalds }; 107*1da177e4SLinus Torvalds 108*1da177e4SLinus Torvalds 109*1da177e4SLinus Torvalds #define ACPI_TABLE_HEADER_DEF /* ACPI common table header */ \ 110*1da177e4SLinus Torvalds char signature [4]; /* ACPI signature (4 ASCII characters) */\ 111*1da177e4SLinus Torvalds u32 length; /* Length of table, in bytes, including header */\ 112*1da177e4SLinus Torvalds u8 revision; /* ACPI Specification minor version # */\ 113*1da177e4SLinus Torvalds u8 checksum; /* To make sum of entire table == 0 */\ 114*1da177e4SLinus Torvalds char oem_id [6]; /* OEM identification */\ 115*1da177e4SLinus Torvalds char oem_table_id [8]; /* OEM table identification */\ 116*1da177e4SLinus Torvalds u32 oem_revision; /* OEM revision number */\ 117*1da177e4SLinus Torvalds char asl_compiler_id [4]; /* ASL compiler vendor ID */\ 118*1da177e4SLinus Torvalds u32 asl_compiler_revision; /* ASL compiler revision number */ 119*1da177e4SLinus Torvalds 120*1da177e4SLinus Torvalds 121*1da177e4SLinus Torvalds struct acpi_table_header /* ACPI common table header */ 122*1da177e4SLinus Torvalds { 123*1da177e4SLinus Torvalds ACPI_TABLE_HEADER_DEF 124*1da177e4SLinus Torvalds }; 125*1da177e4SLinus Torvalds 126*1da177e4SLinus Torvalds 127*1da177e4SLinus Torvalds /* 128*1da177e4SLinus Torvalds * MADT values and structures 129*1da177e4SLinus Torvalds */ 130*1da177e4SLinus Torvalds 131*1da177e4SLinus Torvalds /* Values for MADT PCATCompat */ 132*1da177e4SLinus Torvalds 133*1da177e4SLinus Torvalds #define DUAL_PIC 0 134*1da177e4SLinus Torvalds #define MULTIPLE_APIC 1 135*1da177e4SLinus Torvalds 136*1da177e4SLinus Torvalds 137*1da177e4SLinus Torvalds /* Master MADT */ 138*1da177e4SLinus Torvalds 139*1da177e4SLinus Torvalds struct multiple_apic_table 140*1da177e4SLinus Torvalds { 141*1da177e4SLinus Torvalds ACPI_TABLE_HEADER_DEF /* ACPI common table header */ 142*1da177e4SLinus Torvalds u32 local_apic_address; /* Physical address of local APIC */ 143*1da177e4SLinus Torvalds u32 PCATcompat : 1; /* A one indicates system also has dual 8259s */ 144*1da177e4SLinus Torvalds u32 reserved1 : 31; 145*1da177e4SLinus Torvalds }; 146*1da177e4SLinus Torvalds 147*1da177e4SLinus Torvalds 148*1da177e4SLinus Torvalds /* Values for Type in APIC_HEADER_DEF */ 149*1da177e4SLinus Torvalds 150*1da177e4SLinus Torvalds #define APIC_PROCESSOR 0 151*1da177e4SLinus Torvalds #define APIC_IO 1 152*1da177e4SLinus Torvalds #define APIC_XRUPT_OVERRIDE 2 153*1da177e4SLinus Torvalds #define APIC_NMI 3 154*1da177e4SLinus Torvalds #define APIC_LOCAL_NMI 4 155*1da177e4SLinus Torvalds #define APIC_ADDRESS_OVERRIDE 5 156*1da177e4SLinus Torvalds #define APIC_IO_SAPIC 6 157*1da177e4SLinus Torvalds #define APIC_LOCAL_SAPIC 7 158*1da177e4SLinus Torvalds #define APIC_XRUPT_SOURCE 8 159*1da177e4SLinus Torvalds #define APIC_RESERVED 9 /* 9 and greater are reserved */ 160*1da177e4SLinus Torvalds 161*1da177e4SLinus Torvalds /* 162*1da177e4SLinus Torvalds * MADT sub-structures (Follow MULTIPLE_APIC_DESCRIPTION_TABLE) 163*1da177e4SLinus Torvalds */ 164*1da177e4SLinus Torvalds #define APIC_HEADER_DEF /* Common APIC sub-structure header */\ 165*1da177e4SLinus Torvalds u8 type; \ 166*1da177e4SLinus Torvalds u8 length; 167*1da177e4SLinus Torvalds 168*1da177e4SLinus Torvalds struct apic_header 169*1da177e4SLinus Torvalds { 170*1da177e4SLinus Torvalds APIC_HEADER_DEF 171*1da177e4SLinus Torvalds }; 172*1da177e4SLinus Torvalds 173*1da177e4SLinus Torvalds /* Values for MPS INTI flags */ 174*1da177e4SLinus Torvalds 175*1da177e4SLinus Torvalds #define POLARITY_CONFORMS 0 176*1da177e4SLinus Torvalds #define POLARITY_ACTIVE_HIGH 1 177*1da177e4SLinus Torvalds #define POLARITY_RESERVED 2 178*1da177e4SLinus Torvalds #define POLARITY_ACTIVE_LOW 3 179*1da177e4SLinus Torvalds 180*1da177e4SLinus Torvalds #define TRIGGER_CONFORMS 0 181*1da177e4SLinus Torvalds #define TRIGGER_EDGE 1 182*1da177e4SLinus Torvalds #define TRIGGER_RESERVED 2 183*1da177e4SLinus Torvalds #define TRIGGER_LEVEL 3 184*1da177e4SLinus Torvalds 185*1da177e4SLinus Torvalds /* Common flag definitions */ 186*1da177e4SLinus Torvalds 187*1da177e4SLinus Torvalds #define MPS_INTI_FLAGS \ 188*1da177e4SLinus Torvalds u16 polarity : 2; /* Polarity of APIC I/O input signals */\ 189*1da177e4SLinus Torvalds u16 trigger_mode : 2; /* Trigger mode of APIC input signals */\ 190*1da177e4SLinus Torvalds u16 reserved1 : 12; /* Reserved, must be zero */ 191*1da177e4SLinus Torvalds 192*1da177e4SLinus Torvalds #define LOCAL_APIC_FLAGS \ 193*1da177e4SLinus Torvalds u32 processor_enabled: 1; /* Processor is usable if set */\ 194*1da177e4SLinus Torvalds u32 reserved2 : 31; /* Reserved, must be zero */ 195*1da177e4SLinus Torvalds 196*1da177e4SLinus Torvalds /* Sub-structures for MADT */ 197*1da177e4SLinus Torvalds 198*1da177e4SLinus Torvalds struct madt_processor_apic 199*1da177e4SLinus Torvalds { 200*1da177e4SLinus Torvalds APIC_HEADER_DEF 201*1da177e4SLinus Torvalds u8 processor_id; /* ACPI processor id */ 202*1da177e4SLinus Torvalds u8 local_apic_id; /* Processor's local APIC id */ 203*1da177e4SLinus Torvalds LOCAL_APIC_FLAGS 204*1da177e4SLinus Torvalds }; 205*1da177e4SLinus Torvalds 206*1da177e4SLinus Torvalds struct madt_io_apic 207*1da177e4SLinus Torvalds { 208*1da177e4SLinus Torvalds APIC_HEADER_DEF 209*1da177e4SLinus Torvalds u8 io_apic_id; /* I/O APIC ID */ 210*1da177e4SLinus Torvalds u8 reserved; /* Reserved - must be zero */ 211*1da177e4SLinus Torvalds u32 address; /* APIC physical address */ 212*1da177e4SLinus Torvalds u32 interrupt; /* Global system interrupt where INTI 213*1da177e4SLinus Torvalds * lines start */ 214*1da177e4SLinus Torvalds }; 215*1da177e4SLinus Torvalds 216*1da177e4SLinus Torvalds struct madt_interrupt_override 217*1da177e4SLinus Torvalds { 218*1da177e4SLinus Torvalds APIC_HEADER_DEF 219*1da177e4SLinus Torvalds u8 bus; /* 0 - ISA */ 220*1da177e4SLinus Torvalds u8 source; /* Interrupt source (IRQ) */ 221*1da177e4SLinus Torvalds u32 interrupt; /* Global system interrupt */ 222*1da177e4SLinus Torvalds MPS_INTI_FLAGS 223*1da177e4SLinus Torvalds }; 224*1da177e4SLinus Torvalds 225*1da177e4SLinus Torvalds struct madt_nmi_source 226*1da177e4SLinus Torvalds { 227*1da177e4SLinus Torvalds APIC_HEADER_DEF 228*1da177e4SLinus Torvalds MPS_INTI_FLAGS 229*1da177e4SLinus Torvalds u32 interrupt; /* Global system interrupt */ 230*1da177e4SLinus Torvalds }; 231*1da177e4SLinus Torvalds 232*1da177e4SLinus Torvalds struct madt_local_apic_nmi 233*1da177e4SLinus Torvalds { 234*1da177e4SLinus Torvalds APIC_HEADER_DEF 235*1da177e4SLinus Torvalds u8 processor_id; /* ACPI processor id */ 236*1da177e4SLinus Torvalds MPS_INTI_FLAGS 237*1da177e4SLinus Torvalds u8 lint; /* LINTn to which NMI is connected */ 238*1da177e4SLinus Torvalds }; 239*1da177e4SLinus Torvalds 240*1da177e4SLinus Torvalds struct madt_address_override 241*1da177e4SLinus Torvalds { 242*1da177e4SLinus Torvalds APIC_HEADER_DEF 243*1da177e4SLinus Torvalds u16 reserved; /* Reserved - must be zero */ 244*1da177e4SLinus Torvalds u64 address; /* APIC physical address */ 245*1da177e4SLinus Torvalds }; 246*1da177e4SLinus Torvalds 247*1da177e4SLinus Torvalds struct madt_io_sapic 248*1da177e4SLinus Torvalds { 249*1da177e4SLinus Torvalds APIC_HEADER_DEF 250*1da177e4SLinus Torvalds u8 io_sapic_id; /* I/O SAPIC ID */ 251*1da177e4SLinus Torvalds u8 reserved; /* Reserved - must be zero */ 252*1da177e4SLinus Torvalds u32 interrupt_base; /* Glocal interrupt for SAPIC start */ 253*1da177e4SLinus Torvalds u64 address; /* SAPIC physical address */ 254*1da177e4SLinus Torvalds }; 255*1da177e4SLinus Torvalds 256*1da177e4SLinus Torvalds struct madt_local_sapic 257*1da177e4SLinus Torvalds { 258*1da177e4SLinus Torvalds APIC_HEADER_DEF 259*1da177e4SLinus Torvalds u8 processor_id; /* ACPI processor id */ 260*1da177e4SLinus Torvalds u8 local_sapic_id; /* SAPIC ID */ 261*1da177e4SLinus Torvalds u8 local_sapic_eid; /* SAPIC EID */ 262*1da177e4SLinus Torvalds u8 reserved [3]; /* Reserved - must be zero */ 263*1da177e4SLinus Torvalds LOCAL_APIC_FLAGS 264*1da177e4SLinus Torvalds u32 processor_uID; /* Numeric UID - ACPI 3.0 */ 265*1da177e4SLinus Torvalds char processor_uIDstring[1]; /* String UID - ACPI 3.0 */ 266*1da177e4SLinus Torvalds }; 267*1da177e4SLinus Torvalds 268*1da177e4SLinus Torvalds struct madt_interrupt_source 269*1da177e4SLinus Torvalds { 270*1da177e4SLinus Torvalds APIC_HEADER_DEF 271*1da177e4SLinus Torvalds MPS_INTI_FLAGS 272*1da177e4SLinus Torvalds u8 interrupt_type; /* 1=PMI, 2=INIT, 3=corrected */ 273*1da177e4SLinus Torvalds u8 processor_id; /* Processor ID */ 274*1da177e4SLinus Torvalds u8 processor_eid; /* Processor EID */ 275*1da177e4SLinus Torvalds u8 io_sapic_vector; /* Vector value for PMI interrupts */ 276*1da177e4SLinus Torvalds u32 interrupt; /* Global system interrupt */ 277*1da177e4SLinus Torvalds u32 flags; /* Interrupt Source Flags */ 278*1da177e4SLinus Torvalds }; 279*1da177e4SLinus Torvalds 280*1da177e4SLinus Torvalds 281*1da177e4SLinus Torvalds /* 282*1da177e4SLinus Torvalds * Smart Battery 283*1da177e4SLinus Torvalds */ 284*1da177e4SLinus Torvalds struct smart_battery_table 285*1da177e4SLinus Torvalds { 286*1da177e4SLinus Torvalds ACPI_TABLE_HEADER_DEF 287*1da177e4SLinus Torvalds u32 warning_level; 288*1da177e4SLinus Torvalds u32 low_level; 289*1da177e4SLinus Torvalds u32 critical_level; 290*1da177e4SLinus Torvalds }; 291*1da177e4SLinus Torvalds 292*1da177e4SLinus Torvalds 293*1da177e4SLinus Torvalds #pragma pack() 294*1da177e4SLinus Torvalds 295*1da177e4SLinus Torvalds 296*1da177e4SLinus Torvalds /* 297*1da177e4SLinus Torvalds * ACPI Table information. We save the table address, length, 298*1da177e4SLinus Torvalds * and type of memory allocation (mapped or allocated) for each 299*1da177e4SLinus Torvalds * table for 1) when we exit, and 2) if a new table is installed 300*1da177e4SLinus Torvalds */ 301*1da177e4SLinus Torvalds #define ACPI_MEM_NOT_ALLOCATED 0 302*1da177e4SLinus Torvalds #define ACPI_MEM_ALLOCATED 1 303*1da177e4SLinus Torvalds #define ACPI_MEM_MAPPED 2 304*1da177e4SLinus Torvalds 305*1da177e4SLinus Torvalds /* Definitions for the Flags bitfield member of struct acpi_table_support */ 306*1da177e4SLinus Torvalds 307*1da177e4SLinus Torvalds #define ACPI_TABLE_SINGLE 0x00 308*1da177e4SLinus Torvalds #define ACPI_TABLE_MULTIPLE 0x01 309*1da177e4SLinus Torvalds #define ACPI_TABLE_EXECUTABLE 0x02 310*1da177e4SLinus Torvalds 311*1da177e4SLinus Torvalds #define ACPI_TABLE_ROOT 0x00 312*1da177e4SLinus Torvalds #define ACPI_TABLE_PRIMARY 0x10 313*1da177e4SLinus Torvalds #define ACPI_TABLE_SECONDARY 0x20 314*1da177e4SLinus Torvalds #define ACPI_TABLE_ALL 0x30 315*1da177e4SLinus Torvalds #define ACPI_TABLE_TYPE_MASK 0x30 316*1da177e4SLinus Torvalds 317*1da177e4SLinus Torvalds /* Data about each known table type */ 318*1da177e4SLinus Torvalds 319*1da177e4SLinus Torvalds struct acpi_table_support 320*1da177e4SLinus Torvalds { 321*1da177e4SLinus Torvalds char *name; 322*1da177e4SLinus Torvalds char *signature; 323*1da177e4SLinus Torvalds void **global_ptr; 324*1da177e4SLinus Torvalds u8 sig_length; 325*1da177e4SLinus Torvalds u8 flags; 326*1da177e4SLinus Torvalds }; 327*1da177e4SLinus Torvalds 328*1da177e4SLinus Torvalds 329*1da177e4SLinus Torvalds /* 330*1da177e4SLinus Torvalds * Get the ACPI version-specific tables 331*1da177e4SLinus Torvalds */ 332*1da177e4SLinus Torvalds #include "actbl1.h" /* Acpi 1.0 table definitions */ 333*1da177e4SLinus Torvalds #include "actbl2.h" /* Acpi 2.0 table definitions */ 334*1da177e4SLinus Torvalds 335*1da177e4SLinus Torvalds extern u8 acpi_fadt_is_v1; /* is set to 1 if FADT is revision 1, 336*1da177e4SLinus Torvalds * needed for certain workarounds */ 337*1da177e4SLinus Torvalds 338*1da177e4SLinus Torvalds #pragma pack(1) 339*1da177e4SLinus Torvalds /* 340*1da177e4SLinus Torvalds * High performance timer 341*1da177e4SLinus Torvalds */ 342*1da177e4SLinus Torvalds struct hpet_table 343*1da177e4SLinus Torvalds { 344*1da177e4SLinus Torvalds ACPI_TABLE_HEADER_DEF 345*1da177e4SLinus Torvalds u32 hardware_id; 346*1da177e4SLinus Torvalds struct acpi_generic_address base_address; 347*1da177e4SLinus Torvalds u8 hpet_number; 348*1da177e4SLinus Torvalds u16 clock_tick; 349*1da177e4SLinus Torvalds u8 attributes; 350*1da177e4SLinus Torvalds }; 351*1da177e4SLinus Torvalds 352*1da177e4SLinus Torvalds #pragma pack() 353*1da177e4SLinus Torvalds 354*1da177e4SLinus Torvalds #endif /* __ACTBL_H__ */ 355