/** @file This library will parse the coreboot table in memory and extract those required information. Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include 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 );