diff options
-rw-r--r-- | src/soc/amd/common/agesawrapper.c | 22 | ||||
-rw-r--r-- | src/soc/amd/common/agesawrapper.h | 3 | ||||
-rw-r--r-- | src/vendorcode/amd/pi/00670F00/binaryPI/AGESA.c | 114 |
3 files changed, 63 insertions, 76 deletions
diff --git a/src/soc/amd/common/agesawrapper.c b/src/soc/amd/common/agesawrapper.c index b9391836ce..ec76b4d35c 100644 --- a/src/soc/amd/common/agesawrapper.c +++ b/src/soc/amd/common/agesawrapper.c @@ -14,6 +14,7 @@ */ #include "agesawrapper.h" +#include <arch/early_variables.h> #include <cbfs.h> #include <cbmem.h> #include <delay.h> @@ -378,3 +379,24 @@ const void *agesawrapper_locate_module (const CHAR8 name[8]) return module; } + +static MODULE_ENTRY agesa_dispatcher CAR_GLOBAL; + +MODULE_ENTRY agesa_get_dispatcher(void) +{ + const AMD_MODULE_HEADER *module; + static const CHAR8 id[8] = AGESA_ID; + MODULE_ENTRY val = car_get_var(agesa_dispatcher); + + if (val != NULL) + return val; + + module = agesawrapper_locate_module(id); + if (!module) + return NULL; + + val = module->ModuleDispatcher; + car_set_var(agesa_dispatcher, val); + + return val; +} diff --git a/src/soc/amd/common/agesawrapper.h b/src/soc/amd/common/agesawrapper.h index 6ddc658981..08ac5968ca 100644 --- a/src/soc/amd/common/agesawrapper.h +++ b/src/soc/amd/common/agesawrapper.h @@ -31,6 +31,9 @@ enum { PICK_CRAT, }; +/* Return current dispatcher or NULL on error. */ +MODULE_ENTRY agesa_get_dispatcher(void); + AGESA_STATUS agesawrapper_amdinitreset(void); AGESA_STATUS agesawrapper_amdinitearly(void); AGESA_STATUS agesawrapper_amdinitenv(void); diff --git a/src/vendorcode/amd/pi/00670F00/binaryPI/AGESA.c b/src/vendorcode/amd/pi/00670F00/binaryPI/AGESA.c index ec414b4724..cc93424870 100644 --- a/src/vendorcode/amd/pi/00670F00/binaryPI/AGESA.c +++ b/src/vendorcode/amd/pi/00670F00/binaryPI/AGESA.c @@ -63,11 +63,9 @@ AmdCreateStruct ( IN OUT AMD_INTERFACE_PARAMS *InterfaceParams ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); InterfaceParams->StdHeader.Func = AMD_CREATE_STRUCT; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(InterfaceParams); } @@ -79,11 +77,9 @@ AmdReleaseStruct ( IN OUT AMD_INTERFACE_PARAMS *InterfaceParams ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); InterfaceParams->StdHeader.Func = AMD_RELEASE_STRUCT; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(InterfaceParams); } @@ -95,11 +91,9 @@ AmdInitReset ( IN OUT AMD_RESET_PARAMS *ResetParams ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); ResetParams->StdHeader.Func = AMD_INIT_RESET; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(ResetParams); } @@ -111,11 +105,9 @@ AmdInitEarly ( IN OUT AMD_EARLY_PARAMS *EarlyParams ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); EarlyParams->StdHeader.Func = AMD_INIT_EARLY; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(EarlyParams); } @@ -127,11 +119,9 @@ AmdInitPost ( IN OUT AMD_POST_PARAMS *PostParams ///< Amd Cpu init param ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); PostParams->StdHeader.Func = AMD_INIT_POST; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(PostParams); } @@ -143,11 +133,9 @@ AmdInitEnv ( IN OUT AMD_ENV_PARAMS *EnvParams ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); EnvParams->StdHeader.Func = AMD_INIT_ENV; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(EnvParams); } @@ -159,11 +147,9 @@ AmdInitMid ( IN OUT AMD_MID_PARAMS *MidParams ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); MidParams->StdHeader.Func = AMD_INIT_MID; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(MidParams); } @@ -175,11 +161,9 @@ AmdInitLate ( IN OUT AMD_LATE_PARAMS *LateParams ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); LateParams->StdHeader.Func = AMD_INIT_LATE; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(LateParams); } @@ -191,11 +175,9 @@ AmdInitRecovery ( IN OUT AMD_RECOVERY_PARAMS *RecoveryParams ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); RecoveryParams->StdHeader.Func = AMD_INIT_RECOVERY; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(RecoveryParams); } @@ -207,11 +189,9 @@ AmdInitResume ( IN AMD_RESUME_PARAMS *ResumeParams ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); ResumeParams->StdHeader.Func = AMD_INIT_RESUME; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(ResumeParams); } @@ -223,11 +203,9 @@ AmdS3LateRestore ( IN OUT AMD_S3LATE_PARAMS *S3LateParams ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); S3LateParams->StdHeader.Func = AMD_S3LATE_RESTORE; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(S3LateParams); } @@ -239,11 +217,9 @@ AmdInitRtb ( IN OUT AMD_RTB_PARAMS *AmdInitRtbParams ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); AmdInitRtbParams->StdHeader.Func = AMD_INIT_RTB; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(AmdInitRtbParams); } @@ -255,11 +231,9 @@ AmdLateRunApTask ( IN AP_EXE_PARAMS *AmdApExeParams ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); AmdApExeParams->StdHeader.Func = AMD_LATE_RUN_AP_TASK; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(AmdApExeParams); } @@ -271,11 +245,9 @@ AmdGetApicId ( IN OUT AMD_APIC_PARAMS *AmdParamApic ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); AmdParamApic->StdHeader.Func = AMD_GET_APIC_ID; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(AmdParamApic); } @@ -287,11 +259,9 @@ AmdGetPciAddress ( IN OUT AMD_GET_PCI_PARAMS *AmdParamGetPci ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); AmdParamGetPci->StdHeader.Func = AMD_GET_PCI_ADDRESS; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(AmdParamGetPci); } @@ -303,11 +273,9 @@ AmdIdentifyCore ( IN OUT AMD_IDENTIFY_PARAMS *AmdParamIdentify ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); AmdParamIdentify->StdHeader.Func = AMD_IDENTIFY_CORE; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(AmdParamIdentify); } @@ -319,11 +287,9 @@ AmdReadEventLog ( IN EVENT_PARAMS *Event ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); Event->StdHeader.Func = AMD_READ_EVENT_LOG; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(Event); } @@ -335,11 +301,9 @@ AmdIdentifyDimm ( IN OUT AMD_IDENTIFY_DIMM *AmdDimmIdentify ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); AmdDimmIdentify->StdHeader.Func = AMD_IDENTIFY_DIMMS; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(AmdDimmIdentify); } @@ -360,10 +324,8 @@ AmdGet2DDataEye ( IN OUT AMD_GET_DATAEYE *AmdGetDataEye ) { - MODULE_ENTRY Dispatcher = NULL; - const AMD_MODULE_HEADER* module = agesawrapper_locate_module(ModuleIdentifier); + MODULE_ENTRY Dispatcher = agesa_get_dispatcher(); AmdGetDataEye->StdHeader.Func = AMD_GET_2D_DATA_EYE; - if (!module) return AGESA_UNSUPPORTED; - Dispatcher = module->ModuleDispatcher; + if (!Dispatcher) return AGESA_UNSUPPORTED; return Dispatcher(AmdGetDataEye); } |