amd/pi: Move AGESA cbfs access function to coreboot

The AGESA.c file in 3rdparty has cbfs access functions
for locating the AGESA binaries. coreboot access functions
need to be within coreboot where they can be updated with
cbfs changes. Move the offending function to coreboot.

Change-Id: Ic414d2c74e270548d5190e8c95e4cd7b8f3b8edd
Signed-off-by: Marc Jones <marc.jones@se-eng.com>
This commit is contained in:
Marc Jones
2015-05-01 15:03:04 -06:00
parent 63f1db5f4f
commit a710941e43
2 changed files with 68 additions and 118 deletions

View File

@@ -41,6 +41,7 @@
* *
***************************************************************************/ ***************************************************************************/
#include <AGESA.h> #include <AGESA.h>
#include <agesawrapper.h>
#include <AcpiLib.h> #include <AcpiLib.h>
#include <amdlib.h> #include <amdlib.h>
#include <cbfs.h> #include <cbfs.h>
@@ -73,30 +74,6 @@ CONST CHAR8 ModuleIdentifier[] = AGESA_ID;
* *
***********************************************************************/ ***********************************************************************/
static
CONST VOID *
LocateModule (
IN CONST CHAR8 name[8]
)
{
struct cbfs_media media;
struct cbfs_file* file;
const void* agesa;
size_t agesa_size = 0;
const AMD_IMAGE_HEADER* image;
const AMD_MODULE_HEADER* module;
if (init_default_cbfs_media(&media)) return NULL;
file = cbfs_get_file(&media, (const char*)CONFIG_CBFS_AGESA_NAME);
if (!file) return NULL;
agesa = cbfs_get_file_content(&media, (const char*)CONFIG_CBFS_AGESA_NAME, ntohl(file->type), &agesa_size);
if (!agesa) return NULL;
image = LibAmdLocateImage(agesa, agesa + ntohl(file->len) - 1, 4096, name);
module = (AMD_MODULE_HEADER*)image->ModuleInfoOffset;
return module;
}
/********************************************************************** /**********************************************************************
* Interface call: AmdCreateStruct * Interface call: AmdCreateStruct
@@ -107,7 +84,7 @@ AmdCreateStruct (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
InterfaceParams->StdHeader.Func = AMD_CREATE_STRUCT; InterfaceParams->StdHeader.Func = AMD_CREATE_STRUCT;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -123,7 +100,7 @@ AmdReleaseStruct (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
InterfaceParams->StdHeader.Func = AMD_RELEASE_STRUCT; InterfaceParams->StdHeader.Func = AMD_RELEASE_STRUCT;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -139,7 +116,7 @@ AmdInitReset (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
ResetParams->StdHeader.Func = AMD_INIT_RESET; ResetParams->StdHeader.Func = AMD_INIT_RESET;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -155,7 +132,7 @@ AmdInitEarly (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
EarlyParams->StdHeader.Func = AMD_INIT_EARLY; EarlyParams->StdHeader.Func = AMD_INIT_EARLY;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -171,7 +148,7 @@ AmdInitPost (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
PostParams->StdHeader.Func = AMD_INIT_POST; PostParams->StdHeader.Func = AMD_INIT_POST;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -187,7 +164,7 @@ AmdInitEnv (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
EnvParams->StdHeader.Func = AMD_INIT_ENV; EnvParams->StdHeader.Func = AMD_INIT_ENV;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -203,7 +180,7 @@ AmdInitMid (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
MidParams->StdHeader.Func = AMD_INIT_MID; MidParams->StdHeader.Func = AMD_INIT_MID;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -219,7 +196,7 @@ AmdInitLate (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
LateParams->StdHeader.Func = AMD_INIT_LATE; LateParams->StdHeader.Func = AMD_INIT_LATE;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -235,7 +212,7 @@ AmdInitRecovery (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
RecoveryParams->StdHeader.Func = AMD_INIT_RECOVERY; RecoveryParams->StdHeader.Func = AMD_INIT_RECOVERY;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -251,7 +228,7 @@ AmdInitResume (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
ResumeParams->StdHeader.Func = AMD_INIT_RESUME; ResumeParams->StdHeader.Func = AMD_INIT_RESUME;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -267,7 +244,7 @@ AmdS3LateRestore (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
S3LateParams->StdHeader.Func = AMD_S3LATE_RESTORE; S3LateParams->StdHeader.Func = AMD_S3LATE_RESTORE;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -283,7 +260,7 @@ AmdS3Save (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdS3SaveParams->StdHeader.Func = AMD_S3_SAVE; AmdS3SaveParams->StdHeader.Func = AMD_S3_SAVE;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -299,7 +276,7 @@ AmdLateRunApTask (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdApExeParams->StdHeader.Func = AMD_LATE_RUN_AP_TASK; AmdApExeParams->StdHeader.Func = AMD_LATE_RUN_AP_TASK;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -315,7 +292,7 @@ AmdGetApicId (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdParamApic->StdHeader.Func = AMD_GET_APIC_ID; AmdParamApic->StdHeader.Func = AMD_GET_APIC_ID;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -331,7 +308,7 @@ AmdGetPciAddress (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdParamGetPci->StdHeader.Func = AMD_GET_PCI_ADDRESS; AmdParamGetPci->StdHeader.Func = AMD_GET_PCI_ADDRESS;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -347,7 +324,7 @@ AmdIdentifyCore (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdParamIdentify->StdHeader.Func = AMD_IDENTIFY_CORE; AmdParamIdentify->StdHeader.Func = AMD_IDENTIFY_CORE;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -363,7 +340,7 @@ AmdReadEventLog (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
Event->StdHeader.Func = AMD_READ_EVENT_LOG; Event->StdHeader.Func = AMD_READ_EVENT_LOG;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -379,7 +356,7 @@ AmdIdentifyDimm (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdDimmIdentify->StdHeader.Func = AMD_IDENTIFY_DIMMS; AmdDimmIdentify->StdHeader.Func = AMD_IDENTIFY_DIMMS;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -392,7 +369,7 @@ AmdIdsRunApTaskLate (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdApExeParams->StdHeader.Func = -1; AmdApExeParams->StdHeader.Func = -1;
return AGESA_UNSUPPORTED; return AGESA_UNSUPPORTED;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
@@ -409,7 +386,7 @@ AmdGet2DDataEye (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdGetDataEye->StdHeader.Func = AMD_GET_2D_DATA_EYE; AmdGetDataEye->StdHeader.Func = AMD_GET_2D_DATA_EYE;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -429,7 +406,7 @@ FchInitS3EarlyRestore (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
FchDataPtr->StdHeader->Func = FCH_INIT_S3_EARLY_RESTORE; FchDataPtr->StdHeader->Func = FCH_INIT_S3_EARLY_RESTORE;
if (!module) return; if (!module) return;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -442,7 +419,7 @@ FchInitS3LateRestore (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
FchDataPtr->StdHeader->Func = FCH_INIT_S3_LATE_RESTORE; FchDataPtr->StdHeader->Func = FCH_INIT_S3_LATE_RESTORE;
if (!module) return; if (!module) return;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -462,7 +439,7 @@ WaitForEcLDN9MailboxCmdAck (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
StdHeader->Func = 0; StdHeader->Func = 0;
return; return;
if (!module) return; if (!module) return;
@@ -483,7 +460,7 @@ ImcSleep (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0; ((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0;
return; return;
if (!module) return; if (!module) return;
@@ -504,7 +481,7 @@ SoftwareDisableImc (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0; ((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0;
return; return;
if (!module) return; if (!module) return;
@@ -525,7 +502,7 @@ ImcEnableSurebootTimer (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0; ((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0;
return; return;
if (!module) return; if (!module) return;
@@ -546,7 +523,7 @@ ImcDisableSurebootTimer (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0; ((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0;
return; return;
if (!module) return; if (!module) return;
@@ -567,7 +544,7 @@ ImcWakeup (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0; ((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0;
return; return;
if (!module) return; if (!module) return;
@@ -588,7 +565,7 @@ ImcIdle (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0; ((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0;
return; return;
if (!module) return; if (!module) return;
@@ -604,7 +581,7 @@ HeapAllocateBuffer (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AMD_INTERFACE_PARAMS InterfaceParams = {}; AMD_INTERFACE_PARAMS InterfaceParams = {};
@@ -628,7 +605,7 @@ HeapDeallocateBuffer (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AMD_INTERFACE_PARAMS InterfaceParams = {}; AMD_INTERFACE_PARAMS InterfaceParams = {};
@@ -656,7 +633,7 @@ AmdSetValue (
AGESA_STATUS status = AGESA_UNSUPPORTED; AGESA_STATUS status = AGESA_UNSUPPORTED;
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AMD_ACCESSOR_PARAMS AccessorParams = {}; AMD_ACCESSOR_PARAMS AccessorParams = {};
@@ -690,7 +667,7 @@ AmdGetValue (
AGESA_STATUS status = AGESA_UNSUPPORTED; AGESA_STATUS status = AGESA_UNSUPPORTED;
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AMD_ACCESSOR_PARAMS AccessorParams = {}; AMD_ACCESSOR_PARAMS AccessorParams = {};

View File

@@ -41,16 +41,13 @@
***************************************************************************/ ***************************************************************************/
// TODO This list needs to be pruned of anything that is not API // TODO This list needs to be pruned of anything that is not API
#include "AGESA.h" #include "AGESA.h"
#include <agesawrapper.h>
#include "FieldAccessors.h" #include "FieldAccessors.h"
#include "AcpiLib.h" #include "AcpiLib.h"
#include "FchCommonCfg.h" #include "FchCommonCfg.h"
#include "Fch.h" #include "Fch.h"
#include "FchDef.h" #include "FchDef.h"
#include "amdlib.h" #include "amdlib.h"
#include "cbfs.h"
// TODO Add a kconfig option to name the AGESA ROM file in CBFS
#define CONFIG_CBFS_AGESA_NAME "AGESA"
// TODO These need to be replaced with calls to CreateStruct() // TODO These need to be replaced with calls to CreateStruct()
AGESA_STATUS AGESA_STATUS
@@ -75,30 +72,6 @@ CONST CHAR8 ModuleIdentifier[] = AGESA_ID;
* *
***********************************************************************/ ***********************************************************************/
static
CONST VOID *
LocateModule (
IN CONST CHAR8 name[8]
)
{
struct cbfs_media media;
struct cbfs_file* file;
const void* agesa;
const AMD_IMAGE_HEADER* image;
const AMD_MODULE_HEADER* module;
size_t file_size;
if (init_default_cbfs_media(&media)) return NULL;
file = cbfs_get_file(&media, (const char*)CONFIG_CBFS_AGESA_NAME);
if (!file) return NULL;
agesa = cbfs_get_file_content(&media, (const char*)CONFIG_CBFS_AGESA_NAME, ntohl(file->type), &file_size);
if (!agesa) return NULL;
image = LibAmdLocateImage(agesa, agesa + ntohl(file->len) - 1, 4096, name);
module = (AMD_MODULE_HEADER*)image->ModuleInfoOffset;
return module;
}
/********************************************************************** /**********************************************************************
* Interface call: AmdCreateStruct * Interface call: AmdCreateStruct
@@ -109,7 +82,7 @@ AmdCreateStruct (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
InterfaceParams->StdHeader.Func = AMD_CREATE_STRUCT; InterfaceParams->StdHeader.Func = AMD_CREATE_STRUCT;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -125,7 +98,7 @@ AmdReleaseStruct (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
InterfaceParams->StdHeader.Func = AMD_RELEASE_STRUCT; InterfaceParams->StdHeader.Func = AMD_RELEASE_STRUCT;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -141,7 +114,7 @@ AmdInitReset (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
ResetParams->StdHeader.Func = AMD_INIT_RESET; ResetParams->StdHeader.Func = AMD_INIT_RESET;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -157,7 +130,7 @@ AmdInitEarly (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
EarlyParams->StdHeader.Func = AMD_INIT_EARLY; EarlyParams->StdHeader.Func = AMD_INIT_EARLY;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -173,7 +146,7 @@ AmdInitPost (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
PostParams->StdHeader.Func = AMD_INIT_POST; PostParams->StdHeader.Func = AMD_INIT_POST;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -189,7 +162,7 @@ AmdInitEnv (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
EnvParams->StdHeader.Func = AMD_INIT_ENV; EnvParams->StdHeader.Func = AMD_INIT_ENV;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -205,7 +178,7 @@ AmdInitMid (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
MidParams->StdHeader.Func = AMD_INIT_MID; MidParams->StdHeader.Func = AMD_INIT_MID;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -221,7 +194,7 @@ AmdInitLate (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
LateParams->StdHeader.Func = AMD_INIT_LATE; LateParams->StdHeader.Func = AMD_INIT_LATE;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -237,7 +210,7 @@ AmdInitRecovery (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
RecoveryParams->StdHeader.Func = AMD_INIT_RECOVERY; RecoveryParams->StdHeader.Func = AMD_INIT_RECOVERY;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -253,7 +226,7 @@ AmdInitResume (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
ResumeParams->StdHeader.Func = AMD_INIT_RESUME; ResumeParams->StdHeader.Func = AMD_INIT_RESUME;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -269,7 +242,7 @@ AmdS3LateRestore (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
S3LateParams->StdHeader.Func = AMD_S3LATE_RESTORE; S3LateParams->StdHeader.Func = AMD_S3LATE_RESTORE;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -285,7 +258,7 @@ AmdS3Save (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdS3SaveParams->StdHeader.Func = AMD_S3_SAVE; AmdS3SaveParams->StdHeader.Func = AMD_S3_SAVE;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -301,7 +274,7 @@ AmdLateRunApTask (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdApExeParams->StdHeader.Func = AMD_LATE_RUN_AP_TASK; AmdApExeParams->StdHeader.Func = AMD_LATE_RUN_AP_TASK;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -317,7 +290,7 @@ AmdGetApicId (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdParamApic->StdHeader.Func = AMD_GET_APIC_ID; AmdParamApic->StdHeader.Func = AMD_GET_APIC_ID;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -333,7 +306,7 @@ AmdGetPciAddress (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdParamGetPci->StdHeader.Func = AMD_GET_PCI_ADDRESS; AmdParamGetPci->StdHeader.Func = AMD_GET_PCI_ADDRESS;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -349,7 +322,7 @@ AmdIdentifyCore (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdParamIdentify->StdHeader.Func = AMD_IDENTIFY_CORE; AmdParamIdentify->StdHeader.Func = AMD_IDENTIFY_CORE;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -365,7 +338,7 @@ AmdReadEventLog (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
Event->StdHeader.Func = AMD_READ_EVENT_LOG; Event->StdHeader.Func = AMD_READ_EVENT_LOG;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -381,7 +354,7 @@ AmdIdentifyDimm (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdDimmIdentify->StdHeader.Func = AMD_IDENTIFY_DIMMS; AmdDimmIdentify->StdHeader.Func = AMD_IDENTIFY_DIMMS;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -394,7 +367,7 @@ AmdIdsRunApTaskLate (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdApExeParams->StdHeader.Func = -1; AmdApExeParams->StdHeader.Func = -1;
return AGESA_UNSUPPORTED; return AGESA_UNSUPPORTED;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
@@ -411,7 +384,7 @@ AmdGet2DDataEye (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AmdGetDataEye->StdHeader.Func = AMD_GET_2D_DATA_EYE; AmdGetDataEye->StdHeader.Func = AMD_GET_2D_DATA_EYE;
if (!module) return AGESA_UNSUPPORTED; if (!module) return AGESA_UNSUPPORTED;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -431,7 +404,7 @@ FchInitS3EarlyRestore (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
FchDataPtr->StdHeader->Func = FCH_INIT_S3_EARLY_RESTORE; FchDataPtr->StdHeader->Func = FCH_INIT_S3_EARLY_RESTORE;
if (!module) return; if (!module) return;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -444,7 +417,7 @@ FchInitS3LateRestore (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
FchDataPtr->StdHeader->Func = FCH_INIT_S3_LATE_RESTORE; FchDataPtr->StdHeader->Func = FCH_INIT_S3_LATE_RESTORE;
if (!module) return; if (!module) return;
Dispatcher = module->ModuleDispatcher; Dispatcher = module->ModuleDispatcher;
@@ -464,7 +437,7 @@ WaitForEcLDN9MailboxCmdAck (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
StdHeader->Func = 0; StdHeader->Func = 0;
return; return;
if (!module) return; if (!module) return;
@@ -485,7 +458,7 @@ ImcSleep (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0; ((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0;
return; return;
if (!module) return; if (!module) return;
@@ -506,7 +479,7 @@ SoftwareDisableImc (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0; ((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0;
return; return;
if (!module) return; if (!module) return;
@@ -527,7 +500,7 @@ ImcEnableSurebootTimer (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0; ((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0;
return; return;
if (!module) return; if (!module) return;
@@ -548,7 +521,7 @@ ImcDisableSurebootTimer (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0; ((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0;
return; return;
if (!module) return; if (!module) return;
@@ -569,7 +542,7 @@ ImcWakeup (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0; ((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0;
return; return;
if (!module) return; if (!module) return;
@@ -590,7 +563,7 @@ ImcIdle (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0; ((FCH_DATA_BLOCK*)FchDataPtr)->StdHeader->Func = 0;
return; return;
if (!module) return; if (!module) return;
@@ -606,7 +579,7 @@ HeapAllocateBuffer (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AMD_INTERFACE_PARAMS InterfaceParams = {}; AMD_INTERFACE_PARAMS InterfaceParams = {};
@@ -630,7 +603,7 @@ HeapDeallocateBuffer (
) )
{ {
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AMD_INTERFACE_PARAMS InterfaceParams = {}; AMD_INTERFACE_PARAMS InterfaceParams = {};
@@ -658,7 +631,7 @@ AmdSetValue (
AGESA_STATUS status = AGESA_UNSUPPORTED; AGESA_STATUS status = AGESA_UNSUPPORTED;
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AMD_ACCESSOR_PARAMS AccessorParams = {}; AMD_ACCESSOR_PARAMS AccessorParams = {};
@@ -692,7 +665,7 @@ AmdGetValue (
AGESA_STATUS status = AGESA_UNSUPPORTED; AGESA_STATUS status = AGESA_UNSUPPORTED;
MODULE_ENTRY Dispatcher = NULL; MODULE_ENTRY Dispatcher = NULL;
const AMD_MODULE_HEADER* module = LocateModule(ModuleIdentifier); const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier);
AMD_ACCESSOR_PARAMS AccessorParams = {}; AMD_ACCESSOR_PARAMS AccessorParams = {};