]> git.proxmox.com Git - mirror_edk2.git/blob - CorebootModulePkg/Include/Library/CbParseLib.h
be39bd092397d8f58c6c4673db45d059e49a6b39
[mirror_edk2.git] / CorebootModulePkg / Include / Library / CbParseLib.h
1 /** @file
2 This library will parse the coreboot table in memory and extract those required
3 information.
4
5 Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.<BR>
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 #include <Guid/FrameBufferInfoGuid.h>
16
17 typedef RETURN_STATUS \
18 (*CB_MEM_INFO_CALLBACK) (UINT64 Base, UINT64 Size, UINT32 Type, VOID *Param);
19
20 /**
21 Find coreboot record with given Tag from the memory Start in 4096
22 bytes range.
23
24 @param Start The start memory to be searched in
25 @param Tag The tag id to be found
26
27 @retval NULL The Tag is not found.
28 @retval Others The pointer to the record found.
29
30 **/
31 VOID *
32 EFIAPI
33 FindCbTag (
34 IN VOID *Start,
35 IN UINT32 Tag
36 );
37
38 /**
39 Acquire the memory information from the coreboot table in memory.
40
41 @param MemInfoCallback The callback routine
42 @param pParam Pointer to the callback routine parameter
43
44 @retval RETURN_SUCCESS Successfully find out the memory information.
45 @retval RETURN_NOT_FOUND Failed to find the memory information.
46
47 **/
48 RETURN_STATUS
49 EFIAPI
50 CbParseMemoryInfo (
51 IN CB_MEM_INFO_CALLBACK MemInfoCallback,
52 IN VOID *pParam
53 );
54
55 /**
56 Acquire the coreboot memory table with the given table id
57
58 @param TableId Table id to be searched
59 @param pMemTable Pointer to the base address of the memory table
60 @param pMemTableSize Pointer to the size of the memory table
61
62 @retval RETURN_SUCCESS Successfully find out the memory table.
63 @retval RETURN_INVALID_PARAMETER Invalid input parameters.
64 @retval RETURN_NOT_FOUND Failed to find the memory table.
65
66 **/
67 RETURN_STATUS
68 EFIAPI
69 CbParseCbMemTable (
70 IN UINT32 TableId,
71 IN VOID** pMemTable,
72 IN UINT32* pMemTableSize
73 );
74
75 /**
76 Acquire the acpi table from coreboot
77
78 @param pMemTable Pointer to the base address of the memory table
79 @param pMemTableSize Pointer to the size of the memory table
80
81 @retval RETURN_SUCCESS Successfully find out the memory table.
82 @retval RETURN_INVALID_PARAMETER Invalid input parameters.
83 @retval RETURN_NOT_FOUND Failed to find the memory table.
84
85 **/
86 RETURN_STATUS
87 EFIAPI
88 CbParseAcpiTable (
89 IN VOID** pMemTable,
90 IN UINT32* pMemTableSize
91 );
92
93 /**
94 Acquire the smbios table from coreboot
95
96 @param pMemTable Pointer to the base address of the memory table
97 @param pMemTableSize Pointer to the size of the memory table
98
99 @retval RETURN_SUCCESS Successfully find out the memory table.
100 @retval RETURN_INVALID_PARAMETER Invalid input parameters.
101 @retval RETURN_NOT_FOUND Failed to find the memory table.
102
103 **/
104 RETURN_STATUS
105 EFIAPI
106 CbParseSmbiosTable (
107 IN VOID** pMemTable,
108 IN UINT32* pMemTableSize
109 );
110
111 /**
112 Find the required fadt information
113
114 @param pPmCtrlReg Pointer to the address of power management control register
115 @param pPmTimerReg Pointer to the address of power management timer register
116 @param pResetReg Pointer to the address of system reset register
117 @param pResetValue Pointer to the value to be written to the system reset register
118 @param pPmEvtReg Pointer to the address of power management event register
119 @param pPmGpeEnReg Pointer to the address of power management GPE enable register
120
121 @retval RETURN_SUCCESS Successfully find out all the required fadt information.
122 @retval RETURN_NOT_FOUND Failed to find the fadt table.
123
124 **/
125 RETURN_STATUS
126 EFIAPI
127 CbParseFadtInfo (
128 IN UINTN* pPmCtrlReg,
129 IN UINTN* pPmTimerReg,
130 IN UINTN* pResetReg,
131 IN UINTN* pResetValue,
132 IN UINTN* pPmEvtReg,
133 IN UINTN* pPmGpeEnReg
134 );
135
136 /**
137 Find the serial port information
138
139 @param pRegBase Pointer to the base address of serial port registers
140 @param pRegAccessType Pointer to the access type of serial port registers
141 @param pRegWidth Pointer to the register width in bytes
142 @param pBaudrate Pointer to the serial port baudrate
143 @param pInputHertz Pointer to the input clock frequency
144 @param pUartPciAddr Pointer to the UART PCI bus, dev and func address
145
146 @retval RETURN_SUCCESS Successfully find the serial port information.
147 @retval RETURN_NOT_FOUND Failed to find the serial port information .
148
149 **/
150 RETURN_STATUS
151 EFIAPI
152 CbParseSerialInfo (
153 OUT UINT32 *pRegBase,
154 OUT UINT32 *pRegAccessType,
155 OUT UINT32 *pRegWidth,
156 OUT UINT32 *pBaudrate,
157 OUT UINT32 *pInputHertz,
158 OUT UINT32 *pUartPciAddr
159 );
160
161 /**
162 Search for the coreboot table header
163
164 @param Level Level of the search depth
165 @param HeaderPtr Pointer to the pointer of coreboot table header
166
167 @retval RETURN_SUCCESS Successfully find the coreboot table header .
168 @retval RETURN_NOT_FOUND Failed to find the coreboot table header .
169
170 **/
171 RETURN_STATUS
172 EFIAPI
173 CbParseGetCbHeader (
174 IN UINTN Level,
175 IN VOID** HeaderPtr
176 );
177
178 /**
179 Find the video frame buffer information
180
181 @param pFbInfo Pointer to the FRAME_BUFFER_INFO structure
182
183 @retval RETURN_SUCCESS Successfully find the video frame buffer information.
184 @retval RETURN_NOT_FOUND Failed to find the video frame buffer information .
185
186 **/
187 RETURN_STATUS
188 EFIAPI
189 CbParseFbInfo (
190 IN FRAME_BUFFER_INFO* pFbInfo
191 );
192