summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Jones <marc.jones@se-eng.com>2015-05-05 09:55:57 -0600
committerStefan Reinauer <stefan.reinauer@coreboot.org>2015-05-13 22:30:07 +0200
commita6a566bf0bf4f606ae2252b48c5aa5e4fac71df1 (patch)
tree4b08a03dd9272234779270b7e8d5a4918feef321
parent6310ccc59c1fd87ec5f68c1b0681e70500261e08 (diff)
amd/pi: Move AGESA cbfs access into the wrapper
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: Ibf6136d04dfbdb0198e90cc3ce719dc286c5610e Signed-off-by: Marc Jones <marc.jones@se-eng.com> Reviewed-on: http://review.coreboot.org/10058 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r--src/northbridge/amd/pi/agesawrapper.c25
-rw-r--r--src/northbridge/amd/pi/agesawrapper.h6
-rw-r--r--src/vendorcode/amd/pi/00630F01/Makefile.inc1
-rw-r--r--src/vendorcode/amd/pi/00730F01/Makefile.inc1
4 files changed, 33 insertions, 0 deletions
diff --git a/src/northbridge/amd/pi/agesawrapper.c b/src/northbridge/amd/pi/agesawrapper.c
index efdfdbd6bc..8bcd8ac372 100644
--- a/src/northbridge/amd/pi/agesawrapper.c
+++ b/src/northbridge/amd/pi/agesawrapper.c
@@ -18,6 +18,7 @@
*/
#include <AGESA.h>
+#include <cbfs.h>
#include <cpu/amd/pi/s3_resume.h>
#include <cpu/x86/mtrr.h>
#include <cpuRegisters.h>
@@ -589,3 +590,27 @@ AGESA_STATUS agesawrapper_amdreadeventlog (UINT8 HeapStatus)
return Status;
}
+
+const void *agesawrapper_locate_module (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 + file_size - 1, 4096, name);
+ module = (AMD_MODULE_HEADER*)image->ModuleInfoOffset;
+
+ return module;
+}
diff --git a/src/northbridge/amd/pi/agesawrapper.h b/src/northbridge/amd/pi/agesawrapper.h
index adcc75529b..b77e04ce9e 100644
--- a/src/northbridge/amd/pi/agesawrapper.h
+++ b/src/northbridge/amd/pi/agesawrapper.h
@@ -24,6 +24,11 @@
#include "Porting.h"
#include "AGESA.h"
+/* TODO: Add a kconfig option to name the AGESA ROM file in CBFS */
+#ifndef CONFIG_CBFS_AGESA_NAME
+#define CONFIG_CBFS_AGESA_NAME "AGESA"
+#endif
+
enum {
PICK_DMI, /* DMI Interface */
PICK_PSTATE, /* Acpi Pstate SSDT Table */
@@ -55,5 +60,6 @@ AGESA_STATUS agesawrapper_fchs3laterestore(void);
VOID OemCustomizeInitEarly (IN OUT AMD_EARLY_PARAMS *InitEarly);
VOID amd_initcpuio(void);
VOID amd_initmmio(void);
+const void *agesawrapper_locate_module (const CHAR8 name[8]);
#endif /* _AGESAWRAPPER_H_ */
diff --git a/src/vendorcode/amd/pi/00630F01/Makefile.inc b/src/vendorcode/amd/pi/00630F01/Makefile.inc
index 7908378510..6141763518 100644
--- a/src/vendorcode/amd/pi/00630F01/Makefile.inc
+++ b/src/vendorcode/amd/pi/00630F01/Makefile.inc
@@ -48,6 +48,7 @@ AGESA_INC += -I$(AGESA_ROOT)/Proc/Fch
AGESA_INC += -I$(AGESA_ROOT)/Proc/Fch/Common
AGESA_INC += -I$(AGESA_ROOT)/Proc/IDS
+AGESA_INC += -I$(src)/northbridge/amd/pi
AGESA_INC += -I$(src)/southbridge/amd/pi/hudson
AGESA_INC += -I$(src)/arch/x86/include
diff --git a/src/vendorcode/amd/pi/00730F01/Makefile.inc b/src/vendorcode/amd/pi/00730F01/Makefile.inc
index a302e336c4..d6ba93cae0 100644
--- a/src/vendorcode/amd/pi/00730F01/Makefile.inc
+++ b/src/vendorcode/amd/pi/00730F01/Makefile.inc
@@ -47,6 +47,7 @@ AGESA_INC += -I$(AGESA_ROOT)/Proc/CPU/Feature
AGESA_INC += -I$(AGESA_ROOT)/Proc/Fch
AGESA_INC += -I$(AGESA_ROOT)/Proc/Fch/Common
+AGESA_INC += -I$(src)/northbridge/amd/pi
AGESA_INC += -I$(src)/southbridge/amd/pi/hudson
AGESA_INC += -I$(src)/arch/x86/include