]> git.proxmox.com Git - mirror_edk2.git/blob - QuarkPlatformPkg/Acpi/DxeSmm/AcpiSmm/AcpiSmmPlatform.h
QuarkPlatformPkg: Add new package for Galileo boards
[mirror_edk2.git] / QuarkPlatformPkg / Acpi / DxeSmm / AcpiSmm / AcpiSmmPlatform.h
1 /** @file
2 Header file for SMM S3 Handler Driver.
3
4 Copyright (c) 2013-2015 Intel Corporation.
5
6 This program and the accompanying materials
7 are 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
17 #ifndef _ACPI_SMM_DRIVER_H
18 #define _ACPI_SMM_DRIVER_H
19 //
20 // Include files
21 //
22 //
23 // Driver Consumed Protocol Prototypes
24 //
25 #include <Protocol/SmmSxDispatch2.h>
26 #include <Protocol/SmmSwDispatch2.h>
27 #include <Protocol/FirmwareVolume.h>
28 #include <Protocol/GlobalNvsArea.h>
29 #include <Protocol/PciRootBridgeIo.h>
30 #include <Library/UefiDriverEntryPoint.h>
31 #include <Protocol/Spi.h>
32 #include <Library/IoLib.h>
33 #include <Library/PciLib.h>
34 #include <Library/PcdLib.h>
35 #include <Library/LockBoxLib.h>
36 #include <Library/DebugLib.h>
37 #include <Library/BaseMemoryLib.h>
38 #include <Library/UefiBootServicesTableLib.h>
39 #include <Library/BaseLib.h>
40 #include <Library/UefiRuntimeServicesTableLib.h>
41 #include <Library/S3IoLib.h>
42 #include <Library/S3BootScriptLib.h>
43 #include <Guid/Acpi.h>
44 #include <Guid/GlobalVariable.h>
45 #include <Library/SmmServicesTableLib.h>
46 #include <Guid/SmramMemoryReserve.h>
47 #include <Library/ReportStatusCodeLib.h>
48 #include <Library/HobLib.h>
49 #include <QNCAccess.h>
50 #include <Library/QNCAccessLib.h>
51 #include <Library/IntelQNCLib.h>
52 #include <Library/PlatformHelperLib.h>
53 #include <Library/PlatformPcieHelperLib.h>
54 #include "Platform.h"
55 #include <IndustryStandard/Pci22.h>
56
57 #define EFI_ACPI_ACPI_ENABLE 0xA0
58 #define EFI_ACPI_ACPI_DISABLE 0xA1
59
60 #define R_IOPORT_CMOS_STANDARD_INDEX 0x70
61 #define R_IOPORT_CMOS_STANDARD_DATA 0x71
62 #define RTC_ADDRESS_REGISTER_C 12
63 #define RTC_ADDRESS_REGISTER_D 13
64
65 #define PCI_DEVICE(Bus, Dev, Func) \
66 Bus, Dev, Func
67
68 #define PCI_REG_MASK(Byte0, Byte1, Byte2, Byte3, Byte4, Byte5, Byte6, Byte7) \
69 Byte0, Byte1, Byte2, Byte3, Byte4, Byte5, Byte6, Byte7
70
71 #define PCI_DEVICE_END 0xFF
72
73 //
74 // Related data structures definition
75 //
76 typedef struct _EFI_ACPI_SMM_DEV {
77
78 //
79 // Parent dispatch driver returned sleep handle
80 //
81 EFI_HANDLE S3SleepEntryHandle;
82
83 EFI_HANDLE S4SleepEntryHandle;
84
85 EFI_HANDLE S1SleepEntryHandle;
86
87 EFI_HANDLE S5SoftOffEntryHandle;
88
89 EFI_HANDLE EnableAcpiHandle;
90
91 EFI_HANDLE DisableAcpiHandle;
92
93 EFI_HANDLE PpCallbackHandle;
94
95 EFI_HANDLE MorCallbackHandle;
96
97 //
98 // QNC Power Management I/O register base
99 //
100 UINT32 QncPmBase;
101
102 //
103 // QNC General Purpose Event0 register base
104 //
105 UINT32 QncGpe0Base;
106
107 UINT32 BootScriptSaved;
108
109 } EFI_ACPI_SMM_DEV;
110
111 //
112 // Prototypes
113 //
114 EFI_STATUS
115 InitPlatformAcpiSmm (
116 IN EFI_HANDLE ImageHandle,
117 IN EFI_SYSTEM_TABLE *SystemTable,
118 IN OUT VOID *CommBuffer,
119 IN OUT UINTN *CommBufferSize
120 );
121
122 EFI_STATUS
123 SxSleepEntryCallBack (
124 IN EFI_HANDLE DispatchHandle,
125 IN CONST VOID *DispatchContext,
126
127 IN OUT VOID *CommBuffer,
128 IN OUT UINTN *CommBufferSize
129 );
130
131 EFI_STATUS
132 DisableAcpiCallback (
133 IN EFI_HANDLE DispatchHandle,
134 IN CONST VOID *DispatchContext,
135 IN OUT VOID *CommBuffer,
136 IN OUT UINTN *CommBufferSize
137 );
138
139 EFI_STATUS
140 EnableAcpiCallback (
141 IN EFI_HANDLE DispatchHandle,
142 IN CONST VOID *DispatchContext,
143 IN OUT VOID *CommBuffer,
144 IN OUT UINTN *CommBufferSize
145 );
146
147 EFI_STATUS
148 RegisterToDispatchDriver (
149 VOID
150 );
151
152 EFI_STATUS
153 GetAllQncPmBase (
154 IN EFI_SMM_SYSTEM_TABLE2 *Smst
155 );
156
157 EFI_STATUS
158 SaveRuntimeScriptTable (
159 IN EFI_SMM_SYSTEM_TABLE2 *Smst
160 );
161
162 EFI_STATUS
163 RestoreQncS3SwCallback (
164 IN EFI_HANDLE DispatchHandle,
165 IN CONST VOID *DispatchContext,
166 IN OUT VOID *CommBuffer,
167 IN OUT UINTN *CommBufferSize
168 );
169
170 extern EFI_GUID gQncS3CodeInLockBoxGuid;
171 extern EFI_GUID gQncS3ContextInLockBoxGuid;
172
173 #endif