summaryrefslogtreecommitdiffstats
path: root/OvmfPkg/Bhyve/AcpiTables/Facp.aslc
blob: b3d703eb8931b0e509f22131acbdff95f9173870 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/*
 * Copyright (c) 2020, Rebecca Cran <rebecca@bsdio.com>
 * Copyright (c) 2014, Pluribus Networks, Inc.
 *
 * SPDX-License-Identifier: BSD-2-Clause-Patent
 */

#include "Platform.h"

#define EFI_ACPI_OEM_TABLE_ID     SIGNATURE_64('B','V','F','A','C','P',' ',' ')

EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE FACP = {
  {
    EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
    sizeof (EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE),
    EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION,
    0,                          // to make sum of entire table == 0
    {EFI_ACPI_OEM_ID},          // OEMID is a 6 bytes long field
    EFI_ACPI_OEM_TABLE_ID,      // OEM table identification(8 bytes long)
    EFI_ACPI_OEM_REVISION,      // OEM revision number
    EFI_ACPI_CREATOR_ID,        // ASL compiler vendor ID
    EFI_ACPI_CREATOR_REVISION   // ASL compiler revision number
  },
  0,                // Physical addesss of FACS
  0,                // Physical address of DSDT
  INT_MODEL,        // System Interrupt Model
  RESERVED,         // reserved
  SCI_INT_VECTOR,   // System vector of SCI interrupt
  SMI_CMD_IO_PORT,  // Port address of SMI command port
  ACPI_ENABLE,      // value to write to port smi_cmd to enable ACPI
  ACPI_DISABLE,     // value to write to port smi_cmd to disable ACPI
  S4BIOS_REQ,       // Value to write to SMI CMD port to enter the S4BIOS state
  0,                // PState control
  PM1a_EVT_BLK,     // Port address of Power Mgt 1a Event Reg Blk
  PM1b_EVT_BLK,     // Port address of Power Mgt 1b Event Reg Blk
  PM1a_CNT_BLK,     // Port address of Power Mgt 1a Ctrl Reg Blk
  PM1b_CNT_BLK,     // Port address of Power Mgt 1b Ctrl Reg Blk
  PM2_CNT_BLK,      // Port address of Power Mgt 2  Ctrl Reg Blk
  PM_TMR_BLK,       // Port address of Power Mgt Timer Ctrl Reg Blk
  GPE0_BLK,         // Port addr of General Purpose Event 0 Reg Blk
  GPE1_BLK,         // Port addr of General Purpose Event 1 Reg Blk
  PM1_EVT_LEN,      // Byte Length of ports at pm1X_evt_blk
  PM1_CNT_LEN,      // Byte Length of ports at pm1X_cnt_blk
  PM2_CNT_LEN,      // Byte Length of ports at pm2_cnt_blk
  PM_TM_LEN,        // Byte Length of ports at pm_tm_blk
  GPE0_BLK_LEN,     // Byte Length of ports at gpe0_blk
  GPE1_BLK_LEN,     // Byte Length of ports at gpe1_blk
  GPE1_BASE,        // offset in gpe model where gpe1 events start
  0,                // _CST support
  P_LVL2_LAT,       // worst case HW latency to enter/exit C2 state
  P_LVL3_LAT,       // worst case HW latency to enter/exit C3 state
  FLUSH_SIZE,       // Size of area read to flush caches
  FLUSH_STRIDE,     // Stride used in flushing caches
  DUTY_OFFSET,      // bit location of duty cycle field in p_cnt reg
  DUTY_WIDTH,       // bit width of duty cycle field in p_cnt reg
  DAY_ALRM,         // index to day-of-month alarm in RTC CMOS RAM
  MON_ALRM,         // index to month-of-year alarm in RTC CMOS RAM
  CENTURY,          // index to century in RTC CMOS RAM
  IAPC_BOOT_ARCH,   // Boot architecture flag
  RESERVED,         // reserved
  FACP_FLAGS,
  FACP_RESET_REG,
  FACP_RESET_VAL,
};

VOID*
ReferenceAcpiTable (
  VOID
  )
{
  //
  // Reference the table being generated to prevent the optimizer from removing the
  // data structure from the exeutable
  //
  return (VOID*)&FACP;
}