intel/broadwell: Fix refcode handling

Allow adding and executing a refcode binary.

Change-Id: I00e91a088a5695b42528e246d0ed642d988603e3
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-on: http://review.coreboot.org/10638
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
diff --git a/src/soc/intel/broadwell/Kconfig b/src/soc/intel/broadwell/Kconfig
index a789c37..b584c0e 100644
--- a/src/soc/intel/broadwell/Kconfig
+++ b/src/soc/intel/broadwell/Kconfig
@@ -200,6 +200,24 @@
 	help
 	  If you set this option to y, the serial IRQ machine will be
 	  operated in continuous mode.
+
+config HAVE_REFCODE_BLOB
+	depends on ARCH_X86
+	bool "An external reference code blob should be put into cbfs."
+	default n
+	help
+	 The reference code blob will be placed into cbfs.
+
+if HAVE_REFCODE_BLOB
+
+config REFCODE_BLOB_FILE
+	string "Path and filename to reference code blob."
+	default "refcode.elf"
+	help
+	 The path and filename to the file to be added to cbfs.
+
+endif # HAVE_REFCODE_BLOB
+
 config HAVE_ME_BIN
 	bool "Add Intel Management Engine firmware"
 	default y
diff --git a/src/soc/intel/broadwell/refcode.c b/src/soc/intel/broadwell/refcode.c
index a890e82..949b416 100644
--- a/src/soc/intel/broadwell/refcode.c
+++ b/src/soc/intel/broadwell/refcode.c
@@ -43,7 +43,7 @@
 	return (pei_wrapper_entry_t)prog_entry(&refcode);
 }
 
-static efi_wrapper_entry_t load_reference_code(void)
+static pei_wrapper_entry_t load_reference_code(void)
 {
 	struct prog prog =
 		PROG_INIT(ASSET_REFCODE, CONFIG_CBFS_PREFIX "/refcode");
@@ -69,7 +69,7 @@
 	/* Cache loaded reference code. */
 	stage_cache_add(STAGE_REFCODE, &prog);
 
-	return prog_entry(&prog);
+	return (pei_wrapper_entry_t)prog_entry(&prog);
 }
 
 void broadwell_run_reference_code(void)