mirror of https://github.com/acidanthera/audk.git
187 lines
5.5 KiB
C
187 lines
5.5 KiB
C
/** @file
|
|
This library will parse the coreboot table in memory and extract those required
|
|
information.
|
|
|
|
Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
#include <Guid/FrameBufferInfoGuid.h>
|
|
|
|
typedef RETURN_STATUS \
|
|
(*CB_MEM_INFO_CALLBACK) (UINT64 Base, UINT64 Size, UINT32 Type, VOID *Param);
|
|
|
|
/**
|
|
Find coreboot record with given Tag from the memory Start in 4096
|
|
bytes range.
|
|
|
|
@param Start The start memory to be searched in
|
|
@param Tag The tag id to be found
|
|
|
|
@retval NULL The Tag is not found.
|
|
@retval Others The pointer to the record found.
|
|
|
|
**/
|
|
VOID *
|
|
EFIAPI
|
|
FindCbTag (
|
|
IN VOID *Start,
|
|
IN UINT32 Tag
|
|
);
|
|
|
|
/**
|
|
Acquire the memory information from the coreboot table in memory.
|
|
|
|
@param MemInfoCallback The callback routine
|
|
@param pParam Pointer to the callback routine parameter
|
|
|
|
@retval RETURN_SUCCESS Successfully find out the memory information.
|
|
@retval RETURN_NOT_FOUND Failed to find the memory information.
|
|
|
|
**/
|
|
RETURN_STATUS
|
|
EFIAPI
|
|
CbParseMemoryInfo (
|
|
IN CB_MEM_INFO_CALLBACK MemInfoCallback,
|
|
IN VOID *pParam
|
|
);
|
|
|
|
/**
|
|
Acquire the coreboot memory table with the given table id
|
|
|
|
@param TableId Table id to be searched
|
|
@param pMemTable Pointer to the base address of the memory table
|
|
@param pMemTableSize Pointer to the size of the memory table
|
|
|
|
@retval RETURN_SUCCESS Successfully find out the memory table.
|
|
@retval RETURN_INVALID_PARAMETER Invalid input parameters.
|
|
@retval RETURN_NOT_FOUND Failed to find the memory table.
|
|
|
|
**/
|
|
RETURN_STATUS
|
|
EFIAPI
|
|
CbParseCbMemTable (
|
|
IN UINT32 TableId,
|
|
IN VOID** pMemTable,
|
|
IN UINT32* pMemTableSize
|
|
);
|
|
|
|
/**
|
|
Acquire the acpi table from coreboot
|
|
|
|
@param pMemTable Pointer to the base address of the memory table
|
|
@param pMemTableSize Pointer to the size of the memory table
|
|
|
|
@retval RETURN_SUCCESS Successfully find out the memory table.
|
|
@retval RETURN_INVALID_PARAMETER Invalid input parameters.
|
|
@retval RETURN_NOT_FOUND Failed to find the memory table.
|
|
|
|
**/
|
|
RETURN_STATUS
|
|
EFIAPI
|
|
CbParseAcpiTable (
|
|
IN VOID** pMemTable,
|
|
IN UINT32* pMemTableSize
|
|
);
|
|
|
|
/**
|
|
Acquire the smbios table from coreboot
|
|
|
|
@param pMemTable Pointer to the base address of the memory table
|
|
@param pMemTableSize Pointer to the size of the memory table
|
|
|
|
@retval RETURN_SUCCESS Successfully find out the memory table.
|
|
@retval RETURN_INVALID_PARAMETER Invalid input parameters.
|
|
@retval RETURN_NOT_FOUND Failed to find the memory table.
|
|
|
|
**/
|
|
RETURN_STATUS
|
|
EFIAPI
|
|
CbParseSmbiosTable (
|
|
IN VOID** pMemTable,
|
|
IN UINT32* pMemTableSize
|
|
);
|
|
|
|
/**
|
|
Find the required fadt information
|
|
|
|
@param pPmCtrlReg Pointer to the address of power management control register
|
|
@param pPmTimerReg Pointer to the address of power management timer register
|
|
@param pResetReg Pointer to the address of system reset register
|
|
@param pResetValue Pointer to the value to be written to the system reset register
|
|
@param pPmEvtReg Pointer to the address of power management event register
|
|
@param pPmGpeEnReg Pointer to the address of power management GPE enable register
|
|
|
|
@retval RETURN_SUCCESS Successfully find out all the required fadt information.
|
|
@retval RETURN_NOT_FOUND Failed to find the fadt table.
|
|
|
|
**/
|
|
RETURN_STATUS
|
|
EFIAPI
|
|
CbParseFadtInfo (
|
|
IN UINTN* pPmCtrlReg,
|
|
IN UINTN* pPmTimerReg,
|
|
IN UINTN* pResetReg,
|
|
IN UINTN* pResetValue,
|
|
IN UINTN* pPmEvtReg,
|
|
IN UINTN* pPmGpeEnReg
|
|
);
|
|
|
|
/**
|
|
Find the serial port information
|
|
|
|
@param pRegBase Pointer to the base address of serial port registers
|
|
@param pRegAccessType Pointer to the access type of serial port registers
|
|
@param pRegWidth Pointer to the register width in bytes
|
|
@param pBaudrate Pointer to the serial port baudrate
|
|
@param pInputHertz Pointer to the input clock frequency
|
|
@param pUartPciAddr Pointer to the UART PCI bus, dev and func address
|
|
|
|
@retval RETURN_SUCCESS Successfully find the serial port information.
|
|
@retval RETURN_NOT_FOUND Failed to find the serial port information .
|
|
|
|
**/
|
|
RETURN_STATUS
|
|
EFIAPI
|
|
CbParseSerialInfo (
|
|
OUT UINT32 *pRegBase,
|
|
OUT UINT32 *pRegAccessType,
|
|
OUT UINT32 *pRegWidth,
|
|
OUT UINT32 *pBaudrate,
|
|
OUT UINT32 *pInputHertz,
|
|
OUT UINT32 *pUartPciAddr
|
|
);
|
|
|
|
/**
|
|
Search for the coreboot table header
|
|
|
|
@param Level Level of the search depth
|
|
@param HeaderPtr Pointer to the pointer of coreboot table header
|
|
|
|
@retval RETURN_SUCCESS Successfully find the coreboot table header .
|
|
@retval RETURN_NOT_FOUND Failed to find the coreboot table header .
|
|
|
|
**/
|
|
RETURN_STATUS
|
|
EFIAPI
|
|
CbParseGetCbHeader (
|
|
IN UINTN Level,
|
|
IN VOID** HeaderPtr
|
|
);
|
|
|
|
/**
|
|
Find the video frame buffer information
|
|
|
|
@param pFbInfo Pointer to the FRAME_BUFFER_INFO structure
|
|
|
|
@retval RETURN_SUCCESS Successfully find the video frame buffer information.
|
|
@retval RETURN_NOT_FOUND Failed to find the video frame buffer information .
|
|
|
|
**/
|
|
RETURN_STATUS
|
|
EFIAPI
|
|
CbParseFbInfo (
|
|
IN FRAME_BUFFER_INFO* pFbInfo
|
|
);
|
|
|