1/** @file
2  FACP Table
3
4  Copyright (c) 2013, Red Hat, Inc.
5  Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR>
6  This program and the accompanying materials are
7  licensed and made available under the terms and conditions of the BSD License
8  which accompanies this distribution.  The full text of the license may be found at
9  http://opensource.org/licenses/bsd-license.php
10
11  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14**/
15
16#include "Platform.h"
17
18EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE FACP = {
19  {
20    EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
21    sizeof (EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE),
22    EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION,
23    0,                          // to make sum of entire table == 0
24    {EFI_ACPI_OEM_ID},          // OEMID is a 6 bytes long field
25    EFI_ACPI_OEM_TABLE_ID,      // OEM table identification(8 bytes long)
26    EFI_ACPI_OEM_REVISION,      // OEM revision number
27    EFI_ACPI_CREATOR_ID,        // ASL compiler vendor ID
28    EFI_ACPI_CREATOR_REVISION   // ASL compiler revision number
29  },
30  0,                // Physical addesss of FACS
31  0,                // Physical address of DSDT
32  RESERVED,         // System Interrupt Model in ACPI 1.0, eliminated in 2.0
33  EFI_ACPI_2_0_PM_PROFILE_UNSPECIFIED, // Preferred PM profile
34  SCI_INT_VECTOR,   // System vector of SCI interrupt
35  SMI_CMD_IO_PORT,  // Port address of SMI command port
36  ACPI_ENABLE,      // value to write to port smi_cmd to enable ACPI
37  ACPI_DISABLE,     // value to write to port smi_cmd to disable ACPI
38  S4BIOS_REQ,       // Value to write to SMI CMD port to enter the S4BIOS state
39  0,                // PState control
40  PM1a_EVT_BLK,     // Port address of Power Mgt 1a Event Reg Blk
41  0,                // Power Mgt 1b Event Reg Blk unsupported
42  PM1a_CNT_BLK,     // Port address of Power Mgt 1a Ctrl Reg Blk
43  0,                // Power Mgt 1b Ctrl Reg Blk unsupported
44  0,                // Power Mgt 2  Ctrl Reg Blk unsupported
45  PM_TMR_BLK,       // Port address of Power Mgt Timer Ctrl Reg Blk
46  GPE0_BLK,         // Port addr of General Purpose Event 0 Reg Blk
47  0,                // General Purpose Event 1 Reg Blk unsupported
48  PM1_EVT_LEN,      // Byte Length of ports at pm1X_evt_blk
49  PM1_CNT_LEN,      // Byte Length of ports at pm1X_cnt_blk
50  0,                // Power Mgt 2 Ctrl Reg Blk unsupported
51  PM_TM_LEN,        // Byte Length of ports at pm_tm_blk
52  GPE0_BLK_LEN,     // Byte Length of ports at gpe0_blk
53  0,                // General Purpose Event 1 Reg Blk unsupported
54  0,                // General Purpose Event 1 Reg Blk unsupported
55  0,                // _CST support
56  P_LVL2_LAT,       // worst case HW latency to enter/exit C2 state
57  P_LVL3_LAT,       // worst case HW latency to enter/exit C3 state
58  FLUSH_SIZE,       // Size of area read to flush caches
59  FLUSH_STRIDE,     // Stride used in flushing caches
60  DUTY_OFFSET,      // bit location of duty cycle field in p_cnt reg
61  DUTY_WIDTH,       // bit width of duty cycle field in p_cnt reg
62  DAY_ALRM,         // index to day-of-month alarm in RTC CMOS RAM
63  MON_ALRM,         // index to month-of-year alarm in RTC CMOS RAM
64  CENTURY,          // index to century in RTC CMOS RAM
65  0x0000,           // Boot architecture flag (16-bit)
66  RESERVED,         // reserved
67  FLAG,             // Fixed feature flags
68  GAS2_IO(RESET_REG, 1), // Extended address of the Reset Register
69  RESET_VALUE,           // Value for the Reset Register to reset the system
70  { RESERVED },     // reserved[3]
71  0,                // 64-bit physical addesss of FACS, set at installation
72  0,                // 64-bit physical addesss of DSDT, set at installation
73
74  GAS2_IO(PM1a_EVT_BLK, PM1_EVT_LEN), // Ext. addr. of PM 1a Event Reg Blk
75  { 0 },                              // PM 1b Event Reg Blk unsupported
76  GAS2_IO(PM1a_CNT_BLK, PM1_CNT_LEN), // Ext. addr. of PM 1a Ctrl Reg Blk
77  { 0 },                              // PM 1b Ctrl Reg Blk unsupported
78  { 0 },                              // PM 2  Ctrl Reg Blk unsupported
79  GAS2_IO(PM_TMR_BLK, PM_TM_LEN),     // Ext. addr. of PM Timer Ctrl Reg Blk
80  GAS2_IO(GPE0_BLK, GPE0_BLK_LEN),    // Ext. addr. of GPE 0 Reg Blk
81  { 0 }                               // GPE 1 Reg Blk unsupported
82};
83
84
85VOID*
86ReferenceAcpiTable (
87  VOID
88  )
89{
90  //
91  // Reference the table being generated to prevent the optimizer from removing the
92  // data structure from the exeutable
93  //
94  return (VOID*)&FACP;
95}
96