[coreboot-gerrit] New patch to review for coreboot: e1c7777 fsp: Move fsp to fsp1_0

Marc Jones (marc.jones@se-eng.com) gerrit at coreboot.org
Thu Apr 23 08:07:01 CEST 2015


Marc Jones (marc.jones at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/9970

-gerrit

commit e1c777764eba77c6020f5e278fa00c98b3e4c7ad
Author: Marc Jones <marc.jones at se-eng.com>
Date:   Wed Apr 22 23:16:31 2015 -0600

    fsp: Move fsp to fsp1_0
    
    Prepare for FSP 1.1 integration by moving the FSP to a FSP 1.0 specific
    directory. See follow-on patches for sharing of common code.
    
    Change-Id: Ic58cb4074c65b91d119909132a012876d7ee7b74
    Signed-off-by: Marc Jones <marc.jones at se-eng.com>
---
 src/Kconfig                                        |   2 +-
 src/cpu/Makefile.inc                               |   2 +-
 src/cpu/intel/fsp_model_206ax/Kconfig              |   2 +-
 src/cpu/intel/fsp_model_406dx/Kconfig              |   2 +-
 src/cpu/x86/Kconfig                                |   4 +-
 src/cpu/x86/car.c                                  |  10 +-
 src/drivers/intel/Makefile.inc                     |   2 +-
 src/drivers/intel/fsp/Kconfig                      | 145 ------
 src/drivers/intel/fsp/Makefile.inc                 |  49 --
 src/drivers/intel/fsp/cache_as_ram.inc             | 177 -------
 src/drivers/intel/fsp/fastboot_cache.c             | 254 ----------
 src/drivers/intel/fsp/fsp_util.c                   | 323 ------------
 src/drivers/intel/fsp/fsp_util.h                   | 135 -----
 src/drivers/intel/fsp/fsp_values.h                 |  41 --
 src/drivers/intel/fsp/hob.c                        | 269 ----------
 src/drivers/intel/fsp1_0/Kconfig                   | 145 ++++++
 src/drivers/intel/fsp1_0/Makefile.inc              |  49 ++
 src/drivers/intel/fsp1_0/cache_as_ram.inc          | 177 +++++++
 src/drivers/intel/fsp1_0/fastboot_cache.c          | 254 ++++++++++
 src/drivers/intel/fsp1_0/fsp_util.c                | 323 ++++++++++++
 src/drivers/intel/fsp1_0/fsp_util.h                | 135 +++++
 src/drivers/intel/fsp1_0/fsp_values.h              |  41 ++
 src/drivers/intel/fsp1_0/hob.c                     | 269 ++++++++++
 src/mainboard/intel/bayleybay_fsp/romstage.c       |   2 +-
 src/mainboard/intel/minnowmax/romstage.c           |   2 +-
 src/mainboard/intel/mohonpeak/romstage.c           |   2 +-
 src/mainboard/siemens/mc_tcu3/romstage.c           |   2 +-
 src/northbridge/intel/fsp_rangeley/chip.h          |   2 +-
 src/northbridge/intel/fsp_rangeley/fsp/Kconfig     |   2 +-
 .../intel/fsp_rangeley/fsp/chipset_fsp_util.c      |   2 +-
 src/northbridge/intel/fsp_rangeley/northbridge.c   |   2 +-
 src/northbridge/intel/fsp_rangeley/raminit.c       |   2 +-
 src/northbridge/intel/fsp_sandybridge/fsp/Kconfig  |   2 +-
 src/soc/intel/fsp_baytrail/baytrail/romstage.h     |   2 +-
 src/soc/intel/fsp_baytrail/chip.c                  |   2 +-
 src/soc/intel/fsp_baytrail/chip.h                  |   2 +-
 src/soc/intel/fsp_baytrail/fsp/Kconfig             |   2 +-
 src/soc/intel/fsp_baytrail/fsp/chipset_fsp_util.c  |   2 +-
 src/soc/intel/fsp_baytrail/memmap.c                |   2 +-
 src/soc/intel/fsp_baytrail/northcluster.c          |   2 +-
 src/soc/intel/fsp_baytrail/romstage/romstage.c     |   2 +-
 src/southbridge/intel/fsp_rangeley/romstage.c      |   2 +-
 src/southbridge/intel/fsp_rangeley/romstage.h      |   2 +-
 src/vendorcode/intel/Kconfig                       |   8 +-
 .../intel/fsp/baytrail/absf/minnowmax_1gb.absf     | 328 -------------
 .../intel/fsp/baytrail/absf/minnowmax_2gb.absf     | 328 -------------
 src/vendorcode/intel/fsp/baytrail/include/azalia.h |  66 ---
 src/vendorcode/intel/fsp/baytrail/include/fsp.h    |  69 ---
 src/vendorcode/intel/fsp/baytrail/include/fspapi.h |  65 ---
 src/vendorcode/intel/fsp/baytrail/include/fspffs.h | 506 -------------------
 src/vendorcode/intel/fsp/baytrail/include/fspfv.h  | 247 ----------
 src/vendorcode/intel/fsp/baytrail/include/fsphob.h | 542 --------------------
 .../intel/fsp/baytrail/include/fspinfoheader.h     |  62 ---
 .../intel/fsp/baytrail/include/fspplatform.h       |  78 ---
 .../intel/fsp/baytrail/include/fsptypes.h          | 116 -----
 src/vendorcode/intel/fsp/baytrail/include/fspvpd.h | 119 -----
 src/vendorcode/intel/fsp/baytrail/srx/board_fsp.c  | 186 -------
 src/vendorcode/intel/fsp/baytrail/srx/fsphob.c     | 198 --------
 .../intel/fsp/ivybridge_bd82x6x/include/fspapi.h   |  63 ---
 .../intel/fsp/ivybridge_bd82x6x/include/fspffs.h   | 506 -------------------
 .../intel/fsp/ivybridge_bd82x6x/include/fspfv.h    | 247 ----------
 .../intel/fsp/ivybridge_bd82x6x/include/fsphob.h   | 507 -------------------
 .../fsp/ivybridge_bd82x6x/include/fspinfoheader.h  |  62 ---
 .../fsp/ivybridge_bd82x6x/include/fspplatform.h    |  63 ---
 .../intel/fsp/ivybridge_bd82x6x/include/fsptypes.h | 116 -----
 .../fsp/ivybridge_bd82x6x/include/mem_config.h     | 131 -----
 .../intel/fsp/ivybridge_bd82x6x/include/peifsp.h   |  42 --
 .../intel/fsp/ivybridge_bd82x6x/srx/fsphob.c       | 207 --------
 .../intel/fsp/ivybridge_i89xx/include/fsp_vpd.h    |  60 ---
 .../intel/fsp/ivybridge_i89xx/include/fspapi.h     |  49 --
 .../intel/fsp/ivybridge_i89xx/include/fspffs.h     | 506 -------------------
 .../intel/fsp/ivybridge_i89xx/include/fspfv.h      | 247 ----------
 .../intel/fsp/ivybridge_i89xx/include/fsphob.h     | 507 -------------------
 .../fsp/ivybridge_i89xx/include/fspinfoheader.h    |  62 ---
 .../fsp/ivybridge_i89xx/include/fspplatform.h      |  52 --
 .../intel/fsp/ivybridge_i89xx/include/fsptypes.h   | 116 -----
 .../intel/fsp/ivybridge_i89xx/include/mem_config.h | 131 -----
 .../intel/fsp/ivybridge_i89xx/include/peifsp.h     |  42 --
 .../intel/fsp/ivybridge_i89xx/srx/fsphob.c         | 207 --------
 src/vendorcode/intel/fsp/rangeley/include/fspapi.h |  67 ---
 .../intel/fsp/rangeley/include/fspbootmode.h       |  54 --
 src/vendorcode/intel/fsp/rangeley/include/fspffs.h | 507 -------------------
 src/vendorcode/intel/fsp/rangeley/include/fspfv.h  | 249 ----------
 src/vendorcode/intel/fsp/rangeley/include/fsphob.h | 544 ---------------------
 .../intel/fsp/rangeley/include/fspinfoheader.h     |  62 ---
 .../intel/fsp/rangeley/include/fspplatform.h       | 113 -----
 .../intel/fsp/rangeley/include/fsptypes.h          | 178 -------
 src/vendorcode/intel/fsp/rangeley/include/fspvpd.h |  87 ----
 src/vendorcode/intel/fsp/rangeley/srx/fsphob.c     | 204 --------
 .../intel/fsp1_0/baytrail/absf/minnowmax_1gb.absf  | 328 +++++++++++++
 .../intel/fsp1_0/baytrail/absf/minnowmax_2gb.absf  | 328 +++++++++++++
 .../intel/fsp1_0/baytrail/include/azalia.h         |  66 +++
 src/vendorcode/intel/fsp1_0/baytrail/include/fsp.h |  69 +++
 .../intel/fsp1_0/baytrail/include/fspapi.h         |  65 +++
 .../intel/fsp1_0/baytrail/include/fspffs.h         | 506 +++++++++++++++++++
 .../intel/fsp1_0/baytrail/include/fspfv.h          | 247 ++++++++++
 .../intel/fsp1_0/baytrail/include/fsphob.h         | 542 ++++++++++++++++++++
 .../intel/fsp1_0/baytrail/include/fspinfoheader.h  |  62 +++
 .../intel/fsp1_0/baytrail/include/fspplatform.h    |  78 +++
 .../intel/fsp1_0/baytrail/include/fsptypes.h       | 116 +++++
 .../intel/fsp1_0/baytrail/include/fspvpd.h         | 119 +++++
 .../intel/fsp1_0/baytrail/srx/board_fsp.c          | 186 +++++++
 src/vendorcode/intel/fsp1_0/baytrail/srx/fsphob.c  | 198 ++++++++
 .../fsp1_0/ivybridge_bd82x6x/include/fspapi.h      |  63 +++
 .../fsp1_0/ivybridge_bd82x6x/include/fspffs.h      | 506 +++++++++++++++++++
 .../intel/fsp1_0/ivybridge_bd82x6x/include/fspfv.h | 247 ++++++++++
 .../fsp1_0/ivybridge_bd82x6x/include/fsphob.h      | 507 +++++++++++++++++++
 .../ivybridge_bd82x6x/include/fspinfoheader.h      |  62 +++
 .../fsp1_0/ivybridge_bd82x6x/include/fspplatform.h |  63 +++
 .../fsp1_0/ivybridge_bd82x6x/include/fsptypes.h    | 116 +++++
 .../fsp1_0/ivybridge_bd82x6x/include/mem_config.h  | 131 +++++
 .../fsp1_0/ivybridge_bd82x6x/include/peifsp.h      |  42 ++
 .../intel/fsp1_0/ivybridge_bd82x6x/srx/fsphob.c    | 207 ++++++++
 .../intel/fsp1_0/ivybridge_i89xx/include/fsp_vpd.h |  60 +++
 .../intel/fsp1_0/ivybridge_i89xx/include/fspapi.h  |  49 ++
 .../intel/fsp1_0/ivybridge_i89xx/include/fspffs.h  | 506 +++++++++++++++++++
 .../intel/fsp1_0/ivybridge_i89xx/include/fspfv.h   | 247 ++++++++++
 .../intel/fsp1_0/ivybridge_i89xx/include/fsphob.h  | 507 +++++++++++++++++++
 .../fsp1_0/ivybridge_i89xx/include/fspinfoheader.h |  62 +++
 .../fsp1_0/ivybridge_i89xx/include/fspplatform.h   |  52 ++
 .../fsp1_0/ivybridge_i89xx/include/fsptypes.h      | 116 +++++
 .../fsp1_0/ivybridge_i89xx/include/mem_config.h    | 131 +++++
 .../intel/fsp1_0/ivybridge_i89xx/include/peifsp.h  |  42 ++
 .../intel/fsp1_0/ivybridge_i89xx/srx/fsphob.c      | 207 ++++++++
 .../intel/fsp1_0/rangeley/include/fspapi.h         |  67 +++
 .../intel/fsp1_0/rangeley/include/fspbootmode.h    |  54 ++
 .../intel/fsp1_0/rangeley/include/fspffs.h         | 507 +++++++++++++++++++
 .../intel/fsp1_0/rangeley/include/fspfv.h          | 249 ++++++++++
 .../intel/fsp1_0/rangeley/include/fsphob.h         | 544 +++++++++++++++++++++
 .../intel/fsp1_0/rangeley/include/fspinfoheader.h  |  62 +++
 .../intel/fsp1_0/rangeley/include/fspplatform.h    | 113 +++++
 .../intel/fsp1_0/rangeley/include/fsptypes.h       | 178 +++++++
 .../intel/fsp1_0/rangeley/include/fspvpd.h         |  87 ++++
 src/vendorcode/intel/fsp1_0/rangeley/srx/fsphob.c  | 204 ++++++++
 134 files changed, 10327 insertions(+), 10327 deletions(-)

diff --git a/src/Kconfig b/src/Kconfig
index d7fff15..f531f07 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -335,7 +335,7 @@ source "src/ec/acpi/Kconfig"
 source "src/ec/*/*/Kconfig"
 comment "SoC"
 source "src/soc/*/*/Kconfig"
-source "src/drivers/intel/fsp/Kconfig"
+source "src/drivers/intel/fsp1_0/Kconfig"
 
 endmenu
 
diff --git a/src/cpu/Makefile.inc b/src/cpu/Makefile.inc
index da0e76f..b0991bc 100644
--- a/src/cpu/Makefile.inc
+++ b/src/cpu/Makefile.inc
@@ -30,7 +30,7 @@ cpu_ucode_cbfs_file = $(obj)/cpu_microcode_blob.bin
 cbfs_include_ucode = y
 endif
 
-ifeq ($(CONFIG_PLATFORM_USES_FSP), y)
+ifeq ($(CONFIG_PLATFORM_USES_FSP1_0), y)
 cpu_ucode_cbfs_offset = "-b $(CONFIG_CPU_MICROCODE_CBFS_LOC)"
 else
 cpu_ucode_cbfs_offset = "-b"
diff --git a/src/cpu/intel/fsp_model_206ax/Kconfig b/src/cpu/intel/fsp_model_206ax/Kconfig
index 05bdce4..71deb3a 100644
--- a/src/cpu/intel/fsp_model_206ax/Kconfig
+++ b/src/cpu/intel/fsp_model_206ax/Kconfig
@@ -28,7 +28,7 @@ if CPU_INTEL_FSP_MODEL_206AX || CPU_INTEL_FSP_MODEL_306AX
 
 config CPU_SPECIFIC_OPTIONS
 	def_bool y
-	select PLATFORM_USES_FSP
+	select PLATFORM_USES_FSP1_0
 	select ARCH_BOOTBLOCK_X86_32
 	select ARCH_VERSTAGE_X86_32
 	select ARCH_ROMSTAGE_X86_32
diff --git a/src/cpu/intel/fsp_model_406dx/Kconfig b/src/cpu/intel/fsp_model_406dx/Kconfig
index ec4be84..7813969 100644
--- a/src/cpu/intel/fsp_model_406dx/Kconfig
+++ b/src/cpu/intel/fsp_model_406dx/Kconfig
@@ -24,7 +24,7 @@ if CPU_INTEL_FSP_MODEL_406DX
 
 config CPU_SPECIFIC_OPTIONS
 	def_bool y
-	select PLATFORM_USES_FSP
+	select PLATFORM_USES_FSP1_0
 	select ARCH_BOOTBLOCK_X86_32
 	select ARCH_VERSTAGE_X86_32
 	select ARCH_ROMSTAGE_X86_32
diff --git a/src/cpu/x86/Kconfig b/src/cpu/x86/Kconfig
index 41c2288..21a0fac 100644
--- a/src/cpu/x86/Kconfig
+++ b/src/cpu/x86/Kconfig
@@ -105,12 +105,12 @@ config X86_AMD_FIXED_MTRRS
 	  This option informs the MTRR code to use the RdMem and WrMem fields
 	  in the fixed MTRR MSRs.
 
-config PLATFORM_USES_FSP
+config PLATFORM_USES_FSP1_0
 	bool
 	default n
 	help
 	  Selected for Intel processors/platform combinations that use the
-	  Intel Firmware Support Package (FSP) for initialization.
+	  Intel Firmware Support Package (FSP) 1.0 for initialization.
 
 config PARALLEL_MP
 	def_bool n
diff --git a/src/cpu/x86/car.c b/src/cpu/x86/car.c
index 18d74b2..342a179 100644
--- a/src/cpu/x86/car.c
+++ b/src/cpu/x86/car.c
@@ -23,8 +23,8 @@
 #include <cbmem.h>
 #include <arch/early_variables.h>
 
-#if IS_ENABLED(CONFIG_PLATFORM_USES_FSP)
-#include <drivers/intel/fsp/fsp_util.h>
+#if IS_ENABLED(CONFIG_PLATFORM_USES_FSP1_0)
+#include <drivers/intel/fsp1_0/fsp_util.h>
 #endif
 typedef void (* const car_migration_func_t)(void);
 
@@ -67,7 +67,7 @@ void *car_get_var_ptr(void *var)
 		return var;
 	}
 
-#if IS_ENABLED(CONFIG_PLATFORM_USES_FSP)
+#if IS_ENABLED(CONFIG_PLATFORM_USES_FSP1_0)
 	migrated_base=(char *)find_saved_temp_mem(
 			*(void **)CBMEM_FSP_HOB_PTR);
 #else
@@ -100,7 +100,7 @@ void *car_sync_var_ptr(void *var)
 	if (*mig_var < _car_start || *mig_var > _car_end)
 		return mig_var;
 
-#if !IS_ENABLED(CONFIG_PLATFORM_USES_FSP)
+#if !IS_ENABLED(CONFIG_PLATFORM_USES_FSP1_0)
 	/* Keep console buffer in CAR until cbmemc_reinit() moves it. */
 	if (*mig_var == _car_end)
 		return mig_var;
@@ -149,7 +149,7 @@ static void do_car_migrate_hooks(void)
 
 void car_migrate_variables(void)
 {
-	if (!IS_ENABLED(PLATFORM_USES_FSP))
+	if (!IS_ENABLED(PLATFORM_USES_FSP1_0))
 		do_car_migrate_variables();
 
 	do_car_migrate_hooks();
diff --git a/src/drivers/intel/Makefile.inc b/src/drivers/intel/Makefile.inc
index dba81b5..dc947ff 100644
--- a/src/drivers/intel/Makefile.inc
+++ b/src/drivers/intel/Makefile.inc
@@ -1,4 +1,4 @@
 subdirs-y += gma
 subdirs-y += wifi
-subdirs-$(CONFIG_PLATFORM_USES_FSP) += fsp
+subdirs-$(CONFIG_PLATFORM_USES_FSP1_0) += fsp1_0
 subdirs-$(CONFIG_DRIVER_INTEL_I210) += i210
diff --git a/src/drivers/intel/fsp/Kconfig b/src/drivers/intel/fsp/Kconfig
deleted file mode 100644
index 2d41365..0000000
--- a/src/drivers/intel/fsp/Kconfig
+++ /dev/null
@@ -1,145 +0,0 @@
-##
-## This file is part of the coreboot project.
-##
-## Copyright (C) 2014 Sage Electronic Engineering, LLC.
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; version 2 of the License.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-if PLATFORM_USES_FSP
-
-comment "Intel FSP"
-
-config HAVE_FSP_BIN
-	bool "Use Intel Firmware Support Package"
-	help
-	  Select this option to add an Intel FSP binary to
-	  the resulting coreboot image.
-
-	  Note: Without this binary, coreboot builds relying on the FSP
-	  will not boot
-
-config DCACHE_RAM_BASE
-	hex
-	default 0xfef00000
-
-config DCACHE_RAM_SIZE
-	hex
-	default 0x4000
-
-if HAVE_FSP_BIN
-
-config FSP_FILE
-	string "Intel FSP binary path and filename"
-	help
-	  The path and filename of the Intel FSP binary for this platform.
-
-config FSP_LOC
-	hex "Intel FSP Binary location in CBFS"
-	help
-	  The location in CBFS that the FSP is located. This must match the
-	  value that is set in the FSP binary.  If the FSP needs to be moved,
-	  rebase the FSP with Intel's BCT (tool).
-
-config ENABLE_FSP_FAST_BOOT
-	bool "Enable Fast Boot"
-	select ENABLE_MRC_CACHE
-	default n
-	help
-	  Enabling this feature will force the MRC data to be cached in NV
-	  storage to be used for speeding up boot time on future reboots
-	  and/or power cycles.
-
-config ENABLE_MRC_CACHE
-	bool
-	default y if HAVE_ACPI_RESUME
-	default n
-	help
-	  Enabling this feature will cause MRC data to be cached in NV storage.
-	  This can either be used for fast boot, or just because the FSP wants
-	  it to be saved.
-
-config MRC_CACHE_SIZE
-	hex "Fast Boot Data Cache Size"
-	default 0x10000
-	depends on ENABLE_MRC_CACHE
-	help
-	  This is the amount of space in NV storage that is reserved for the
-	  fast boot data cache storage.
-
-	  WARNING: Because this area will be erased and re-written, the size
-	  should be a full sector of the flash ROM chip and nothing else should
-	  be included in CBFS in any sector that the fast boot cache data is in.
-
-config OVERRIDE_CACHE_CACHE_LOC
-	bool
-	help
-	  Selected by the platform to set a new default location for the
-	  MRC/fast boot cache.
-
-config MRC_CACHE_LOC_OVERRIDE
-	hex
-	help
-	  Sets the override CBFS location of the MRC/fast boot cache.
-
-config MRC_CACHE_LOC
-	hex "Fast Boot Data Cache location in CBFS"
-	default MRC_CACHE_LOC_OVERRIDE if OVERRIDE_CACHE_CACHE_LOC
-	default 0xfff50000
-	depends on ENABLE_MRC_CACHE
-	help
-	  The location in CBFS for the MRC data to be cached.
-
-	  WARNING: This should be on a sector boundary of the BIOS ROM chip
-	  and nothing else should be included in that sector, or IT WILL BE
-	  ERASED.
-
-config VIRTUAL_ROM_SIZE
-	hex "Virtual ROM Size"
-	default ROM_SIZE
-	depends on ENABLE_MRC_CACHE
-	help
-	  This is used to calculate the offset of the MRC data cache in NV
-	  Storage for fast boot.  If in doubt, leave this set to the default
-	  which sets the virtual size equal to the ROM size.
-
-	  Example: Cougar Canyon 2 has two 8 MB SPI ROMs.  When the SPI ROMs are
-	  loaded with a 4 MB coreboot image, the virtual ROM size is 8 MB.  When
-	  the SPI ROMs are loaded with an 8 MB coreboot image, the virtual ROM
-	  size is 16 MB.
-
-endif #HAVE_FSP_BIN
-
-config CACHE_ROM_SIZE_OVERRIDE
-	hex "Cache ROM Size"
-	default CBFS_SIZE
-	help
-	  This is the size of the cachable area that is passed into the FSP in
-	  the early initialization.  Typically this should be the size of the CBFS
-	  area, but the size must be a power of 2 whereas the CBFS size does not
-	  have this limitation.
-
-config USE_GENERIC_FSP_CAR_INC
-	bool
-	default n
-	help
-	  The chipset can select this to use a generic cache_as_ram.inc file
-	  that should be good for all FSP based platforms.
-
-config FSP_USES_UPD
-	bool
-	default n
-	help
-	  If this FSP uses UPD/VPD data regions, select this in the chipset Kconfig.
-endif #PLATFORM_USES_FSP
diff --git a/src/drivers/intel/fsp/Makefile.inc b/src/drivers/intel/fsp/Makefile.inc
deleted file mode 100644
index 71d676d..0000000
--- a/src/drivers/intel/fsp/Makefile.inc
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-# This file is part of the coreboot project.
-#
-# Copyright (C) 2014 Sage Electronic Engineering, LLC.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-ramstage-y += fsp_util.c hob.c
-romstage-y += fsp_util.c hob.c
-
-ramstage-$(CONFIG_ENABLE_MRC_CACHE) += fastboot_cache.c
-romstage-$(CONFIG_ENABLE_MRC_CACHE) += fastboot_cache.c
-
-CPPFLAGS_common += -Isrc/drivers/intel/fsp
-
-ifeq ($(CONFIG_USE_GENERIC_FSP_CAR_INC),y)
-cpu_incs += $(src)/drivers/intel/fsp/cache_as_ram.inc
-endif
-
-ifeq ($(CONFIG_HAVE_FSP_BIN),y)
-cbfs-files-y += fsp.bin
-fsp.bin-file := $(call strip_quotes,$(CONFIG_FSP_FILE))
-fsp.bin-position := $(CONFIG_FSP_LOC)
-fsp.bin-type := fsp
-endif
-
-ifeq ($(CONFIG_ENABLE_MRC_CACHE),y)
-$(obj)/mrc.cache:
-	dd if=/dev/zero count=1 \
-	bs=$(shell printf "%d" $(CONFIG_MRC_CACHE_SIZE) ) | \
-	tr '\000' '\377' > $@
-
-cbfs-files-y += mrc.cache
-mrc.cache-file := $(obj)/mrc.cache
-mrc.cache-position := $(CONFIG_MRC_CACHE_LOC)
-mrc.cache-type := mrc_cache
-endif
diff --git a/src/drivers/intel/fsp/cache_as_ram.inc b/src/drivers/intel/fsp/cache_as_ram.inc
deleted file mode 100644
index 8604c3b..0000000
--- a/src/drivers/intel/fsp/cache_as_ram.inc
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2000,2007 Ronald G. Minnich <rminnich at gmail.com>
- * Copyright (C) 2007-2008 coresystems GmbH
- * Copyright (C) 2013-2014 Sage Electronic Engineering, LLC.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <cpu/x86/mtrr.h>
-#include <cpu/x86/cache.h>
-#include <cpu/x86/post_code.h>
-#include <microcode_size.h>
-#include <cbmem.h>
-
-#ifndef CONFIG_FSP_LOC
-# error "CONFIG_FSP_LOC must be set."
-#endif
-
-#ifndef CONFIG_POST_IO
-# error "CONFIG_POST_IO must be set."
-#endif
-
-#if CONFIG_POST_IO
-# ifndef CONFIG_POST_IO_PORT
-#  error "CONFIG_POST_IO_PORT must be set."
-# endif
-#endif
-
-#ifndef CONFIG_CPU_MICROCODE_CBFS_LOC
-# error "CONFIG_CPU_MICROCODE_CBFS_LOC must be set."
-#endif
-
-#define LHLT_DELAY	0x50000		/* I/O delay between post codes on failure */
-
-	cmp   $0, %eax
-	jne   bisthalt
-
-cache_as_ram:
-	post_code(0x20)
-
-	/*
-	 * Find the FSP binary in cbfs.
-	 * Make a fake stack that has the return value back to this code.
-	 */
-	lea   fake_fsp_stack, %esp
-	jmp   find_fsp
-find_fsp_ret:
-	/* Save the FSP location */
-	mov   %eax,   %ebp
-	cmp   $CONFIG_FSP_LOC, %eax
-	jb    halt1
-
-	post_code(0x22)
-
-	/* Calculate entry into FSP */
-	mov   0x30(%ebp), %eax	/* Load TempRamInitEntry */
-	add   0x1c(%ebp), %eax	/* add in the offset for the FSP base address */
-
-	/*
-	 * Pass early init variables on a fake stack (no memory yet)
-	 * as well as the return location
-	 */
-	lea   CAR_init_stack, %esp
-
-	/* call FSP binary to setup temporary stack */
-	jmp   *%eax
-
-CAR_init_done:
-	addl  $4, %esp
-	cmp   $0, %eax
-	jne   halt2
-
-	/* Save FSP_INFO_HEADER location in ebx */
-	mov    %ebp, %ebx
-
-	/*
-	 * set up bootloader stack
-	 * ecx:  stack base
-	 * edx:  stack top
-	 */
-	mov   %edx, %esp
-	movl  %esp, %ebp
-
-	/* Clear the cbmem CAR memory region. */
-	movl  %ecx, %edi
-	movl  %edx, %ecx
-	sub   %edi, %ecx
-	shr   $2, %ecx
-	xorl  %eax, %eax
-	rep   stosl
-
-before_romstage:
-	post_code(0x23)
-
-	/* Call romstage.c main function. */
-	pushl %ebx /* main takes FSP_INFO_HEADER as its argument */
-	call  main /* does not return */
-	movb  $0xB8, %ah
-	jmp   .Lhlt
-
-bisthalt:
-	movb  $0xB9, %ah
-	jmp   .Lhlt
-
-halt1:
-	/*
-	 * Failures for postcode 0xBA - failed in find_fsp()
-	 *
-	 * Values are:
-	 * 0x01 - FV signature, "_FVH" not present
-	 * 0x02 - FFS GUID not present
-	 * 0x03 - FSP INFO Header not found
-	 * 0x04 - ImageBase does not equal CONFIG_FSP_LOC - Is the FSP rebased to
-	 *        a different location, or does it need to be?
-	 * 0x05 - FSP INFO Header signature "FSPH" not found
-	 * 0x06 - FSP Image ID is not the expected ID.
-	 */
-	movb  $0xBA, %ah
-	jmp   .Lhlt
-
-halt2:
-	/*
-	 * Failures for postcode 0xBB - failed in the FSP:
-	 *
-	 * 0x00 - FSP_SUCCESS: Temp RAM was initialized successfully.
-	 * 0x02 - FSP_INVALID_PARAMETER: Input parameters are invalid.
-	 * 0x0E - FSP_NOT_FOUND: No valid microcode was found in the microcode region.
-	 * 0x03 - FSP_UNSUPPORTED: The FSP calling conditions were not met.
-	 * 0x07 - FSP_DEVICE_ERROR: Temp RAM initialization failed
-	 * 0x14 - FSP_ALREADY_STARTED: Temp RAM initialization has been invoked
-	 */
-	movb  $0xBB, %ah
-
-.Lhlt:
-	xchg  %al, %ah
-#if CONFIG_POST_IO
-	outb  %al, $CONFIG_POST_IO_PORT
-#else
-	post_code(POST_DEAD_CODE)
-#endif
-	movl  $LHLT_DELAY, %ecx
-.Lhlt_Delay:
-	outb  %al, $0xED
-	loop  .Lhlt_Delay
-	jmp   .Lhlt
-
-/*
- * esp is set to this location so that the call into and return from the FSP
- * in find_fsp will work.
- */
-	.align 4
-fake_fsp_stack:
-	.long  find_fsp_ret
-
-CAR_init_params:
-	.long  CONFIG_CPU_MICROCODE_CBFS_LOC
-	.long  MICROCODE_REGION_LENGTH
-	.long  0xFFFFFFFF - CACHE_ROM_SIZE + 1	/* Firmware Location */
-	.long  CACHE_ROM_SIZE	/* Total Firmware Length */
-
-CAR_init_stack:
-	.long  CAR_init_done
-	.long  CAR_init_params
-
diff --git a/src/drivers/intel/fsp/fastboot_cache.c b/src/drivers/intel/fsp/fastboot_cache.c
deleted file mode 100644
index bcf39ab..0000000
--- a/src/drivers/intel/fsp/fastboot_cache.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2012 Google Inc.
- * Copyright (C) 2013-2014 Sage Electronic Engineering, LLC.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <stdint.h>
-#include <string.h>
-#include <bootstate.h>
-#include <console/console.h>
-#include <cbfs.h>
-#include <ip_checksum.h>
-#include <device/device.h>
-#include <cbmem.h>
-#include <spi-generic.h>
-#include <spi_flash.h>
-#include <lib.h> // hexdump
-#include "fsp_util.h"
-
-#ifndef CONFIG_VIRTUAL_ROM_SIZE
-#error "CONFIG_VIRTUAL_ROM_SIZE must be set."
-#endif
-
-/* convert a pointer to flash area into the offset inside the flash */
-static inline u32 to_flash_offset(void *p) {
-	return ((u32)p + CONFIG_VIRTUAL_ROM_SIZE);
-}
-
-static struct mrc_data_container *next_mrc_block(
-	struct mrc_data_container *mrc_cache)
-{
-	/* MRC data blocks are aligned within the region */
-	u32 mrc_size = sizeof(*mrc_cache) + mrc_cache->mrc_data_size;
-	if (mrc_size & (MRC_DATA_ALIGN - 1UL)) {
-		mrc_size &= ~(MRC_DATA_ALIGN - 1UL);
-		mrc_size += MRC_DATA_ALIGN;
-	}
-
-	u8 *region_ptr = (u8*)mrc_cache;
-	region_ptr += mrc_size;
-	return (struct mrc_data_container *)region_ptr;
-}
-
-static int is_mrc_cache(struct mrc_data_container *mrc_cache)
-{
-	return (!!mrc_cache) && (mrc_cache->mrc_signature == MRC_DATA_SIGNATURE);
-}
-
-static u32 get_mrc_cache_region(struct mrc_data_container **mrc_region_ptr)
-{
-	size_t region_size;
-	*mrc_region_ptr = cbfs_get_file_content(CBFS_DEFAULT_MEDIA,
-						"mrc.cache",
-						CBFS_TYPE_MRC_CACHE,
-						&region_size);
-
-	return region_size;
-}
-
-/*
- * Find the largest index block in the MRC cache. Return NULL if none is
- * found.
- */
-static struct mrc_data_container *find_current_mrc_cache_local
-	(struct mrc_data_container *mrc_cache, u32 region_size)
-{
-	u32 region_end;
-	u32 entry_id = 0;
-	struct mrc_data_container *mrc_next = mrc_cache;
-
-	region_end = (u32) mrc_cache + region_size;
-
-	/* Search for the last filled entry in the region */
-	while (is_mrc_cache(mrc_next)) {
-		entry_id++;
-		mrc_cache = mrc_next;
-		mrc_next = next_mrc_block(mrc_next);
-		if ((u32)mrc_next >= region_end) {
-			/* Stay in the MRC data region */
-			break;
-		}
-	}
-
-	if (entry_id == 0) {
-		printk(BIOS_ERR, "%s: No valid fast boot cache found.\n", __func__);
-		return NULL;
-	}
-
-	/* Verify checksum */
-	if (mrc_cache->mrc_checksum !=
-	    compute_ip_checksum(mrc_cache->mrc_data,
-				mrc_cache->mrc_data_size)) {
-		printk(BIOS_ERR, "%s: fast boot cache checksum mismatch\n", __func__);
-		return NULL;
-	}
-
-	printk(BIOS_DEBUG, "%s: picked entry %u from cache block\n", __func__,
-	       entry_id - 1);
-
-	return mrc_cache;
-}
-
-/* SPI code needs malloc/free.
- * Also unknown if writing flash from XIP-flash code is a good idea
- */
-#if !defined(__PRE_RAM__)
-/* find the first empty block in the MRC cache area.
- * If there's none, return NULL.
- *
- * @mrc_cache_base - base address of the MRC cache area
- * @mrc_cache - current entry (for which we need to find next)
- * @region_size - total size of the MRC cache area
- */
-static struct mrc_data_container *find_next_mrc_cache
-		(struct mrc_data_container *mrc_cache_base,
-		 struct mrc_data_container *mrc_cache,
-		 u32 region_size)
-{
-	u32 region_end = (u32) mrc_cache_base + region_size;
-	u32 mrc_data_size = mrc_cache->mrc_data_size;
-
-	mrc_cache = next_mrc_block(mrc_cache);
-	if (((u32)mrc_cache + mrc_data_size) >= region_end) {
-		/* Crossed the boundary */
-		mrc_cache = NULL;
-		printk(BIOS_DEBUG, "%s: no available entries found\n",
-		       __func__);
-	} else {
-		printk(BIOS_DEBUG,
-		       "%s: picked next entry from cache block at %p\n",
-		       __func__, mrc_cache);
-	}
-
-	return mrc_cache;
-}
-
-void update_mrc_cache(void *unused)
-{
-	printk(BIOS_DEBUG, "Updating fast boot cache data.\n");
-	struct mrc_data_container *current = cbmem_find(CBMEM_ID_MRCDATA);
-	struct mrc_data_container *cache, *cache_base;
-	u32 cache_size;
-
-	if (!current) {
-		printk(BIOS_ERR, "No fast boot cache in cbmem. Can't update flash.\n");
-		return;
-	}
-	if (current->mrc_data_size == -1) {
-		printk(BIOS_ERR, "Fast boot cache data in cbmem invalid.\n");
-		return;
-	}
-
-	cache_size = get_mrc_cache_region(&cache_base);
-	if (cache_base == NULL) {
-		printk(BIOS_ERR, "%s: could not find fast boot cache area\n",
-		       __func__);
-		return;
-	}
-
-	/*
-	 * we need to:
-	 * 0. compare MRC data to last mrc-cache block (exit if same)
-	 */
-	cache = find_current_mrc_cache_local(cache_base, cache_size);
-
-	if (cache && (cache->mrc_data_size == current->mrc_data_size) &&
-			(memcmp(cache, current, cache->mrc_data_size) == 0)) {
-		printk(BIOS_DEBUG,
-			"MRC data in flash is up to date. No update.\n");
-		return;
-	}
-
-	/*  1. use spi_flash_probe() to find the flash, then... */
-	spi_init();
-	struct spi_flash *flash = spi_flash_probe(0, 0);
-	if (!flash) {
-		printk(BIOS_DEBUG, "Could not find SPI device\n");
-		return;
-	}
-
-	/*  2. look up the first unused block */
-	if (cache)
-		cache = find_next_mrc_cache(cache_base, cache, cache_size);
-
-	/*
-	 * 3. if no such place exists, erase entire mrc-cache range & use
-	 * block 0. First time around the erase is not needed, but this is a
-	 * small overhead for simpler code.
-	 */
-	if (!cache) {
-		printk(BIOS_DEBUG,
-		       "Need to erase the MRC cache region of %d bytes at %p\n",
-		       cache_size, cache_base);
-
-		flash->erase(flash, to_flash_offset(cache_base), cache_size);
-
-		/* we will start at the beginning again */
-		cache = cache_base;
-	}
-	/*  4. write mrc data with flash->write() */
-	printk(BIOS_DEBUG, "Write MRC cache update to flash at %p\n",
-	       cache);
-	flash->write(flash, to_flash_offset(cache),
-		     current->mrc_data_size + sizeof(*current), current);
-}
-
-#endif	/* !defined(__PRE_RAM__) */
-
-void * find_and_set_fastboot_cache(void)
-{
-	struct mrc_data_container *mrc_cache = NULL;
-	if (((mrc_cache = find_current_mrc_cache()) == NULL) ||
-	    (mrc_cache->mrc_data_size == -1UL)) {
-		printk(BIOS_DEBUG, "FSP MRC cache not present.\n");
-		return NULL;
-	}
-	printk(BIOS_DEBUG, "FSP MRC cache present at %x.\n", (u32)mrc_cache);
-	printk(BIOS_SPEW, "Saved MRC data:\n");
-	hexdump32(BIOS_SPEW, (void *)mrc_cache->mrc_data, mrc_cache->mrc_data_size);
-	return (void *) mrc_cache->mrc_data;
-}
-
-struct mrc_data_container *find_current_mrc_cache(void)
-{
-	struct mrc_data_container *cache_base;
-	u32 cache_size;
-
-	cache_size = get_mrc_cache_region(&cache_base);
-	if (cache_base == NULL) {
-		printk(BIOS_ERR, "%s: could not find fast boot cache area\n",
-		       __func__);
-		return NULL;
-	}
-
-	/*
-	 * we need to:
-	 *  0. compare MRC data to last mrc-cache block (exit if same)
-	 */
-	return find_current_mrc_cache_local(cache_base, cache_size);
-}
diff --git a/src/drivers/intel/fsp/fsp_util.c b/src/drivers/intel/fsp/fsp_util.c
deleted file mode 100644
index a00cb81..0000000
--- a/src/drivers/intel/fsp/fsp_util.c
+++ /dev/null
@@ -1,323 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2013-2014 Sage Electronic Engineering, LLC.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <types.h>
-#include <string.h>
-#include <console/console.h>
-#include <bootstate.h>
-#include <cbmem.h>
-#include "fsp_util.h"
-#include <lib.h> // hexdump
-#include <ip_checksum.h>
-#include <timestamp.h>
-
-#ifndef __PRE_RAM__
-/* Globals pointers for FSP structures */
-void *FspHobListPtr = NULL;
-FSP_INFO_HEADER *fsp_header_ptr = NULL;
-
-void FspNotify (u32 Phase)
-{
-	FSP_NOTFY_PHASE        NotifyPhaseProc;
-	NOTIFY_PHASE_PARAMS    NotifyPhaseParams;
-	EFI_STATUS             Status;
-
-	if (fsp_header_ptr == NULL) {
-		fsp_header_ptr = (void *)find_fsp();
-		if ((u32)fsp_header_ptr < 0xff) {
-			post_code(0x4F); /* output something in case there is no serial */
-			die("Can't find the FSP!\n");
-		}
-	}
-
-	/* call FSP PEI to Notify PostPciEnumeration */
-	NotifyPhaseProc = (FSP_NOTFY_PHASE)(fsp_header_ptr->ImageBase +
-		fsp_header_ptr->NotifyPhaseEntry);
-	NotifyPhaseParams.Phase = Phase;
-
-	timestamp_add_now(Phase == EnumInitPhaseReadyToBoot ?
-		TS_FSP_BEFORE_FINALIZE : TS_FSP_BEFORE_ENUMERATE);
-
-	Status = NotifyPhaseProc (&NotifyPhaseParams);
-
-	timestamp_add_now(Phase == EnumInitPhaseReadyToBoot ?
-		TS_FSP_AFTER_FINALIZE : TS_FSP_AFTER_ENUMERATE);
-
-	if (Status != 0)
-		printk(BIOS_ERR,"FSP API NotifyPhase failed for phase 0x%x with status: 0x%x\n", Phase, Status);
-}
-#endif /* #ifndef __PRE_RAM__ */
-
-#ifdef __PRE_RAM__
-
-/*
- * Call the FSP to do memory init. The FSP doesn't return to this function.
- * The FSP returns to the romstage_main_continue().
- */
-void __attribute__ ((noreturn)) fsp_early_init (FSP_INFO_HEADER *fsp_ptr)
-{
-	FSP_FSP_INIT FspInitApi;
-	FSP_INIT_PARAMS FspInitParams;
-	FSP_INIT_RT_BUFFER FspRtBuffer;
-#if IS_ENABLED(CONFIG_FSP_USES_UPD)
-	UPD_DATA_REGION fsp_upd_data;
-#endif
-
-	memset((void*)&FspRtBuffer, 0, sizeof(FSP_INIT_RT_BUFFER));
-	FspRtBuffer.Common.StackTop = (u32 *)CONFIG_RAMTOP;
-	FspInitParams.NvsBufferPtr = NULL;
-
-#if IS_ENABLED(CONFIG_FSP_USES_UPD)
-	FspRtBuffer.Common.UpdDataRgnPtr = &fsp_upd_data;
-#endif
-	FspInitParams.RtBufferPtr = (FSP_INIT_RT_BUFFER *)&FspRtBuffer;
-	FspInitParams.ContinuationFunc = (CONTINUATION_PROC)ChipsetFspReturnPoint;
-	FspInitApi = (FSP_FSP_INIT)(fsp_ptr->ImageBase + fsp_ptr->FspInitEntry);
-
-	/* Call the chipset code to fill in the chipset specific structures */
-	chipset_fsp_early_init(&FspInitParams, fsp_ptr);
-
-	/* Call back to romstage for board specific changes */
-	romstage_fsp_rt_buffer_callback(&FspRtBuffer);
-
-	FspInitApi(&FspInitParams);
-
-	/* Should never return. Control will continue from ContinuationFunc */
-	die("Uh Oh! FspInitApi returned");
-}
-#endif	/* __PRE_RAM__ */
-
-volatile u8 * find_fsp ()
-{
-
-#ifdef __PRE_RAM__
-	volatile register u8 *fsp_ptr asm ("eax");
-
-	/* Entry point for CAR assembly routine */
-	__asm__ __volatile__ (
-		".global find_fsp\n\t"
-		"find_fsp:\n\t"
-	);
-#else
-	volatile u8 *fsp_ptr;
-#endif 	/* __PRE_RAM__ */
-
-#ifndef CONFIG_FSP_LOC
-#error "CONFIG_FSP_LOC must be set."
-#endif
-
-	/* The FSP is stored in CBFS */
-	fsp_ptr = (u8 *) CONFIG_FSP_LOC;
-
-	/* Check the FV signature, _FVH */
-	if (((EFI_FIRMWARE_VOLUME_HEADER *)fsp_ptr)->Signature == 0x4856465F) {
-		/* Go to the end of the FV header and align the address. */
-		fsp_ptr += ((EFI_FIRMWARE_VOLUME_HEADER *)fsp_ptr)->ExtHeaderOffset;
-		fsp_ptr += ((EFI_FIRMWARE_VOLUME_EXT_HEADER *)fsp_ptr)->ExtHeaderSize;
-		fsp_ptr = (u8 *)(((u32)fsp_ptr + 7) & 0xFFFFFFF8);
-	} else {
-		fsp_ptr = (u8*)ERROR_NO_FV_SIG;
-	}
-
-	/* Check the FFS GUID */
-	if (((u32)fsp_ptr > 0xff) &&
-		(((u32 *)&(((EFI_FFS_FILE_HEADER *)fsp_ptr)->Name))[0] == 0x912740BE) &&
-		(((u32 *)&(((EFI_FFS_FILE_HEADER *)fsp_ptr)->Name))[1] == 0x47342284) &&
-		(((u32 *)&(((EFI_FFS_FILE_HEADER *)fsp_ptr)->Name))[2] == 0xB08471B9) &&
-		(((u32 *)&(((EFI_FFS_FILE_HEADER *)fsp_ptr)->Name))[3] == 0x0C3F3527)) {
-		/* Add the FFS Header size to the base to find the Raw section Header */
-		fsp_ptr += sizeof(EFI_FFS_FILE_HEADER);
-	} else {
-		fsp_ptr = (u8 *)ERROR_NO_FFS_GUID;
-	}
-
-	if (((u32)fsp_ptr > 0xff) &&
-			((EFI_RAW_SECTION *)fsp_ptr)->Type == EFI_SECTION_RAW) {
-		/* Add the Raw Header size to the base to find the FSP INFO Header */
-		fsp_ptr += sizeof(EFI_RAW_SECTION);
-	} else {
-		fsp_ptr = (u8 *)ERROR_NO_INFO_HEADER;
-	}
-
-	/* Verify that the FSP is set to the base address we're expecting.*/
-	if (((u32)fsp_ptr > 0xff) &&
-			(*(u32*)(fsp_ptr + FSP_IMAGE_BASE_LOC) != CONFIG_FSP_LOC)) {
-		fsp_ptr = (u8 *)ERROR_IMAGEBASE_MISMATCH;
-	}
-
-	/* Verify the FSP Signature */
-	if (((u32)fsp_ptr > 0xff) &&
-			(*(u32*)(fsp_ptr + FSP_IMAGE_SIG_LOC) != FSP_SIG)){
-		fsp_ptr = (u8 *)ERROR_INFO_HEAD_SIG_MISMATCH;
-	}
-
-	/* Verify the FSP ID */
-	if (((u32)fsp_ptr > 0xff) &&
-		((*(u32 *)(fsp_ptr + FSP_IMAGE_ID_LOC) != FSP_IMAGE_ID_DWORD0) ||
-		 (*(u32 *)(fsp_ptr + (FSP_IMAGE_ID_LOC + 4)) != FSP_IMAGE_ID_DWORD1))) {
-		fsp_ptr = (u8 *)ERROR_FSP_SIG_MISMATCH;
-	}
-
-	return (fsp_ptr);
-}
-
-/** finds the saved temporary memory information in the FSP HOB list
- *
- * @param hob_list_ptr pointer to the start of the hob list
- * @return pointer to saved CAR MEM or NULL if not found.
- */
-void * find_saved_temp_mem(void *hob_list_ptr)
-{
-	EFI_GUID temp_hob_guid = FSP_BOOTLOADER_TEMPORARY_MEMORY_HOB_GUID;
-	EFI_HOB_GUID_TYPE *saved_mem_hob =
-			(EFI_HOB_GUID_TYPE *) find_hob_by_guid(
-			hob_list_ptr, &temp_hob_guid);
-
-	if (saved_mem_hob == NULL)
-		return NULL;
-
-	return (void *) ((char *) saved_mem_hob + sizeof(EFI_HOB_GUID_TYPE));
-}
-
-#ifndef FSP_RESERVE_MEMORY_SIZE
-/** @brief locates the HOB containing the location of the fsp reserved mem area
- *
- * @param hob_list_ptr pointer to the start of the hob list
- * @return pointer to the start of the FSP reserved memory or NULL if not found.
- */
-void * find_fsp_reserved_mem(void *hob_list_ptr)
-{
-	EFI_GUID fsp_reserved_guid = FSP_HOB_RESOURCE_OWNER_FSP_GUID;
-	EFI_HOB_RESOURCE_DESCRIPTOR *fsp_reserved_mem =
-			(EFI_HOB_RESOURCE_DESCRIPTOR *) find_hob_by_guid(
-			hob_list_ptr, &fsp_reserved_guid);
-
-	if (fsp_reserved_mem == NULL)
-		return NULL;
-
-	return  (void *)((uintptr_t)fsp_reserved_mem->PhysicalStart);
-}
-#endif /* FSP_RESERVE_MEMORY_SIZE */
-
-#ifndef __PRE_RAM__ /* Only parse HOB data in ramstage */
-
-void print_fsp_info(void) {
-
-	if (fsp_header_ptr == NULL)
-		fsp_header_ptr = (void *)find_fsp();
-		if ((u32)fsp_header_ptr < 0xff) {
-			post_code(0x4F); /* output something in case there is no serial */
-			die("Can't find the FSP!\n");
-		}
-
-	if (FspHobListPtr == NULL) {
-		FspHobListPtr = (void*)*((u32*) cbmem_find(CBMEM_ID_HOB_POINTER));
-	}
-
-	printk(BIOS_SPEW,"fsp_header_ptr: %p\n", fsp_header_ptr);
-	printk(BIOS_INFO,"FSP Header Version: %d\n", fsp_header_ptr->HeaderRevision);
-	printk(BIOS_INFO,"FSP Revision: %d.%d\n",
-			(u8)((fsp_header_ptr->ImageRevision >> 8) & 0xff),
-			(u8)(fsp_header_ptr->ImageRevision  & 0xff));
-}
-
-
-#if IS_ENABLED(CONFIG_ENABLE_MRC_CACHE)
-/**
- *  Save the FSP memory HOB (mrc data) to the MRC area in CBMEM
- */
-int save_mrc_data(void *hob_start)
-{
-	u32 *mrc_hob;
-	u32 *mrc_hob_data;
-	u32 mrc_hob_size;
-	struct mrc_data_container *mrc_data;
-	int output_len;
-	const EFI_GUID mrc_guid = FSP_NON_VOLATILE_STORAGE_HOB_GUID;
-
-	mrc_hob = GetNextGuidHob(&mrc_guid, hob_start);
-	if (mrc_hob == NULL){
-		printk(BIOS_DEBUG, "Memory Configure Data Hob is not present\n");
-		return(0);
-	}
-
-	mrc_hob_data = GET_GUID_HOB_DATA (mrc_hob);
-	mrc_hob_size = (u32) GET_HOB_LENGTH(mrc_hob);
-
-	printk(BIOS_DEBUG, "Memory Configure Data Hob at %p (size = 0x%x).\n",
-			(void *)mrc_hob_data, mrc_hob_size);
-
-	output_len = ALIGN(mrc_hob_size, 16);
-
-	/* Save the MRC S3/fast boot/ADR restore data to cbmem */
-	mrc_data = cbmem_add (CBMEM_ID_MRCDATA,
-			output_len + sizeof(struct mrc_data_container));
-
-	/* Just return if there was a problem with getting CBMEM */
-	if (mrc_data == NULL) {
-		printk(BIOS_WARNING, "CBMEM was not available to save the fast boot cache data.\n");
-		return 0;
-	}
-
-	printk(BIOS_DEBUG, "Copy FSP MRC DATA to HOB (source addr %p, dest addr %p, %u bytes)\n",
-			(void *)mrc_hob_data, mrc_data, output_len);
-
-	mrc_data->mrc_signature = MRC_DATA_SIGNATURE;
-	mrc_data->mrc_data_size = output_len;
-	mrc_data->reserved = 0;
-	memcpy(mrc_data->mrc_data, (const void *)mrc_hob_data, mrc_hob_size);
-
-	/* Zero the unused space in aligned buffer. */
-	if (output_len > mrc_hob_size)
-		memset((mrc_data->mrc_data + mrc_hob_size), 0,
-				output_len - mrc_hob_size);
-
-	mrc_data->mrc_checksum = compute_ip_checksum(mrc_data->mrc_data,
-			mrc_data->mrc_data_size);
-
-	printk(BIOS_SPEW, "Fast boot data (includes align and checksum):\n");
-	hexdump32(BIOS_SPEW, (void *)mrc_data->mrc_data, output_len);
-	return (1);
-}
-#endif /* CONFIG_ENABLE_MRC_CACHE */
-
-static void find_fsp_hob_update_mrc(void *unused)
-{
-	/* Set the global HOB list pointer */
-	FspHobListPtr = (void*)*((u32*) cbmem_find(CBMEM_ID_HOB_POINTER));
-
-	if (!FspHobListPtr){
-		printk(BIOS_ERR, "ERROR: Could not find FSP HOB pointer in CBFS!\n");
-	} else {
-		/* 0x0000: Print all types */
-		print_hob_type_structure(0x000, FspHobListPtr);
-
-	#if IS_ENABLED(CONFIG_ENABLE_MRC_CACHE)
-		if(save_mrc_data(FspHobListPtr))
-			update_mrc_cache(NULL);
-		else
-			printk(BIOS_DEBUG,"Not updating MRC data in flash.\n");
-	#endif
-	}
-}
-
-/* Update the MRC/fast boot cache as part of the late table writing stage */
-BOOT_STATE_INIT_ENTRY(BS_WRITE_TABLES, BS_ON_ENTRY,
-			find_fsp_hob_update_mrc, NULL);
-#endif	/* #ifndef __PRE_RAM__ */
diff --git a/src/drivers/intel/fsp/fsp_util.h b/src/drivers/intel/fsp/fsp_util.h
deleted file mode 100644
index d65b842..0000000
--- a/src/drivers/intel/fsp/fsp_util.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2013-2014 Sage Electronic Engineering, LLC.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef FSP_UTIL_H
-#define FSP_UTIL_H
-
-#include <chipset_fsp_util.h>
-#include "fsp_values.h"
-
-#if IS_ENABLED(CONFIG_ENABLE_MRC_CACHE)
-int save_mrc_data(void *hob_start);
-void * find_and_set_fastboot_cache(void);
-#endif
-
-volatile u8 * find_fsp (void);
-void fsp_early_init(FSP_INFO_HEADER *fsp_info);
-void FspNotify(u32 Phase);
-void FspNotifyReturnPoint(EFI_STATUS Status, VOID *HobListPtr);
-void romstage_fsp_rt_buffer_callback(FSP_INIT_RT_BUFFER *FspRtBuffer);
-void print_fsp_info(void);
-void chipset_fsp_early_init(FSP_INIT_PARAMS *FspInitParams,
-	FSP_INFO_HEADER *fsp_ptr);
-void ChipsetFspReturnPoint(EFI_STATUS Status, VOID *HobListPtr);
-void * find_saved_temp_mem(void *hob_list_ptr);
-void * find_fsp_reserved_mem(void *hob_list_ptr);
-
-/* functions in hob.c */
-void print_hob_mem_attributes(void *Hobptr);
-void print_hob_type_structure(u16 Hobtype, void *Hoblistptr);
-void print_hob_resource_attributes(void *Hobptr);
-void print_guid_type_attributes(void *Hobptr);
-const char * get_hob_type_string(void *Hobptr);
-void * find_hob_by_guid(void *Hoblistptr, EFI_GUID *guid1);
-uint8_t guids_are_equal(EFI_GUID *guid1, EFI_GUID *guid2);
-void printguid(EFI_GUID *guid);
-
-/* Additional HOB types not included in the FSP:
- * #define EFI_HOB_TYPE_HANDOFF 0x0001
- * #define EFI_HOB_TYPE_MEMORY_ALLOCATION 0x0002
- * #define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR 0x0003
- * #define EFI_HOB_TYPE_GUID_EXTENSION 0x0004
- * #define EFI_HOB_TYPE_FV 0x0005
- * #define EFI_HOB_TYPE_CPU 0x0006
- * #define EFI_HOB_TYPE_MEMORY_POOL 0x0007
- * #define EFI_HOB_TYPE_CV 0x0008
- * #define EFI_HOB_TYPE_UNUSED 0xFFFE
- * #define EFI_HOB_TYPE_END_OF_HOB_LIST 0xffff
- */
-#define EFI_HOB_TYPE_HANDOFF		0x0001
-#define EFI_HOB_TYPE_MEMORY_POOL	0x0007
-
-#if IS_ENABLED(CONFIG_ENABLE_MRC_CACHE)
-#define MRC_DATA_ALIGN			0x1000
-#define MRC_DATA_SIGNATURE		(('M'<<0)|('R'<<8)|('C'<<16)|('D'<<24))
-
-struct mrc_data_container {
-	u32	mrc_signature;	// "MRCD"
-	u32	mrc_data_size;	// Actual total size of this structure
-	u32	mrc_checksum;	// IP style checksum
-	u32	reserved;		// For header alignment
-	u8	mrc_data[0];	// Variable size, platform/run time dependent.
-} __attribute__ ((packed));
-
-struct mrc_data_container *find_current_mrc_cache(void);
-
-#if !defined(__PRE_RAM__)
-void update_mrc_cache(void *unused);
-#endif
-
-#endif
-
-/* The offset in bytes from the start of the info structure */
-#define FSP_IMAGE_SIG_LOC				0
-#define FSP_IMAGE_ID_LOC				16
-#define FSP_IMAGE_BASE_LOC				28
-
-#define FSP_SIG						0x48505346	/* 'FSPH' */
-
-#define ERROR_NO_FV_SIG				1
-#define ERROR_NO_FFS_GUID				2
-#define ERROR_NO_INFO_HEADER			3
-#define ERROR_IMAGEBASE_MISMATCH		4
-#define ERROR_INFO_HEAD_SIG_MISMATCH	5
-#define ERROR_FSP_SIG_MISMATCH			6
-
-#ifndef __PRE_RAM__
-extern void *FspHobListPtr;
-#endif
-
-#define UPD_DEFAULT_CHECK(member) \
-	if (config->member != UPD_DEFAULT) { \
-		UpdData->member = config->member - 1; \
-	} \
-	printk(FSP_INFO_LEVEL, #member ":\t\t0x%02x %s\n", UpdData->member, \
-		config->member ? "(set)" : "(default)");
-
-#define UPD_SPD_CHECK(member) \
-	if (config->member == UPD_SPD_ADDR_DISABLED) { \
-		UpdData->member = 0x00; \
-	} else if (config->member != UPD_SPD_ADDR_DEFAULT) { \
-		UpdData->member = config->member; \
-	} \
-	printk(FSP_INFO_LEVEL, #member ":\t\t0x%02x %s\n", UpdData->member, \
-		config->member ? "(set)" : "(default)");
-
-#define UPD_DEVICE_CHECK(devicename, member, statement) \
-	case devicename: \
-		UpdData->member = dev->enabled; \
-		printk(FSP_INFO_LEVEL, statement "%s\n", \
-			UpdData->member?"Enabled":"Disabled"); \
-	break;
-
-
-#ifndef FSP_BOOTLOADER_TEMPORARY_MEMORY_HOB_GUID
-#define FSP_BOOTLOADER_TEMPORARY_MEMORY_HOB_GUID \
-	{ 0xbbcff46c, 0xc8d3, 0x4113, { 0x89, 0x85, 0xb9, 0xd4, 0xf3, 0xb3, 0xf6, 0x4e } };
-#endif
-
-#endif	/* FSP_UTIL_H */
diff --git a/src/drivers/intel/fsp/fsp_values.h b/src/drivers/intel/fsp/fsp_values.h
deleted file mode 100644
index e5098bb..0000000
--- a/src/drivers/intel/fsp/fsp_values.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2014 Sage Electronic Engineering, LLC.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#ifndef FSP_VALUES_H
-#define FSP_VALUES_H
-
-#ifndef FSP_DEBUG_LEVEL
-# define FSP_DEBUG_LEVEL	BIOS_SPEW
-#endif
-
-#ifndef FSP_INFO_LEVEL
-# define FSP_INFO_LEVEL	BIOS_DEBUG
-#endif
-
-#define INCREMENT_FOR_DEFAULT(x) (x+1)
-
-#define UPD_DEFAULT		0x00
-#define UPD_DISABLE		INCREMENT_FOR_DEFAULT(0)
-#define UPD_ENABLE		INCREMENT_FOR_DEFAULT(1)
-#define UPD_USE_DEVICETREE	0xff
-
-#define UPD_SPD_ADDR_DEFAULT	UPD_DEFAULT
-#define UPD_SPD_ADDR_DISABLED	0xFF
-
-#endif
diff --git a/src/drivers/intel/fsp/hob.c b/src/drivers/intel/fsp/hob.c
deleted file mode 100644
index 99c4ba1..0000000
--- a/src/drivers/intel/fsp/hob.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2013-2014 Sage Electronic Engineering, LLC.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <types.h>
-#include <string.h>
-#include <console/console.h>
-#include <lib.h> // hexdump
-#include "fsp_util.h"
-
-
-/** Displays a GUID's address and value
- *
- * @param guid pointer to the GUID to display
- */
-void printguid(EFI_GUID *guid)
-{
-	printk(BIOS_SPEW,"Address: %p Guid: %08lx-%04x-%04x-",
-			guid, (unsigned long)guid->Data1,
-			guid->Data2, guid->Data3);
-	printk(BIOS_SPEW,"%02x%02x%02x%02x%02x%02x%02x%02x\n",
-			guid->Data4[0], guid->Data4[1],
-			guid->Data4[2], guid->Data4[3],
-			guid->Data4[4], guid->Data4[5],
-			guid->Data4[6], guid->Data4[7] );
-}
-
-void print_hob_mem_attributes(void *Hobptr)
-{
-	EFI_HOB_MEMORY_ALLOCATION *HobMemoryPtr = (EFI_HOB_MEMORY_ALLOCATION *)Hobptr;
-	EFI_MEMORY_TYPE Hobmemtype = HobMemoryPtr->AllocDescriptor.MemoryType;
-	u64 Hobmemaddr = HobMemoryPtr->AllocDescriptor.MemoryBaseAddress;
-	u64 Hobmemlength = HobMemoryPtr->AllocDescriptor.MemoryLength;
-	const char * Hobmemtypenames[15];
-
-	Hobmemtypenames[0] = "EfiReservedMemoryType";
-	Hobmemtypenames[1] = "EfiLoaderCode";
-	Hobmemtypenames[2] = "EfiLoaderData";
-	Hobmemtypenames[3] = "EfiBootServicesCode";
-	Hobmemtypenames[4] = "EfiBootServicesData";
-	Hobmemtypenames[5] = "EfiRuntimeServicesCode";
-	Hobmemtypenames[6] = "EfiRuntimeServicesData";
-	Hobmemtypenames[7] = "EfiConventionalMemory";
-	Hobmemtypenames[8] = "EfiUnusableMemory";
-	Hobmemtypenames[9] = "EfiACPIReclaimMemory";
-	Hobmemtypenames[10] = "EfiACPIMemoryNVS";
-	Hobmemtypenames[11] = "EfiMemoryMappedIO";
-	Hobmemtypenames[12] = "EfiMemoryMappedIOPortSpace";
-	Hobmemtypenames[13] = "EfiPalCode";
-	Hobmemtypenames[14] = "EfiMaxMemoryType";
-
-	printk(BIOS_SPEW, "  Memory type %s (0x%x)\n",
-			Hobmemtypenames[(u32)Hobmemtype], (u32) Hobmemtype);
-	printk(BIOS_SPEW, "  at location 0x%0lx with length 0x%0lx\n",
-			(unsigned long)Hobmemaddr, (unsigned long)Hobmemlength);
-}
-
-void print_hob_resource_attributes(void *Hobptr)
-{
-	EFI_HOB_RESOURCE_DESCRIPTOR *HobResourcePtr =
-		(EFI_HOB_RESOURCE_DESCRIPTOR *)Hobptr;
-	u32 Hobrestype   = HobResourcePtr->ResourceType;
-	u32 Hobresattr   = HobResourcePtr->ResourceAttribute;
-	u64 Hobresaddr   = HobResourcePtr->PhysicalStart;
-	u64 Hobreslength = HobResourcePtr->ResourceLength;
-	const char *Hobrestypestr = NULL;
-
-	// HOB Resource Types
-	switch (Hobrestype) {
-	case EFI_RESOURCE_SYSTEM_MEMORY:
-		Hobrestypestr = "EFI_RESOURCE_SYSTEM_MEMORY"; break;
-	case EFI_RESOURCE_MEMORY_MAPPED_IO:
-		Hobrestypestr = "EFI_RESOURCE_MEMORY_MAPPED_IO"; break;
-	case EFI_RESOURCE_IO:
-		Hobrestypestr = "EFI_RESOURCE_IO"; break;
-	case EFI_RESOURCE_FIRMWARE_DEVICE:
-		Hobrestypestr = "EFI_RESOURCE_FIRMWARE_DEVICE"; break;
-	case EFI_RESOURCE_MEMORY_MAPPED_IO_PORT:
-		Hobrestypestr = "EFI_RESOURCE_MEMORY_MAPPED_IO_PORT"; break;
-	case EFI_RESOURCE_MEMORY_RESERVED:
-		Hobrestypestr = "EFI_RESOURCE_MEMORY_RESERVED"; break;
-	case EFI_RESOURCE_IO_RESERVED:
-		Hobrestypestr = "EFI_RESOURCE_IO_RESERVED"; break;
-	case EFI_RESOURCE_MAX_MEMORY_TYPE:
-		Hobrestypestr = "EFI_RESOURCE_MAX_MEMORY_TYPE"; break;
-	default:
-		Hobrestypestr = "EFI_RESOURCE_UNKNOWN"; break;
-	}
-
-	printk(BIOS_SPEW, "  Resource %s (0x%0x) has attributes 0x%0x\n",
-			Hobrestypestr, Hobrestype, Hobresattr);
-	printk(BIOS_SPEW, "  at location 0x%0lx with length 0x%0lx\n",
-			(unsigned long)Hobresaddr, (unsigned long)Hobreslength);
-}
-
-const char * get_hob_type_string(void *Hobptr)
-{
-	EFI_HOB_GENERIC_HEADER *HobHeaderPtr = (EFI_HOB_GENERIC_HEADER *)Hobptr;
-	u16 Hobtype = HobHeaderPtr->HobType;
-	const char *Hobtypestring = NULL;
-
-	switch (Hobtype) {
-	case EFI_HOB_TYPE_HANDOFF:
-		Hobtypestring = "EFI_HOB_TYPE_HANDOFF"; break;
-	case EFI_HOB_TYPE_MEMORY_ALLOCATION:
-		Hobtypestring = "EFI_HOB_TYPE_MEMORY_ALLOCATION"; break;
-	case EFI_HOB_TYPE_RESOURCE_DESCRIPTOR:
-		Hobtypestring = "EFI_HOB_TYPE_RESOURCE_DESCRIPTOR"; break;
-	case EFI_HOB_TYPE_GUID_EXTENSION:
-		Hobtypestring = "EFI_HOB_TYPE_GUID_EXTENSION"; break;
-	case EFI_HOB_TYPE_MEMORY_POOL:
-		Hobtypestring = "EFI_HOB_TYPE_MEMORY_POOL"; break;
-	case EFI_HOB_TYPE_UNUSED:
-		Hobtypestring = "EFI_HOB_TYPE_UNUSED"; break;
-	case EFI_HOB_TYPE_END_OF_HOB_LIST:
-		Hobtypestring = "EFI_HOB_TYPE_END_OF_HOB_LIST"; break;
-	default:
-		Hobtypestring = "EFI_HOB_TYPE_UNRECOGNIZED"; break;
-	}
-
-	return Hobtypestring;
-}
-
-/** Displays the length, location, and GUID value of a GUID extension
- *
- * The EFI_HOB_GUID_TYPE is very basic - it just contains the standard
- * HOB header containing the HOB type and length, and a GUID for
- * identification.  The rest of the data is undefined and must be known
- * based on the GUID.
- *
- * This displays the entire HOB length, and the location of the start
- * of the HOB, *NOT* the length of or the start of the data inside the HOB.
- *
- * @param Hobptr
- */
-void print_guid_type_attributes(void *Hobptr)
-{
-	printk(BIOS_SPEW, "  at location %p with length0x%0lx\n  ",
-		Hobptr, (unsigned long)(((EFI_PEI_HOB_POINTERS *) \
-		Hobptr)->Guid->Header.HobLength));
-	printguid(&(((EFI_HOB_GUID_TYPE *)Hobptr)->Name));
-
-}
-
-/* Print out a structure of all the HOBs
- * that match a certain type:
- * Print all types			(0x0000)
- * EFI_HOB_TYPE_HANDOFF			(0x0001)
- * EFI_HOB_TYPE_MEMORY_ALLOCATION	(0x0002)
- * EFI_HOB_TYPE_RESOURCE_DESCRIPTOR	(0x0003)
- * EFI_HOB_TYPE_GUID_EXTENSION		(0x0004)
- * EFI_HOB_TYPE_MEMORY_POOL		(0x0007)
- * EFI_HOB_TYPE_UNUSED			(0xFFFE)
- * EFI_HOB_TYPE_END_OF_HOB_LIST	(0xFFFF)
- */
-void print_hob_type_structure(u16 Hobtype, void *Hoblistptr)
-{
-	u32 *Currenthob;
-	u32 *Nexthob = 0;
-	u8  Lasthob = 0;
-	u32 Currenttype;
-	const char *Currenttypestr;
-
-	Currenthob = Hoblistptr;
-
-	/* Print out HOBs of our desired type until
-	 * the end of the HOB list
-	 */
-	printk(BIOS_DEBUG, "\n=== FSP HOB Data Structure ===\n");
-	printk(BIOS_DEBUG, "FSP Hoblistptr: 0x%0x\n",
-			(u32) Hoblistptr);
-	do {
-		EFI_HOB_GENERIC_HEADER *CurrentHeaderPtr =
-			(EFI_HOB_GENERIC_HEADER *)Currenthob;
-		Currenttype = CurrentHeaderPtr->HobType;  /* Get the type of this HOB */
-		Currenttypestr = get_hob_type_string(Currenthob);
-
-		if (Currenttype == Hobtype || Hobtype == 0x0000) {
-			printk(BIOS_DEBUG, "HOB 0x%0x is an %s (type 0x%0x)\n",
-					(u32) Currenthob, Currenttypestr, Currenttype);
-			switch (Currenttype) {
-			case EFI_HOB_TYPE_MEMORY_ALLOCATION:
-				print_hob_mem_attributes(Currenthob); break;
-			case EFI_HOB_TYPE_RESOURCE_DESCRIPTOR:
-				print_hob_resource_attributes(Currenthob); break;
-			case EFI_HOB_TYPE_GUID_EXTENSION:
-				print_guid_type_attributes(Currenthob);	break;
-			}
-		}
-
-		Lasthob = END_OF_HOB_LIST(Currenthob);	/* Check for end of HOB list */
-		if (!Lasthob) {
-			Nexthob = GET_NEXT_HOB(Currenthob);	/* Get next HOB pointer */
-			Currenthob = Nexthob;	// Start on next HOB
-		}
-	} while (!Lasthob);
-	printk(BIOS_DEBUG, "=== End of FSP HOB Data Structure ===\n\n");
-}
-
-
-/** Finds a HOB entry based on type and guid
- *
- * @param current_hob pointer to the start of the HOB list
- * @param guid the GUID of the HOB entry to find
- * @return pointer to the start of the requested HOB or NULL if not found.
- */
-void * find_hob_by_guid(void *current_hob, EFI_GUID *guid)
-{
-	do {
-		switch (((EFI_HOB_GENERIC_HEADER *)current_hob)->HobType) {
-
-		case EFI_HOB_TYPE_MEMORY_ALLOCATION:
-			if (guids_are_equal(guid, &(((EFI_HOB_MEMORY_ALLOCATION *) \
-				current_hob)->AllocDescriptor.Name)))
-				return current_hob;
-			break;
-		case EFI_HOB_TYPE_RESOURCE_DESCRIPTOR:
-			if (guids_are_equal(guid,
-				&(((EFI_HOB_RESOURCE_DESCRIPTOR *) \
-				current_hob)->Owner)))
-				return current_hob;
-			break;
-		case EFI_HOB_TYPE_GUID_EXTENSION:
-			if (guids_are_equal(guid, &(((EFI_HOB_GUID_TYPE *) \
-					current_hob)->Name)))
-				return current_hob;
-			break;
-		}
-
-		if (!END_OF_HOB_LIST(current_hob))
-			current_hob = GET_NEXT_HOB(current_hob); /* Get next HOB pointer */
-	} while (!END_OF_HOB_LIST(current_hob));
-
-	return NULL;
-}
-
-/** Compares a pair of GUIDs to see if they are equal
- *
- * GUIDs are 128 bits long, so compare them as pairs of quadwords.
- *
- * @param guid1 pointer to the first of the GUIDs to compare
- * @param guid2 pointer to the second of the GUIDs to compare
- * @return 1 if the GUIDs were equal, 0 if GUIDs were not equal
- */
-uint8_t guids_are_equal(EFI_GUID *guid1, EFI_GUID *guid2)
-{
-	uint64_t* guid_1 = (void *) guid1;
-	uint64_t* guid_2 = (void *) guid2;
-
-	if ((*(guid_1) != *(guid_2)) || (*(guid_1 + 1) != *(guid_2 + 1)))
-		return 0;
-
-	return 1;
-}
diff --git a/src/drivers/intel/fsp1_0/Kconfig b/src/drivers/intel/fsp1_0/Kconfig
new file mode 100644
index 0000000..2492298
--- /dev/null
+++ b/src/drivers/intel/fsp1_0/Kconfig
@@ -0,0 +1,145 @@
+##
+## This file is part of the coreboot project.
+##
+## Copyright (C) 2014 Sage Electronic Engineering, LLC.
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; version 2 of the License.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+##
+
+if PLATFORM_USES_FSP1_0
+
+comment "Intel FSP"
+
+config HAVE_FSP_BIN
+	bool "Use Intel Firmware Support Package"
+	help
+	  Select this option to add an Intel FSP binary to
+	  the resulting coreboot image.
+
+	  Note: Without this binary, coreboot builds relying on the FSP
+	  will not boot
+
+config DCACHE_RAM_BASE
+	hex
+	default 0xfef00000
+
+config DCACHE_RAM_SIZE
+	hex
+	default 0x4000
+
+if HAVE_FSP_BIN
+
+config FSP_FILE
+	string "Intel FSP binary path and filename"
+	help
+	  The path and filename of the Intel FSP binary for this platform.
+
+config FSP_LOC
+	hex "Intel FSP Binary location in CBFS"
+	help
+	  The location in CBFS that the FSP is located. This must match the
+	  value that is set in the FSP binary.  If the FSP needs to be moved,
+	  rebase the FSP with Intel's BCT (tool).
+
+config ENABLE_FSP_FAST_BOOT
+	bool "Enable Fast Boot"
+	select ENABLE_MRC_CACHE
+	default n
+	help
+	  Enabling this feature will force the MRC data to be cached in NV
+	  storage to be used for speeding up boot time on future reboots
+	  and/or power cycles.
+
+config ENABLE_MRC_CACHE
+	bool
+	default y if HAVE_ACPI_RESUME
+	default n
+	help
+	  Enabling this feature will cause MRC data to be cached in NV storage.
+	  This can either be used for fast boot, or just because the FSP wants
+	  it to be saved.
+
+config MRC_CACHE_SIZE
+	hex "Fast Boot Data Cache Size"
+	default 0x10000
+	depends on ENABLE_MRC_CACHE
+	help
+	  This is the amount of space in NV storage that is reserved for the
+	  fast boot data cache storage.
+
+	  WARNING: Because this area will be erased and re-written, the size
+	  should be a full sector of the flash ROM chip and nothing else should
+	  be included in CBFS in any sector that the fast boot cache data is in.
+
+config OVERRIDE_CACHE_CACHE_LOC
+	bool
+	help
+	  Selected by the platform to set a new default location for the
+	  MRC/fast boot cache.
+
+config MRC_CACHE_LOC_OVERRIDE
+	hex
+	help
+	  Sets the override CBFS location of the MRC/fast boot cache.
+
+config MRC_CACHE_LOC
+	hex "Fast Boot Data Cache location in CBFS"
+	default MRC_CACHE_LOC_OVERRIDE if OVERRIDE_CACHE_CACHE_LOC
+	default 0xfff50000
+	depends on ENABLE_MRC_CACHE
+	help
+	  The location in CBFS for the MRC data to be cached.
+
+	  WARNING: This should be on a sector boundary of the BIOS ROM chip
+	  and nothing else should be included in that sector, or IT WILL BE
+	  ERASED.
+
+config VIRTUAL_ROM_SIZE
+	hex "Virtual ROM Size"
+	default ROM_SIZE
+	depends on ENABLE_MRC_CACHE
+	help
+	  This is used to calculate the offset of the MRC data cache in NV
+	  Storage for fast boot.  If in doubt, leave this set to the default
+	  which sets the virtual size equal to the ROM size.
+
+	  Example: Cougar Canyon 2 has two 8 MB SPI ROMs.  When the SPI ROMs are
+	  loaded with a 4 MB coreboot image, the virtual ROM size is 8 MB.  When
+	  the SPI ROMs are loaded with an 8 MB coreboot image, the virtual ROM
+	  size is 16 MB.
+
+endif #HAVE_FSP_BIN
+
+config CACHE_ROM_SIZE_OVERRIDE
+	hex "Cache ROM Size"
+	default CBFS_SIZE
+	help
+	  This is the size of the cachable area that is passed into the FSP in
+	  the early initialization.  Typically this should be the size of the CBFS
+	  area, but the size must be a power of 2 whereas the CBFS size does not
+	  have this limitation.
+
+config USE_GENERIC_FSP_CAR_INC
+	bool
+	default n
+	help
+	  The chipset can select this to use a generic cache_as_ram.inc file
+	  that should be good for all FSP based platforms.
+
+config FSP_USES_UPD
+	bool
+	default n
+	help
+	  If this FSP uses UPD/VPD data regions, select this in the chipset Kconfig.
+endif #PLATFORM_USES_FSP1_0
diff --git a/src/drivers/intel/fsp1_0/Makefile.inc b/src/drivers/intel/fsp1_0/Makefile.inc
new file mode 100644
index 0000000..4931cb7
--- /dev/null
+++ b/src/drivers/intel/fsp1_0/Makefile.inc
@@ -0,0 +1,49 @@
+#
+# This file is part of the coreboot project.
+#
+# Copyright (C) 2014 Sage Electronic Engineering, LLC.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+ramstage-y += fsp_util.c hob.c
+romstage-y += fsp_util.c hob.c
+
+ramstage-$(CONFIG_ENABLE_MRC_CACHE) += fastboot_cache.c
+romstage-$(CONFIG_ENABLE_MRC_CACHE) += fastboot_cache.c
+
+CPPFLAGS_common += -Isrc/drivers/intel/fsp1_0
+
+ifeq ($(CONFIG_USE_GENERIC_FSP_CAR_INC),y)
+cpu_incs += $(src)/drivers/intel/fsp1_0/cache_as_ram.inc
+endif
+
+ifeq ($(CONFIG_HAVE_FSP_BIN),y)
+cbfs-files-y += fsp.bin
+fsp.bin-file := $(call strip_quotes,$(CONFIG_FSP_FILE))
+fsp.bin-position := $(CONFIG_FSP_LOC)
+fsp.bin-type := fsp
+endif
+
+ifeq ($(CONFIG_ENABLE_MRC_CACHE),y)
+$(obj)/mrc.cache:
+	dd if=/dev/zero count=1 \
+	bs=$(shell printf "%d" $(CONFIG_MRC_CACHE_SIZE) ) | \
+	tr '\000' '\377' > $@
+
+cbfs-files-y += mrc.cache
+mrc.cache-file := $(obj)/mrc.cache
+mrc.cache-position := $(CONFIG_MRC_CACHE_LOC)
+mrc.cache-type := mrc_cache
+endif
diff --git a/src/drivers/intel/fsp1_0/cache_as_ram.inc b/src/drivers/intel/fsp1_0/cache_as_ram.inc
new file mode 100644
index 0000000..8604c3b
--- /dev/null
+++ b/src/drivers/intel/fsp1_0/cache_as_ram.inc
@@ -0,0 +1,177 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2000,2007 Ronald G. Minnich <rminnich at gmail.com>
+ * Copyright (C) 2007-2008 coresystems GmbH
+ * Copyright (C) 2013-2014 Sage Electronic Engineering, LLC.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <cpu/x86/mtrr.h>
+#include <cpu/x86/cache.h>
+#include <cpu/x86/post_code.h>
+#include <microcode_size.h>
+#include <cbmem.h>
+
+#ifndef CONFIG_FSP_LOC
+# error "CONFIG_FSP_LOC must be set."
+#endif
+
+#ifndef CONFIG_POST_IO
+# error "CONFIG_POST_IO must be set."
+#endif
+
+#if CONFIG_POST_IO
+# ifndef CONFIG_POST_IO_PORT
+#  error "CONFIG_POST_IO_PORT must be set."
+# endif
+#endif
+
+#ifndef CONFIG_CPU_MICROCODE_CBFS_LOC
+# error "CONFIG_CPU_MICROCODE_CBFS_LOC must be set."
+#endif
+
+#define LHLT_DELAY	0x50000		/* I/O delay between post codes on failure */
+
+	cmp   $0, %eax
+	jne   bisthalt
+
+cache_as_ram:
+	post_code(0x20)
+
+	/*
+	 * Find the FSP binary in cbfs.
+	 * Make a fake stack that has the return value back to this code.
+	 */
+	lea   fake_fsp_stack, %esp
+	jmp   find_fsp
+find_fsp_ret:
+	/* Save the FSP location */
+	mov   %eax,   %ebp
+	cmp   $CONFIG_FSP_LOC, %eax
+	jb    halt1
+
+	post_code(0x22)
+
+	/* Calculate entry into FSP */
+	mov   0x30(%ebp), %eax	/* Load TempRamInitEntry */
+	add   0x1c(%ebp), %eax	/* add in the offset for the FSP base address */
+
+	/*
+	 * Pass early init variables on a fake stack (no memory yet)
+	 * as well as the return location
+	 */
+	lea   CAR_init_stack, %esp
+
+	/* call FSP binary to setup temporary stack */
+	jmp   *%eax
+
+CAR_init_done:
+	addl  $4, %esp
+	cmp   $0, %eax
+	jne   halt2
+
+	/* Save FSP_INFO_HEADER location in ebx */
+	mov    %ebp, %ebx
+
+	/*
+	 * set up bootloader stack
+	 * ecx:  stack base
+	 * edx:  stack top
+	 */
+	mov   %edx, %esp
+	movl  %esp, %ebp
+
+	/* Clear the cbmem CAR memory region. */
+	movl  %ecx, %edi
+	movl  %edx, %ecx
+	sub   %edi, %ecx
+	shr   $2, %ecx
+	xorl  %eax, %eax
+	rep   stosl
+
+before_romstage:
+	post_code(0x23)
+
+	/* Call romstage.c main function. */
+	pushl %ebx /* main takes FSP_INFO_HEADER as its argument */
+	call  main /* does not return */
+	movb  $0xB8, %ah
+	jmp   .Lhlt
+
+bisthalt:
+	movb  $0xB9, %ah
+	jmp   .Lhlt
+
+halt1:
+	/*
+	 * Failures for postcode 0xBA - failed in find_fsp()
+	 *
+	 * Values are:
+	 * 0x01 - FV signature, "_FVH" not present
+	 * 0x02 - FFS GUID not present
+	 * 0x03 - FSP INFO Header not found
+	 * 0x04 - ImageBase does not equal CONFIG_FSP_LOC - Is the FSP rebased to
+	 *        a different location, or does it need to be?
+	 * 0x05 - FSP INFO Header signature "FSPH" not found
+	 * 0x06 - FSP Image ID is not the expected ID.
+	 */
+	movb  $0xBA, %ah
+	jmp   .Lhlt
+
+halt2:
+	/*
+	 * Failures for postcode 0xBB - failed in the FSP:
+	 *
+	 * 0x00 - FSP_SUCCESS: Temp RAM was initialized successfully.
+	 * 0x02 - FSP_INVALID_PARAMETER: Input parameters are invalid.
+	 * 0x0E - FSP_NOT_FOUND: No valid microcode was found in the microcode region.
+	 * 0x03 - FSP_UNSUPPORTED: The FSP calling conditions were not met.
+	 * 0x07 - FSP_DEVICE_ERROR: Temp RAM initialization failed
+	 * 0x14 - FSP_ALREADY_STARTED: Temp RAM initialization has been invoked
+	 */
+	movb  $0xBB, %ah
+
+.Lhlt:
+	xchg  %al, %ah
+#if CONFIG_POST_IO
+	outb  %al, $CONFIG_POST_IO_PORT
+#else
+	post_code(POST_DEAD_CODE)
+#endif
+	movl  $LHLT_DELAY, %ecx
+.Lhlt_Delay:
+	outb  %al, $0xED
+	loop  .Lhlt_Delay
+	jmp   .Lhlt
+
+/*
+ * esp is set to this location so that the call into and return from the FSP
+ * in find_fsp will work.
+ */
+	.align 4
+fake_fsp_stack:
+	.long  find_fsp_ret
+
+CAR_init_params:
+	.long  CONFIG_CPU_MICROCODE_CBFS_LOC
+	.long  MICROCODE_REGION_LENGTH
+	.long  0xFFFFFFFF - CACHE_ROM_SIZE + 1	/* Firmware Location */
+	.long  CACHE_ROM_SIZE	/* Total Firmware Length */
+
+CAR_init_stack:
+	.long  CAR_init_done
+	.long  CAR_init_params
+
diff --git a/src/drivers/intel/fsp1_0/fastboot_cache.c b/src/drivers/intel/fsp1_0/fastboot_cache.c
new file mode 100644
index 0000000..bcf39ab
--- /dev/null
+++ b/src/drivers/intel/fsp1_0/fastboot_cache.c
@@ -0,0 +1,254 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2012 Google Inc.
+ * Copyright (C) 2013-2014 Sage Electronic Engineering, LLC.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include <bootstate.h>
+#include <console/console.h>
+#include <cbfs.h>
+#include <ip_checksum.h>
+#include <device/device.h>
+#include <cbmem.h>
+#include <spi-generic.h>
+#include <spi_flash.h>
+#include <lib.h> // hexdump
+#include "fsp_util.h"
+
+#ifndef CONFIG_VIRTUAL_ROM_SIZE
+#error "CONFIG_VIRTUAL_ROM_SIZE must be set."
+#endif
+
+/* convert a pointer to flash area into the offset inside the flash */
+static inline u32 to_flash_offset(void *p) {
+	return ((u32)p + CONFIG_VIRTUAL_ROM_SIZE);
+}
+
+static struct mrc_data_container *next_mrc_block(
+	struct mrc_data_container *mrc_cache)
+{
+	/* MRC data blocks are aligned within the region */
+	u32 mrc_size = sizeof(*mrc_cache) + mrc_cache->mrc_data_size;
+	if (mrc_size & (MRC_DATA_ALIGN - 1UL)) {
+		mrc_size &= ~(MRC_DATA_ALIGN - 1UL);
+		mrc_size += MRC_DATA_ALIGN;
+	}
+
+	u8 *region_ptr = (u8*)mrc_cache;
+	region_ptr += mrc_size;
+	return (struct mrc_data_container *)region_ptr;
+}
+
+static int is_mrc_cache(struct mrc_data_container *mrc_cache)
+{
+	return (!!mrc_cache) && (mrc_cache->mrc_signature == MRC_DATA_SIGNATURE);
+}
+
+static u32 get_mrc_cache_region(struct mrc_data_container **mrc_region_ptr)
+{
+	size_t region_size;
+	*mrc_region_ptr = cbfs_get_file_content(CBFS_DEFAULT_MEDIA,
+						"mrc.cache",
+						CBFS_TYPE_MRC_CACHE,
+						&region_size);
+
+	return region_size;
+}
+
+/*
+ * Find the largest index block in the MRC cache. Return NULL if none is
+ * found.
+ */
+static struct mrc_data_container *find_current_mrc_cache_local
+	(struct mrc_data_container *mrc_cache, u32 region_size)
+{
+	u32 region_end;
+	u32 entry_id = 0;
+	struct mrc_data_container *mrc_next = mrc_cache;
+
+	region_end = (u32) mrc_cache + region_size;
+
+	/* Search for the last filled entry in the region */
+	while (is_mrc_cache(mrc_next)) {
+		entry_id++;
+		mrc_cache = mrc_next;
+		mrc_next = next_mrc_block(mrc_next);
+		if ((u32)mrc_next >= region_end) {
+			/* Stay in the MRC data region */
+			break;
+		}
+	}
+
+	if (entry_id == 0) {
+		printk(BIOS_ERR, "%s: No valid fast boot cache found.\n", __func__);
+		return NULL;
+	}
+
+	/* Verify checksum */
+	if (mrc_cache->mrc_checksum !=
+	    compute_ip_checksum(mrc_cache->mrc_data,
+				mrc_cache->mrc_data_size)) {
+		printk(BIOS_ERR, "%s: fast boot cache checksum mismatch\n", __func__);
+		return NULL;
+	}
+
+	printk(BIOS_DEBUG, "%s: picked entry %u from cache block\n", __func__,
+	       entry_id - 1);
+
+	return mrc_cache;
+}
+
+/* SPI code needs malloc/free.
+ * Also unknown if writing flash from XIP-flash code is a good idea
+ */
+#if !defined(__PRE_RAM__)
+/* find the first empty block in the MRC cache area.
+ * If there's none, return NULL.
+ *
+ * @mrc_cache_base - base address of the MRC cache area
+ * @mrc_cache - current entry (for which we need to find next)
+ * @region_size - total size of the MRC cache area
+ */
+static struct mrc_data_container *find_next_mrc_cache
+		(struct mrc_data_container *mrc_cache_base,
+		 struct mrc_data_container *mrc_cache,
+		 u32 region_size)
+{
+	u32 region_end = (u32) mrc_cache_base + region_size;
+	u32 mrc_data_size = mrc_cache->mrc_data_size;
+
+	mrc_cache = next_mrc_block(mrc_cache);
+	if (((u32)mrc_cache + mrc_data_size) >= region_end) {
+		/* Crossed the boundary */
+		mrc_cache = NULL;
+		printk(BIOS_DEBUG, "%s: no available entries found\n",
+		       __func__);
+	} else {
+		printk(BIOS_DEBUG,
+		       "%s: picked next entry from cache block at %p\n",
+		       __func__, mrc_cache);
+	}
+
+	return mrc_cache;
+}
+
+void update_mrc_cache(void *unused)
+{
+	printk(BIOS_DEBUG, "Updating fast boot cache data.\n");
+	struct mrc_data_container *current = cbmem_find(CBMEM_ID_MRCDATA);
+	struct mrc_data_container *cache, *cache_base;
+	u32 cache_size;
+
+	if (!current) {
+		printk(BIOS_ERR, "No fast boot cache in cbmem. Can't update flash.\n");
+		return;
+	}
+	if (current->mrc_data_size == -1) {
+		printk(BIOS_ERR, "Fast boot cache data in cbmem invalid.\n");
+		return;
+	}
+
+	cache_size = get_mrc_cache_region(&cache_base);
+	if (cache_base == NULL) {
+		printk(BIOS_ERR, "%s: could not find fast boot cache area\n",
+		       __func__);
+		return;
+	}
+
+	/*
+	 * we need to:
+	 * 0. compare MRC data to last mrc-cache block (exit if same)
+	 */
+	cache = find_current_mrc_cache_local(cache_base, cache_size);
+
+	if (cache && (cache->mrc_data_size == current->mrc_data_size) &&
+			(memcmp(cache, current, cache->mrc_data_size) == 0)) {
+		printk(BIOS_DEBUG,
+			"MRC data in flash is up to date. No update.\n");
+		return;
+	}
+
+	/*  1. use spi_flash_probe() to find the flash, then... */
+	spi_init();
+	struct spi_flash *flash = spi_flash_probe(0, 0);
+	if (!flash) {
+		printk(BIOS_DEBUG, "Could not find SPI device\n");
+		return;
+	}
+
+	/*  2. look up the first unused block */
+	if (cache)
+		cache = find_next_mrc_cache(cache_base, cache, cache_size);
+
+	/*
+	 * 3. if no such place exists, erase entire mrc-cache range & use
+	 * block 0. First time around the erase is not needed, but this is a
+	 * small overhead for simpler code.
+	 */
+	if (!cache) {
+		printk(BIOS_DEBUG,
+		       "Need to erase the MRC cache region of %d bytes at %p\n",
+		       cache_size, cache_base);
+
+		flash->erase(flash, to_flash_offset(cache_base), cache_size);
+
+		/* we will start at the beginning again */
+		cache = cache_base;
+	}
+	/*  4. write mrc data with flash->write() */
+	printk(BIOS_DEBUG, "Write MRC cache update to flash at %p\n",
+	       cache);
+	flash->write(flash, to_flash_offset(cache),
+		     current->mrc_data_size + sizeof(*current), current);
+}
+
+#endif	/* !defined(__PRE_RAM__) */
+
+void * find_and_set_fastboot_cache(void)
+{
+	struct mrc_data_container *mrc_cache = NULL;
+	if (((mrc_cache = find_current_mrc_cache()) == NULL) ||
+	    (mrc_cache->mrc_data_size == -1UL)) {
+		printk(BIOS_DEBUG, "FSP MRC cache not present.\n");
+		return NULL;
+	}
+	printk(BIOS_DEBUG, "FSP MRC cache present at %x.\n", (u32)mrc_cache);
+	printk(BIOS_SPEW, "Saved MRC data:\n");
+	hexdump32(BIOS_SPEW, (void *)mrc_cache->mrc_data, mrc_cache->mrc_data_size);
+	return (void *) mrc_cache->mrc_data;
+}
+
+struct mrc_data_container *find_current_mrc_cache(void)
+{
+	struct mrc_data_container *cache_base;
+	u32 cache_size;
+
+	cache_size = get_mrc_cache_region(&cache_base);
+	if (cache_base == NULL) {
+		printk(BIOS_ERR, "%s: could not find fast boot cache area\n",
+		       __func__);
+		return NULL;
+	}
+
+	/*
+	 * we need to:
+	 *  0. compare MRC data to last mrc-cache block (exit if same)
+	 */
+	return find_current_mrc_cache_local(cache_base, cache_size);
+}
diff --git a/src/drivers/intel/fsp1_0/fsp_util.c b/src/drivers/intel/fsp1_0/fsp_util.c
new file mode 100644
index 0000000..a00cb81
--- /dev/null
+++ b/src/drivers/intel/fsp1_0/fsp_util.c
@@ -0,0 +1,323 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2013-2014 Sage Electronic Engineering, LLC.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <types.h>
+#include <string.h>
+#include <console/console.h>
+#include <bootstate.h>
+#include <cbmem.h>
+#include "fsp_util.h"
+#include <lib.h> // hexdump
+#include <ip_checksum.h>
+#include <timestamp.h>
+
+#ifndef __PRE_RAM__
+/* Globals pointers for FSP structures */
+void *FspHobListPtr = NULL;
+FSP_INFO_HEADER *fsp_header_ptr = NULL;
+
+void FspNotify (u32 Phase)
+{
+	FSP_NOTFY_PHASE        NotifyPhaseProc;
+	NOTIFY_PHASE_PARAMS    NotifyPhaseParams;
+	EFI_STATUS             Status;
+
+	if (fsp_header_ptr == NULL) {
+		fsp_header_ptr = (void *)find_fsp();
+		if ((u32)fsp_header_ptr < 0xff) {
+			post_code(0x4F); /* output something in case there is no serial */
+			die("Can't find the FSP!\n");
+		}
+	}
+
+	/* call FSP PEI to Notify PostPciEnumeration */
+	NotifyPhaseProc = (FSP_NOTFY_PHASE)(fsp_header_ptr->ImageBase +
+		fsp_header_ptr->NotifyPhaseEntry);
+	NotifyPhaseParams.Phase = Phase;
+
+	timestamp_add_now(Phase == EnumInitPhaseReadyToBoot ?
+		TS_FSP_BEFORE_FINALIZE : TS_FSP_BEFORE_ENUMERATE);
+
+	Status = NotifyPhaseProc (&NotifyPhaseParams);
+
+	timestamp_add_now(Phase == EnumInitPhaseReadyToBoot ?
+		TS_FSP_AFTER_FINALIZE : TS_FSP_AFTER_ENUMERATE);
+
+	if (Status != 0)
+		printk(BIOS_ERR,"FSP API NotifyPhase failed for phase 0x%x with status: 0x%x\n", Phase, Status);
+}
+#endif /* #ifndef __PRE_RAM__ */
+
+#ifdef __PRE_RAM__
+
+/*
+ * Call the FSP to do memory init. The FSP doesn't return to this function.
+ * The FSP returns to the romstage_main_continue().
+ */
+void __attribute__ ((noreturn)) fsp_early_init (FSP_INFO_HEADER *fsp_ptr)
+{
+	FSP_FSP_INIT FspInitApi;
+	FSP_INIT_PARAMS FspInitParams;
+	FSP_INIT_RT_BUFFER FspRtBuffer;
+#if IS_ENABLED(CONFIG_FSP_USES_UPD)
+	UPD_DATA_REGION fsp_upd_data;
+#endif
+
+	memset((void*)&FspRtBuffer, 0, sizeof(FSP_INIT_RT_BUFFER));
+	FspRtBuffer.Common.StackTop = (u32 *)CONFIG_RAMTOP;
+	FspInitParams.NvsBufferPtr = NULL;
+
+#if IS_ENABLED(CONFIG_FSP_USES_UPD)
+	FspRtBuffer.Common.UpdDataRgnPtr = &fsp_upd_data;
+#endif
+	FspInitParams.RtBufferPtr = (FSP_INIT_RT_BUFFER *)&FspRtBuffer;
+	FspInitParams.ContinuationFunc = (CONTINUATION_PROC)ChipsetFspReturnPoint;
+	FspInitApi = (FSP_FSP_INIT)(fsp_ptr->ImageBase + fsp_ptr->FspInitEntry);
+
+	/* Call the chipset code to fill in the chipset specific structures */
+	chipset_fsp_early_init(&FspInitParams, fsp_ptr);
+
+	/* Call back to romstage for board specific changes */
+	romstage_fsp_rt_buffer_callback(&FspRtBuffer);
+
+	FspInitApi(&FspInitParams);
+
+	/* Should never return. Control will continue from ContinuationFunc */
+	die("Uh Oh! FspInitApi returned");
+}
+#endif	/* __PRE_RAM__ */
+
+volatile u8 * find_fsp ()
+{
+
+#ifdef __PRE_RAM__
+	volatile register u8 *fsp_ptr asm ("eax");
+
+	/* Entry point for CAR assembly routine */
+	__asm__ __volatile__ (
+		".global find_fsp\n\t"
+		"find_fsp:\n\t"
+	);
+#else
+	volatile u8 *fsp_ptr;
+#endif 	/* __PRE_RAM__ */
+
+#ifndef CONFIG_FSP_LOC
+#error "CONFIG_FSP_LOC must be set."
+#endif
+
+	/* The FSP is stored in CBFS */
+	fsp_ptr = (u8 *) CONFIG_FSP_LOC;
+
+	/* Check the FV signature, _FVH */
+	if (((EFI_FIRMWARE_VOLUME_HEADER *)fsp_ptr)->Signature == 0x4856465F) {
+		/* Go to the end of the FV header and align the address. */
+		fsp_ptr += ((EFI_FIRMWARE_VOLUME_HEADER *)fsp_ptr)->ExtHeaderOffset;
+		fsp_ptr += ((EFI_FIRMWARE_VOLUME_EXT_HEADER *)fsp_ptr)->ExtHeaderSize;
+		fsp_ptr = (u8 *)(((u32)fsp_ptr + 7) & 0xFFFFFFF8);
+	} else {
+		fsp_ptr = (u8*)ERROR_NO_FV_SIG;
+	}
+
+	/* Check the FFS GUID */
+	if (((u32)fsp_ptr > 0xff) &&
+		(((u32 *)&(((EFI_FFS_FILE_HEADER *)fsp_ptr)->Name))[0] == 0x912740BE) &&
+		(((u32 *)&(((EFI_FFS_FILE_HEADER *)fsp_ptr)->Name))[1] == 0x47342284) &&
+		(((u32 *)&(((EFI_FFS_FILE_HEADER *)fsp_ptr)->Name))[2] == 0xB08471B9) &&
+		(((u32 *)&(((EFI_FFS_FILE_HEADER *)fsp_ptr)->Name))[3] == 0x0C3F3527)) {
+		/* Add the FFS Header size to the base to find the Raw section Header */
+		fsp_ptr += sizeof(EFI_FFS_FILE_HEADER);
+	} else {
+		fsp_ptr = (u8 *)ERROR_NO_FFS_GUID;
+	}
+
+	if (((u32)fsp_ptr > 0xff) &&
+			((EFI_RAW_SECTION *)fsp_ptr)->Type == EFI_SECTION_RAW) {
+		/* Add the Raw Header size to the base to find the FSP INFO Header */
+		fsp_ptr += sizeof(EFI_RAW_SECTION);
+	} else {
+		fsp_ptr = (u8 *)ERROR_NO_INFO_HEADER;
+	}
+
+	/* Verify that the FSP is set to the base address we're expecting.*/
+	if (((u32)fsp_ptr > 0xff) &&
+			(*(u32*)(fsp_ptr + FSP_IMAGE_BASE_LOC) != CONFIG_FSP_LOC)) {
+		fsp_ptr = (u8 *)ERROR_IMAGEBASE_MISMATCH;
+	}
+
+	/* Verify the FSP Signature */
+	if (((u32)fsp_ptr > 0xff) &&
+			(*(u32*)(fsp_ptr + FSP_IMAGE_SIG_LOC) != FSP_SIG)){
+		fsp_ptr = (u8 *)ERROR_INFO_HEAD_SIG_MISMATCH;
+	}
+
+	/* Verify the FSP ID */
+	if (((u32)fsp_ptr > 0xff) &&
+		((*(u32 *)(fsp_ptr + FSP_IMAGE_ID_LOC) != FSP_IMAGE_ID_DWORD0) ||
+		 (*(u32 *)(fsp_ptr + (FSP_IMAGE_ID_LOC + 4)) != FSP_IMAGE_ID_DWORD1))) {
+		fsp_ptr = (u8 *)ERROR_FSP_SIG_MISMATCH;
+	}
+
+	return (fsp_ptr);
+}
+
+/** finds the saved temporary memory information in the FSP HOB list
+ *
+ * @param hob_list_ptr pointer to the start of the hob list
+ * @return pointer to saved CAR MEM or NULL if not found.
+ */
+void * find_saved_temp_mem(void *hob_list_ptr)
+{
+	EFI_GUID temp_hob_guid = FSP_BOOTLOADER_TEMPORARY_MEMORY_HOB_GUID;
+	EFI_HOB_GUID_TYPE *saved_mem_hob =
+			(EFI_HOB_GUID_TYPE *) find_hob_by_guid(
+			hob_list_ptr, &temp_hob_guid);
+
+	if (saved_mem_hob == NULL)
+		return NULL;
+
+	return (void *) ((char *) saved_mem_hob + sizeof(EFI_HOB_GUID_TYPE));
+}
+
+#ifndef FSP_RESERVE_MEMORY_SIZE
+/** @brief locates the HOB containing the location of the fsp reserved mem area
+ *
+ * @param hob_list_ptr pointer to the start of the hob list
+ * @return pointer to the start of the FSP reserved memory or NULL if not found.
+ */
+void * find_fsp_reserved_mem(void *hob_list_ptr)
+{
+	EFI_GUID fsp_reserved_guid = FSP_HOB_RESOURCE_OWNER_FSP_GUID;
+	EFI_HOB_RESOURCE_DESCRIPTOR *fsp_reserved_mem =
+			(EFI_HOB_RESOURCE_DESCRIPTOR *) find_hob_by_guid(
+			hob_list_ptr, &fsp_reserved_guid);
+
+	if (fsp_reserved_mem == NULL)
+		return NULL;
+
+	return  (void *)((uintptr_t)fsp_reserved_mem->PhysicalStart);
+}
+#endif /* FSP_RESERVE_MEMORY_SIZE */
+
+#ifndef __PRE_RAM__ /* Only parse HOB data in ramstage */
+
+void print_fsp_info(void) {
+
+	if (fsp_header_ptr == NULL)
+		fsp_header_ptr = (void *)find_fsp();
+		if ((u32)fsp_header_ptr < 0xff) {
+			post_code(0x4F); /* output something in case there is no serial */
+			die("Can't find the FSP!\n");
+		}
+
+	if (FspHobListPtr == NULL) {
+		FspHobListPtr = (void*)*((u32*) cbmem_find(CBMEM_ID_HOB_POINTER));
+	}
+
+	printk(BIOS_SPEW,"fsp_header_ptr: %p\n", fsp_header_ptr);
+	printk(BIOS_INFO,"FSP Header Version: %d\n", fsp_header_ptr->HeaderRevision);
+	printk(BIOS_INFO,"FSP Revision: %d.%d\n",
+			(u8)((fsp_header_ptr->ImageRevision >> 8) & 0xff),
+			(u8)(fsp_header_ptr->ImageRevision  & 0xff));
+}
+
+
+#if IS_ENABLED(CONFIG_ENABLE_MRC_CACHE)
+/**
+ *  Save the FSP memory HOB (mrc data) to the MRC area in CBMEM
+ */
+int save_mrc_data(void *hob_start)
+{
+	u32 *mrc_hob;
+	u32 *mrc_hob_data;
+	u32 mrc_hob_size;
+	struct mrc_data_container *mrc_data;
+	int output_len;
+	const EFI_GUID mrc_guid = FSP_NON_VOLATILE_STORAGE_HOB_GUID;
+
+	mrc_hob = GetNextGuidHob(&mrc_guid, hob_start);
+	if (mrc_hob == NULL){
+		printk(BIOS_DEBUG, "Memory Configure Data Hob is not present\n");
+		return(0);
+	}
+
+	mrc_hob_data = GET_GUID_HOB_DATA (mrc_hob);
+	mrc_hob_size = (u32) GET_HOB_LENGTH(mrc_hob);
+
+	printk(BIOS_DEBUG, "Memory Configure Data Hob at %p (size = 0x%x).\n",
+			(void *)mrc_hob_data, mrc_hob_size);
+
+	output_len = ALIGN(mrc_hob_size, 16);
+
+	/* Save the MRC S3/fast boot/ADR restore data to cbmem */
+	mrc_data = cbmem_add (CBMEM_ID_MRCDATA,
+			output_len + sizeof(struct mrc_data_container));
+
+	/* Just return if there was a problem with getting CBMEM */
+	if (mrc_data == NULL) {
+		printk(BIOS_WARNING, "CBMEM was not available to save the fast boot cache data.\n");
+		return 0;
+	}
+
+	printk(BIOS_DEBUG, "Copy FSP MRC DATA to HOB (source addr %p, dest addr %p, %u bytes)\n",
+			(void *)mrc_hob_data, mrc_data, output_len);
+
+	mrc_data->mrc_signature = MRC_DATA_SIGNATURE;
+	mrc_data->mrc_data_size = output_len;
+	mrc_data->reserved = 0;
+	memcpy(mrc_data->mrc_data, (const void *)mrc_hob_data, mrc_hob_size);
+
+	/* Zero the unused space in aligned buffer. */
+	if (output_len > mrc_hob_size)
+		memset((mrc_data->mrc_data + mrc_hob_size), 0,
+				output_len - mrc_hob_size);
+
+	mrc_data->mrc_checksum = compute_ip_checksum(mrc_data->mrc_data,
+			mrc_data->mrc_data_size);
+
+	printk(BIOS_SPEW, "Fast boot data (includes align and checksum):\n");
+	hexdump32(BIOS_SPEW, (void *)mrc_data->mrc_data, output_len);
+	return (1);
+}
+#endif /* CONFIG_ENABLE_MRC_CACHE */
+
+static void find_fsp_hob_update_mrc(void *unused)
+{
+	/* Set the global HOB list pointer */
+	FspHobListPtr = (void*)*((u32*) cbmem_find(CBMEM_ID_HOB_POINTER));
+
+	if (!FspHobListPtr){
+		printk(BIOS_ERR, "ERROR: Could not find FSP HOB pointer in CBFS!\n");
+	} else {
+		/* 0x0000: Print all types */
+		print_hob_type_structure(0x000, FspHobListPtr);
+
+	#if IS_ENABLED(CONFIG_ENABLE_MRC_CACHE)
+		if(save_mrc_data(FspHobListPtr))
+			update_mrc_cache(NULL);
+		else
+			printk(BIOS_DEBUG,"Not updating MRC data in flash.\n");
+	#endif
+	}
+}
+
+/* Update the MRC/fast boot cache as part of the late table writing stage */
+BOOT_STATE_INIT_ENTRY(BS_WRITE_TABLES, BS_ON_ENTRY,
+			find_fsp_hob_update_mrc, NULL);
+#endif	/* #ifndef __PRE_RAM__ */
diff --git a/src/drivers/intel/fsp1_0/fsp_util.h b/src/drivers/intel/fsp1_0/fsp_util.h
new file mode 100644
index 0000000..d65b842
--- /dev/null
+++ b/src/drivers/intel/fsp1_0/fsp_util.h
@@ -0,0 +1,135 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2013-2014 Sage Electronic Engineering, LLC.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef FSP_UTIL_H
+#define FSP_UTIL_H
+
+#include <chipset_fsp_util.h>
+#include "fsp_values.h"
+
+#if IS_ENABLED(CONFIG_ENABLE_MRC_CACHE)
+int save_mrc_data(void *hob_start);
+void * find_and_set_fastboot_cache(void);
+#endif
+
+volatile u8 * find_fsp (void);
+void fsp_early_init(FSP_INFO_HEADER *fsp_info);
+void FspNotify(u32 Phase);
+void FspNotifyReturnPoint(EFI_STATUS Status, VOID *HobListPtr);
+void romstage_fsp_rt_buffer_callback(FSP_INIT_RT_BUFFER *FspRtBuffer);
+void print_fsp_info(void);
+void chipset_fsp_early_init(FSP_INIT_PARAMS *FspInitParams,
+	FSP_INFO_HEADER *fsp_ptr);
+void ChipsetFspReturnPoint(EFI_STATUS Status, VOID *HobListPtr);
+void * find_saved_temp_mem(void *hob_list_ptr);
+void * find_fsp_reserved_mem(void *hob_list_ptr);
+
+/* functions in hob.c */
+void print_hob_mem_attributes(void *Hobptr);
+void print_hob_type_structure(u16 Hobtype, void *Hoblistptr);
+void print_hob_resource_attributes(void *Hobptr);
+void print_guid_type_attributes(void *Hobptr);
+const char * get_hob_type_string(void *Hobptr);
+void * find_hob_by_guid(void *Hoblistptr, EFI_GUID *guid1);
+uint8_t guids_are_equal(EFI_GUID *guid1, EFI_GUID *guid2);
+void printguid(EFI_GUID *guid);
+
+/* Additional HOB types not included in the FSP:
+ * #define EFI_HOB_TYPE_HANDOFF 0x0001
+ * #define EFI_HOB_TYPE_MEMORY_ALLOCATION 0x0002
+ * #define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR 0x0003
+ * #define EFI_HOB_TYPE_GUID_EXTENSION 0x0004
+ * #define EFI_HOB_TYPE_FV 0x0005
+ * #define EFI_HOB_TYPE_CPU 0x0006
+ * #define EFI_HOB_TYPE_MEMORY_POOL 0x0007
+ * #define EFI_HOB_TYPE_CV 0x0008
+ * #define EFI_HOB_TYPE_UNUSED 0xFFFE
+ * #define EFI_HOB_TYPE_END_OF_HOB_LIST 0xffff
+ */
+#define EFI_HOB_TYPE_HANDOFF		0x0001
+#define EFI_HOB_TYPE_MEMORY_POOL	0x0007
+
+#if IS_ENABLED(CONFIG_ENABLE_MRC_CACHE)
+#define MRC_DATA_ALIGN			0x1000
+#define MRC_DATA_SIGNATURE		(('M'<<0)|('R'<<8)|('C'<<16)|('D'<<24))
+
+struct mrc_data_container {
+	u32	mrc_signature;	// "MRCD"
+	u32	mrc_data_size;	// Actual total size of this structure
+	u32	mrc_checksum;	// IP style checksum
+	u32	reserved;		// For header alignment
+	u8	mrc_data[0];	// Variable size, platform/run time dependent.
+} __attribute__ ((packed));
+
+struct mrc_data_container *find_current_mrc_cache(void);
+
+#if !defined(__PRE_RAM__)
+void update_mrc_cache(void *unused);
+#endif
+
+#endif
+
+/* The offset in bytes from the start of the info structure */
+#define FSP_IMAGE_SIG_LOC				0
+#define FSP_IMAGE_ID_LOC				16
+#define FSP_IMAGE_BASE_LOC				28
+
+#define FSP_SIG						0x48505346	/* 'FSPH' */
+
+#define ERROR_NO_FV_SIG				1
+#define ERROR_NO_FFS_GUID				2
+#define ERROR_NO_INFO_HEADER			3
+#define ERROR_IMAGEBASE_MISMATCH		4
+#define ERROR_INFO_HEAD_SIG_MISMATCH	5
+#define ERROR_FSP_SIG_MISMATCH			6
+
+#ifndef __PRE_RAM__
+extern void *FspHobListPtr;
+#endif
+
+#define UPD_DEFAULT_CHECK(member) \
+	if (config->member != UPD_DEFAULT) { \
+		UpdData->member = config->member - 1; \
+	} \
+	printk(FSP_INFO_LEVEL, #member ":\t\t0x%02x %s\n", UpdData->member, \
+		config->member ? "(set)" : "(default)");
+
+#define UPD_SPD_CHECK(member) \
+	if (config->member == UPD_SPD_ADDR_DISABLED) { \
+		UpdData->member = 0x00; \
+	} else if (config->member != UPD_SPD_ADDR_DEFAULT) { \
+		UpdData->member = config->member; \
+	} \
+	printk(FSP_INFO_LEVEL, #member ":\t\t0x%02x %s\n", UpdData->member, \
+		config->member ? "(set)" : "(default)");
+
+#define UPD_DEVICE_CHECK(devicename, member, statement) \
+	case devicename: \
+		UpdData->member = dev->enabled; \
+		printk(FSP_INFO_LEVEL, statement "%s\n", \
+			UpdData->member?"Enabled":"Disabled"); \
+	break;
+
+
+#ifndef FSP_BOOTLOADER_TEMPORARY_MEMORY_HOB_GUID
+#define FSP_BOOTLOADER_TEMPORARY_MEMORY_HOB_GUID \
+	{ 0xbbcff46c, 0xc8d3, 0x4113, { 0x89, 0x85, 0xb9, 0xd4, 0xf3, 0xb3, 0xf6, 0x4e } };
+#endif
+
+#endif	/* FSP_UTIL_H */
diff --git a/src/drivers/intel/fsp1_0/fsp_values.h b/src/drivers/intel/fsp1_0/fsp_values.h
new file mode 100644
index 0000000..e5098bb
--- /dev/null
+++ b/src/drivers/intel/fsp1_0/fsp_values.h
@@ -0,0 +1,41 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2014 Sage Electronic Engineering, LLC.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef FSP_VALUES_H
+#define FSP_VALUES_H
+
+#ifndef FSP_DEBUG_LEVEL
+# define FSP_DEBUG_LEVEL	BIOS_SPEW
+#endif
+
+#ifndef FSP_INFO_LEVEL
+# define FSP_INFO_LEVEL	BIOS_DEBUG
+#endif
+
+#define INCREMENT_FOR_DEFAULT(x) (x+1)
+
+#define UPD_DEFAULT		0x00
+#define UPD_DISABLE		INCREMENT_FOR_DEFAULT(0)
+#define UPD_ENABLE		INCREMENT_FOR_DEFAULT(1)
+#define UPD_USE_DEVICETREE	0xff
+
+#define UPD_SPD_ADDR_DEFAULT	UPD_DEFAULT
+#define UPD_SPD_ADDR_DISABLED	0xFF
+
+#endif
diff --git a/src/drivers/intel/fsp1_0/hob.c b/src/drivers/intel/fsp1_0/hob.c
new file mode 100644
index 0000000..99c4ba1
--- /dev/null
+++ b/src/drivers/intel/fsp1_0/hob.c
@@ -0,0 +1,269 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2013-2014 Sage Electronic Engineering, LLC.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <types.h>
+#include <string.h>
+#include <console/console.h>
+#include <lib.h> // hexdump
+#include "fsp_util.h"
+
+
+/** Displays a GUID's address and value
+ *
+ * @param guid pointer to the GUID to display
+ */
+void printguid(EFI_GUID *guid)
+{
+	printk(BIOS_SPEW,"Address: %p Guid: %08lx-%04x-%04x-",
+			guid, (unsigned long)guid->Data1,
+			guid->Data2, guid->Data3);
+	printk(BIOS_SPEW,"%02x%02x%02x%02x%02x%02x%02x%02x\n",
+			guid->Data4[0], guid->Data4[1],
+			guid->Data4[2], guid->Data4[3],
+			guid->Data4[4], guid->Data4[5],
+			guid->Data4[6], guid->Data4[7] );
+}
+
+void print_hob_mem_attributes(void *Hobptr)
+{
+	EFI_HOB_MEMORY_ALLOCATION *HobMemoryPtr = (EFI_HOB_MEMORY_ALLOCATION *)Hobptr;
+	EFI_MEMORY_TYPE Hobmemtype = HobMemoryPtr->AllocDescriptor.MemoryType;
+	u64 Hobmemaddr = HobMemoryPtr->AllocDescriptor.MemoryBaseAddress;
+	u64 Hobmemlength = HobMemoryPtr->AllocDescriptor.MemoryLength;
+	const char * Hobmemtypenames[15];
+
+	Hobmemtypenames[0] = "EfiReservedMemoryType";
+	Hobmemtypenames[1] = "EfiLoaderCode";
+	Hobmemtypenames[2] = "EfiLoaderData";
+	Hobmemtypenames[3] = "EfiBootServicesCode";
+	Hobmemtypenames[4] = "EfiBootServicesData";
+	Hobmemtypenames[5] = "EfiRuntimeServicesCode";
+	Hobmemtypenames[6] = "EfiRuntimeServicesData";
+	Hobmemtypenames[7] = "EfiConventionalMemory";
+	Hobmemtypenames[8] = "EfiUnusableMemory";
+	Hobmemtypenames[9] = "EfiACPIReclaimMemory";
+	Hobmemtypenames[10] = "EfiACPIMemoryNVS";
+	Hobmemtypenames[11] = "EfiMemoryMappedIO";
+	Hobmemtypenames[12] = "EfiMemoryMappedIOPortSpace";
+	Hobmemtypenames[13] = "EfiPalCode";
+	Hobmemtypenames[14] = "EfiMaxMemoryType";
+
+	printk(BIOS_SPEW, "  Memory type %s (0x%x)\n",
+			Hobmemtypenames[(u32)Hobmemtype], (u32) Hobmemtype);
+	printk(BIOS_SPEW, "  at location 0x%0lx with length 0x%0lx\n",
+			(unsigned long)Hobmemaddr, (unsigned long)Hobmemlength);
+}
+
+void print_hob_resource_attributes(void *Hobptr)
+{
+	EFI_HOB_RESOURCE_DESCRIPTOR *HobResourcePtr =
+		(EFI_HOB_RESOURCE_DESCRIPTOR *)Hobptr;
+	u32 Hobrestype   = HobResourcePtr->ResourceType;
+	u32 Hobresattr   = HobResourcePtr->ResourceAttribute;
+	u64 Hobresaddr   = HobResourcePtr->PhysicalStart;
+	u64 Hobreslength = HobResourcePtr->ResourceLength;
+	const char *Hobrestypestr = NULL;
+
+	// HOB Resource Types
+	switch (Hobrestype) {
+	case EFI_RESOURCE_SYSTEM_MEMORY:
+		Hobrestypestr = "EFI_RESOURCE_SYSTEM_MEMORY"; break;
+	case EFI_RESOURCE_MEMORY_MAPPED_IO:
+		Hobrestypestr = "EFI_RESOURCE_MEMORY_MAPPED_IO"; break;
+	case EFI_RESOURCE_IO:
+		Hobrestypestr = "EFI_RESOURCE_IO"; break;
+	case EFI_RESOURCE_FIRMWARE_DEVICE:
+		Hobrestypestr = "EFI_RESOURCE_FIRMWARE_DEVICE"; break;
+	case EFI_RESOURCE_MEMORY_MAPPED_IO_PORT:
+		Hobrestypestr = "EFI_RESOURCE_MEMORY_MAPPED_IO_PORT"; break;
+	case EFI_RESOURCE_MEMORY_RESERVED:
+		Hobrestypestr = "EFI_RESOURCE_MEMORY_RESERVED"; break;
+	case EFI_RESOURCE_IO_RESERVED:
+		Hobrestypestr = "EFI_RESOURCE_IO_RESERVED"; break;
+	case EFI_RESOURCE_MAX_MEMORY_TYPE:
+		Hobrestypestr = "EFI_RESOURCE_MAX_MEMORY_TYPE"; break;
+	default:
+		Hobrestypestr = "EFI_RESOURCE_UNKNOWN"; break;
+	}
+
+	printk(BIOS_SPEW, "  Resource %s (0x%0x) has attributes 0x%0x\n",
+			Hobrestypestr, Hobrestype, Hobresattr);
+	printk(BIOS_SPEW, "  at location 0x%0lx with length 0x%0lx\n",
+			(unsigned long)Hobresaddr, (unsigned long)Hobreslength);
+}
+
+const char * get_hob_type_string(void *Hobptr)
+{
+	EFI_HOB_GENERIC_HEADER *HobHeaderPtr = (EFI_HOB_GENERIC_HEADER *)Hobptr;
+	u16 Hobtype = HobHeaderPtr->HobType;
+	const char *Hobtypestring = NULL;
+
+	switch (Hobtype) {
+	case EFI_HOB_TYPE_HANDOFF:
+		Hobtypestring = "EFI_HOB_TYPE_HANDOFF"; break;
+	case EFI_HOB_TYPE_MEMORY_ALLOCATION:
+		Hobtypestring = "EFI_HOB_TYPE_MEMORY_ALLOCATION"; break;
+	case EFI_HOB_TYPE_RESOURCE_DESCRIPTOR:
+		Hobtypestring = "EFI_HOB_TYPE_RESOURCE_DESCRIPTOR"; break;
+	case EFI_HOB_TYPE_GUID_EXTENSION:
+		Hobtypestring = "EFI_HOB_TYPE_GUID_EXTENSION"; break;
+	case EFI_HOB_TYPE_MEMORY_POOL:
+		Hobtypestring = "EFI_HOB_TYPE_MEMORY_POOL"; break;
+	case EFI_HOB_TYPE_UNUSED:
+		Hobtypestring = "EFI_HOB_TYPE_UNUSED"; break;
+	case EFI_HOB_TYPE_END_OF_HOB_LIST:
+		Hobtypestring = "EFI_HOB_TYPE_END_OF_HOB_LIST"; break;
+	default:
+		Hobtypestring = "EFI_HOB_TYPE_UNRECOGNIZED"; break;
+	}
+
+	return Hobtypestring;
+}
+
+/** Displays the length, location, and GUID value of a GUID extension
+ *
+ * The EFI_HOB_GUID_TYPE is very basic - it just contains the standard
+ * HOB header containing the HOB type and length, and a GUID for
+ * identification.  The rest of the data is undefined and must be known
+ * based on the GUID.
+ *
+ * This displays the entire HOB length, and the location of the start
+ * of the HOB, *NOT* the length of or the start of the data inside the HOB.
+ *
+ * @param Hobptr
+ */
+void print_guid_type_attributes(void *Hobptr)
+{
+	printk(BIOS_SPEW, "  at location %p with length0x%0lx\n  ",
+		Hobptr, (unsigned long)(((EFI_PEI_HOB_POINTERS *) \
+		Hobptr)->Guid->Header.HobLength));
+	printguid(&(((EFI_HOB_GUID_TYPE *)Hobptr)->Name));
+
+}
+
+/* Print out a structure of all the HOBs
+ * that match a certain type:
+ * Print all types			(0x0000)
+ * EFI_HOB_TYPE_HANDOFF			(0x0001)
+ * EFI_HOB_TYPE_MEMORY_ALLOCATION	(0x0002)
+ * EFI_HOB_TYPE_RESOURCE_DESCRIPTOR	(0x0003)
+ * EFI_HOB_TYPE_GUID_EXTENSION		(0x0004)
+ * EFI_HOB_TYPE_MEMORY_POOL		(0x0007)
+ * EFI_HOB_TYPE_UNUSED			(0xFFFE)
+ * EFI_HOB_TYPE_END_OF_HOB_LIST	(0xFFFF)
+ */
+void print_hob_type_structure(u16 Hobtype, void *Hoblistptr)
+{
+	u32 *Currenthob;
+	u32 *Nexthob = 0;
+	u8  Lasthob = 0;
+	u32 Currenttype;
+	const char *Currenttypestr;
+
+	Currenthob = Hoblistptr;
+
+	/* Print out HOBs of our desired type until
+	 * the end of the HOB list
+	 */
+	printk(BIOS_DEBUG, "\n=== FSP HOB Data Structure ===\n");
+	printk(BIOS_DEBUG, "FSP Hoblistptr: 0x%0x\n",
+			(u32) Hoblistptr);
+	do {
+		EFI_HOB_GENERIC_HEADER *CurrentHeaderPtr =
+			(EFI_HOB_GENERIC_HEADER *)Currenthob;
+		Currenttype = CurrentHeaderPtr->HobType;  /* Get the type of this HOB */
+		Currenttypestr = get_hob_type_string(Currenthob);
+
+		if (Currenttype == Hobtype || Hobtype == 0x0000) {
+			printk(BIOS_DEBUG, "HOB 0x%0x is an %s (type 0x%0x)\n",
+					(u32) Currenthob, Currenttypestr, Currenttype);
+			switch (Currenttype) {
+			case EFI_HOB_TYPE_MEMORY_ALLOCATION:
+				print_hob_mem_attributes(Currenthob); break;
+			case EFI_HOB_TYPE_RESOURCE_DESCRIPTOR:
+				print_hob_resource_attributes(Currenthob); break;
+			case EFI_HOB_TYPE_GUID_EXTENSION:
+				print_guid_type_attributes(Currenthob);	break;
+			}
+		}
+
+		Lasthob = END_OF_HOB_LIST(Currenthob);	/* Check for end of HOB list */
+		if (!Lasthob) {
+			Nexthob = GET_NEXT_HOB(Currenthob);	/* Get next HOB pointer */
+			Currenthob = Nexthob;	// Start on next HOB
+		}
+	} while (!Lasthob);
+	printk(BIOS_DEBUG, "=== End of FSP HOB Data Structure ===\n\n");
+}
+
+
+/** Finds a HOB entry based on type and guid
+ *
+ * @param current_hob pointer to the start of the HOB list
+ * @param guid the GUID of the HOB entry to find
+ * @return pointer to the start of the requested HOB or NULL if not found.
+ */
+void * find_hob_by_guid(void *current_hob, EFI_GUID *guid)
+{
+	do {
+		switch (((EFI_HOB_GENERIC_HEADER *)current_hob)->HobType) {
+
+		case EFI_HOB_TYPE_MEMORY_ALLOCATION:
+			if (guids_are_equal(guid, &(((EFI_HOB_MEMORY_ALLOCATION *) \
+				current_hob)->AllocDescriptor.Name)))
+				return current_hob;
+			break;
+		case EFI_HOB_TYPE_RESOURCE_DESCRIPTOR:
+			if (guids_are_equal(guid,
+				&(((EFI_HOB_RESOURCE_DESCRIPTOR *) \
+				current_hob)->Owner)))
+				return current_hob;
+			break;
+		case EFI_HOB_TYPE_GUID_EXTENSION:
+			if (guids_are_equal(guid, &(((EFI_HOB_GUID_TYPE *) \
+					current_hob)->Name)))
+				return current_hob;
+			break;
+		}
+
+		if (!END_OF_HOB_LIST(current_hob))
+			current_hob = GET_NEXT_HOB(current_hob); /* Get next HOB pointer */
+	} while (!END_OF_HOB_LIST(current_hob));
+
+	return NULL;
+}
+
+/** Compares a pair of GUIDs to see if they are equal
+ *
+ * GUIDs are 128 bits long, so compare them as pairs of quadwords.
+ *
+ * @param guid1 pointer to the first of the GUIDs to compare
+ * @param guid2 pointer to the second of the GUIDs to compare
+ * @return 1 if the GUIDs were equal, 0 if GUIDs were not equal
+ */
+uint8_t guids_are_equal(EFI_GUID *guid1, EFI_GUID *guid2)
+{
+	uint64_t* guid_1 = (void *) guid1;
+	uint64_t* guid_2 = (void *) guid2;
+
+	if ((*(guid_1) != *(guid_2)) || (*(guid_1 + 1) != *(guid_2 + 1)))
+		return 0;
+
+	return 1;
+}
diff --git a/src/mainboard/intel/bayleybay_fsp/romstage.c b/src/mainboard/intel/bayleybay_fsp/romstage.c
index ef848fa..9a08b08 100644
--- a/src/mainboard/intel/bayleybay_fsp/romstage.c
+++ b/src/mainboard/intel/bayleybay_fsp/romstage.c
@@ -36,7 +36,7 @@
 #include <baytrail/romstage.h>
 #include <baytrail/acpi.h>
 #include <baytrail/baytrail.h>
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 
 /**
  * /brief mainboard call for setup that needs to be done before fsp init
diff --git a/src/mainboard/intel/minnowmax/romstage.c b/src/mainboard/intel/minnowmax/romstage.c
index d8fd04a..656c7b4 100644
--- a/src/mainboard/intel/minnowmax/romstage.c
+++ b/src/mainboard/intel/minnowmax/romstage.c
@@ -20,7 +20,7 @@
  */
 
 #include <baytrail/romstage.h>
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 #include <pc80/mc146818rtc.h>
 #include <console/console.h>
 #include <baytrail/gpio.h>
diff --git a/src/mainboard/intel/mohonpeak/romstage.c b/src/mainboard/intel/mohonpeak/romstage.c
index e06682c..6218e38 100644
--- a/src/mainboard/intel/mohonpeak/romstage.c
+++ b/src/mainboard/intel/mohonpeak/romstage.c
@@ -23,7 +23,7 @@
 #include <device/pci_def.h>
 #include <device/pnp_def.h>
 #include <cpu/x86/lapic.h>
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 #include <southbridge/intel/fsp_rangeley/soc.h>
 #include <southbridge/intel/fsp_rangeley/gpio.h>
 #include <southbridge/intel/fsp_rangeley/romstage.h>
diff --git a/src/mainboard/siemens/mc_tcu3/romstage.c b/src/mainboard/siemens/mc_tcu3/romstage.c
index 5274529..2866a2c 100644
--- a/src/mainboard/siemens/mc_tcu3/romstage.c
+++ b/src/mainboard/siemens/mc_tcu3/romstage.c
@@ -36,7 +36,7 @@
 #include <baytrail/romstage.h>
 #include <baytrail/acpi.h>
 #include <baytrail/baytrail.h>
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 #include "modhwinfo.h"
 
 /**
diff --git a/src/northbridge/intel/fsp_rangeley/chip.h b/src/northbridge/intel/fsp_rangeley/chip.h
index a8d0a1f..02a69b9 100644
--- a/src/northbridge/intel/fsp_rangeley/chip.h
+++ b/src/northbridge/intel/fsp_rangeley/chip.h
@@ -22,7 +22,7 @@
 #define _FSP_RANGELEY_CHIP_H_
 
 #include <arch/acpi.h>
-#include <drivers/intel/fsp/fsp_values.h>
+#include <drivers/intel/fsp1_0/fsp_values.h>
 
 struct northbridge_intel_fsp_rangeley_config {
 
diff --git a/src/northbridge/intel/fsp_rangeley/fsp/Kconfig b/src/northbridge/intel/fsp_rangeley/fsp/Kconfig
index 82eceda..82d62c5 100644
--- a/src/northbridge/intel/fsp_rangeley/fsp/Kconfig
+++ b/src/northbridge/intel/fsp_rangeley/fsp/Kconfig
@@ -19,7 +19,7 @@
 
 config RANGELEY_FSP_SPECIFIC_OPTIONS
 	def_bool y
-	select PLATFORM_USES_FSP
+	select PLATFORM_USES_FSP1_0
 	select USE_GENERIC_FSP_CAR_INC
 	select FSP_USES_UPD
 	select ENABLE_MRC_CACHE #rangeley FSP always needs MRC data
diff --git a/src/northbridge/intel/fsp_rangeley/fsp/chipset_fsp_util.c b/src/northbridge/intel/fsp_rangeley/fsp/chipset_fsp_util.c
index 949cf2a..3a4cd6e 100644
--- a/src/northbridge/intel/fsp_rangeley/fsp/chipset_fsp_util.c
+++ b/src/northbridge/intel/fsp_rangeley/fsp/chipset_fsp_util.c
@@ -25,7 +25,7 @@
 #include <cbmem.h>
 #include <device/device.h>
 #include <southbridge/intel/fsp_rangeley/pci_devs.h>
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 #include <fspvpd.h>
 #include <fspbootmode.h>
 #include <reset.h>
diff --git a/src/northbridge/intel/fsp_rangeley/northbridge.c b/src/northbridge/intel/fsp_rangeley/northbridge.c
index be3a3ac..14d0853 100644
--- a/src/northbridge/intel/fsp_rangeley/northbridge.c
+++ b/src/northbridge/intel/fsp_rangeley/northbridge.c
@@ -35,7 +35,7 @@
 #include <cbmem.h>
 #include "chip.h"
 #include "northbridge.h"
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 #include <cpu/x86/lapic.h>
 
 static int bridge_revision_id = -1;
diff --git a/src/northbridge/intel/fsp_rangeley/raminit.c b/src/northbridge/intel/fsp_rangeley/raminit.c
index 9626745..c920f9d 100644
--- a/src/northbridge/intel/fsp_rangeley/raminit.c
+++ b/src/northbridge/intel/fsp_rangeley/raminit.c
@@ -24,7 +24,7 @@
 #include <cbmem.h>
 #include <device/pci_def.h>
 #include "northbridge.h"
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 
 static uintptr_t smm_region_start(void)
 {
diff --git a/src/northbridge/intel/fsp_sandybridge/fsp/Kconfig b/src/northbridge/intel/fsp_sandybridge/fsp/Kconfig
index 03999618..0b4ca97 100644
--- a/src/northbridge/intel/fsp_sandybridge/fsp/Kconfig
+++ b/src/northbridge/intel/fsp_sandybridge/fsp/Kconfig
@@ -19,7 +19,7 @@
 
 config SANDYBRIDGE_FSP_SPECIFIC_OPTIONS
 	def_bool y
-	select PLATFORM_USES_FSP
+	select PLATFORM_USES_FSP1_0
 	select USE_GENERIC_FSP_CAR_INC
 	select FSP_USES_UPD if SOUTHBRIDGE_INTEL_FSP_I89XX
 
diff --git a/src/soc/intel/fsp_baytrail/baytrail/romstage.h b/src/soc/intel/fsp_baytrail/baytrail/romstage.h
index a800600..1f421df 100644
--- a/src/soc/intel/fsp_baytrail/baytrail/romstage.h
+++ b/src/soc/intel/fsp_baytrail/baytrail/romstage.h
@@ -29,7 +29,7 @@ void report_platform_info(void);
 
 #include <stdint.h>
 #include <arch/cpu.h>
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 
 void main(FSP_INFO_HEADER *fsp_info_header);
 void romstage_main_continue(EFI_STATUS status, void *hob_list_ptr);
diff --git a/src/soc/intel/fsp_baytrail/chip.c b/src/soc/intel/fsp_baytrail/chip.c
index 732d1dc..d26b64a 100644
--- a/src/soc/intel/fsp_baytrail/chip.c
+++ b/src/soc/intel/fsp_baytrail/chip.c
@@ -22,7 +22,7 @@
 #include <device/pci.h>
 #include <baytrail/pci_devs.h>
 #include <baytrail/ramstage.h>
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 #include "chip.h"
 
 static void pci_domain_set_resources(device_t dev)
diff --git a/src/soc/intel/fsp_baytrail/chip.h b/src/soc/intel/fsp_baytrail/chip.h
index 6e83ef2..9a2edfe 100644
--- a/src/soc/intel/fsp_baytrail/chip.h
+++ b/src/soc/intel/fsp_baytrail/chip.h
@@ -23,7 +23,7 @@
 #define _FSP_BAYTRAIL_CHIP_H_
 
 #include <arch/acpi.h>
-#include <drivers/intel/fsp/fsp_values.h>
+#include <drivers/intel/fsp1_0/fsp_values.h>
 
 /* The devicetree parser expects chip.h to reside directly in the path
  * specified by the devicetree. */
diff --git a/src/soc/intel/fsp_baytrail/fsp/Kconfig b/src/soc/intel/fsp_baytrail/fsp/Kconfig
index cbe3a95..252c41f 100644
--- a/src/soc/intel/fsp_baytrail/fsp/Kconfig
+++ b/src/soc/intel/fsp_baytrail/fsp/Kconfig
@@ -19,7 +19,7 @@
 
 config BAYTRAIL_FSP_SPECIFIC_OPTIONS
 	def_bool y
-	select PLATFORM_USES_FSP
+	select PLATFORM_USES_FSP1_0
 	select USE_GENERIC_FSP_CAR_INC
 	select FSP_USES_UPD
 
diff --git a/src/soc/intel/fsp_baytrail/fsp/chipset_fsp_util.c b/src/soc/intel/fsp_baytrail/fsp/chipset_fsp_util.c
index b8c1bf6..eb068ba 100644
--- a/src/soc/intel/fsp_baytrail/fsp/chipset_fsp_util.c
+++ b/src/soc/intel/fsp_baytrail/fsp/chipset_fsp_util.c
@@ -26,7 +26,7 @@
 #include <device/device.h>
 #include <device/pci_def.h>
 #include <baytrail/pci_devs.h>
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 #include "../chip.h"
 #include <arch/io.h>
 #include <baytrail/reset.h>
diff --git a/src/soc/intel/fsp_baytrail/memmap.c b/src/soc/intel/fsp_baytrail/memmap.c
index 480bbeb..5f31430 100644
--- a/src/soc/intel/fsp_baytrail/memmap.c
+++ b/src/soc/intel/fsp_baytrail/memmap.c
@@ -22,7 +22,7 @@
 #include <cbmem.h>
 #include <baytrail/iosf.h>
 #include <baytrail/smm.h>
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 
 uintptr_t smm_region_start(void)
 {
diff --git a/src/soc/intel/fsp_baytrail/northcluster.c b/src/soc/intel/fsp_baytrail/northcluster.c
index b288388..2238a8a 100644
--- a/src/soc/intel/fsp_baytrail/northcluster.c
+++ b/src/soc/intel/fsp_baytrail/northcluster.c
@@ -31,7 +31,7 @@
 #include <device/pci.h>
 #include <cbmem.h>
 #include <baytrail/baytrail.h>
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 
 
 static const int legacy_hole_base_k = 0xa0000 / 1024;
diff --git a/src/soc/intel/fsp_baytrail/romstage/romstage.c b/src/soc/intel/fsp_baytrail/romstage/romstage.c
index 81a0279..3c4098f 100644
--- a/src/soc/intel/fsp_baytrail/romstage/romstage.c
+++ b/src/soc/intel/fsp_baytrail/romstage/romstage.c
@@ -37,7 +37,7 @@
 #include <baytrail/romstage.h>
 #include <baytrail/acpi.h>
 #include <baytrail/baytrail.h>
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 #include <baytrail/pmc.h>
 #include <baytrail/spi.h>
 #include <version.h>
diff --git a/src/southbridge/intel/fsp_rangeley/romstage.c b/src/southbridge/intel/fsp_rangeley/romstage.c
index e6b4f62..9596c7c 100644
--- a/src/southbridge/intel/fsp_rangeley/romstage.c
+++ b/src/southbridge/intel/fsp_rangeley/romstage.c
@@ -29,7 +29,7 @@
 #include <pc80/mc146818rtc.h>
 #include <cbmem.h>
 #include <console/console.h>
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 #include "northbridge/intel/fsp_rangeley/northbridge.h"
 #include "southbridge/intel/fsp_rangeley/soc.h"
 #include "southbridge/intel/fsp_rangeley/gpio.h"
diff --git a/src/southbridge/intel/fsp_rangeley/romstage.h b/src/southbridge/intel/fsp_rangeley/romstage.h
index 4afce5f..a421953 100644
--- a/src/southbridge/intel/fsp_rangeley/romstage.h
+++ b/src/southbridge/intel/fsp_rangeley/romstage.h
@@ -27,7 +27,7 @@
 
 #include <stdint.h>
 #include <arch/cpu.h>
-#include <drivers/intel/fsp/fsp_util.h>
+#include <drivers/intel/fsp1_0/fsp_util.h>
 
 void main(FSP_INFO_HEADER *fsp_info_header);
 void early_mainboard_romstage_entry(void);
diff --git a/src/vendorcode/intel/Kconfig b/src/vendorcode/intel/Kconfig
index 21b48ae..312f4de 100644
--- a/src/vendorcode/intel/Kconfig
+++ b/src/vendorcode/intel/Kconfig
@@ -19,7 +19,7 @@
 
 config FSP_VENDORCODE_HEADER_PATH
 	string
-	default "fsp/ivybridge_bd82x6x" if CPU_INTEL_FSP_MODEL_306AX && SOUTHBRIDGE_INTEL_FSP_BD82X6X
-	default "fsp/ivybridge_i89xx" if CPU_INTEL_FSP_MODEL_306AX && SOUTHBRIDGE_INTEL_FSP_I89XX
-	default "fsp/baytrail" if SOC_INTEL_FSP_BAYTRAIL
-	default "fsp/rangeley" if CPU_INTEL_FSP_MODEL_406DX
+	default "fsp1_0/ivybridge_bd82x6x" if CPU_INTEL_FSP_MODEL_306AX && SOUTHBRIDGE_INTEL_FSP_BD82X6X
+	default "fsp1_0/ivybridge_i89xx" if CPU_INTEL_FSP_MODEL_306AX && SOUTHBRIDGE_INTEL_FSP_I89XX
+	default "fsp1_0/baytrail" if SOC_INTEL_FSP_BAYTRAIL
+	default "fsp1_0/rangeley" if CPU_INTEL_FSP_MODEL_406DX
diff --git a/src/vendorcode/intel/fsp/baytrail/absf/minnowmax_1gb.absf b/src/vendorcode/intel/fsp/baytrail/absf/minnowmax_1gb.absf
deleted file mode 100644
index 66ab0d7..0000000
--- a/src/vendorcode/intel/fsp/baytrail/absf/minnowmax_1gb.absf
+++ /dev/null
@@ -1,328 +0,0 @@
-//
-// This file contains an 'Intel Peripheral Driver' and is
-// licensed for Intel CPUs and chipsets under the terms of your
-// license agreement with Intel or your vendor.  This file must not
-// be modified by end users or could render the generated boot loader
-// inoperable.
-//
-// @file
-// Boot Setting File for Platform: Bayley Bay Platform
-//
-// Copyright (c) 2010-2013 Intel Corporation. All rights reserved
-// This software and associated documentation (if any) is furnished
-// under a license and may only be used or copied in accordance
-// with the terms of the license. Except as permitted by such
-// license, no part of this software or documentation may be
-// reproduced, stored in a retrieval system, or transmitted in any
-// form or by any means without the express written consent of
-// Intel Corporation.
-//
-//
-
-
-GlobalDataDef
-  SKUID = 0 $_AS_BUILT_ = 0x01 , "DEFAULT"
-EndGlobalData
-
-StructDef
-
-    Find "VLV2UPDR"
-    Skip 24 bytes
-    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitTsegSize        2 bytes $_AS_BUILT_ = 0x1, 0x0 $_DEFAULT_ = 0x0001
-    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitMmioSize        2 bytes $_AS_BUILT_ = 0x0, 0x8 $_DEFAULT_ = 0x0800
-    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr1        1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0xA0
-    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr2        1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0xA2
-    $gPlatformFspPkgTokenSpaceGuid_PcdeMMCBootMode           1 byte $_AS_BUILT_ = 0x3 $_DEFAULT_  = 2
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdio             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdcard           1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart0          1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart1          1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSpi              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableLan              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSata             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdSataMode               1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableAzalia           1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0
-    $gPlatformFspPkgTokenSpaceGuid_AzaliaConfigPtr           4 bytes $_AS_BUILT_ = 0x0, 0x0, 0x0, 0x0 $_DEFAULT_  = 0
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableXhci             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableLpe              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdLpssSioEnablePciMode   1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma0             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma1             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C0             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C1             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C2             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C3             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C4             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C5             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C6             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm0             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm1             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsi              1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0
-    $gPlatformFspPkgTokenSpaceGuid_PcdIgdDvmt50PreAlloc      1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
-    $gPlatformFspPkgTokenSpaceGuid_PcdApertureSize           1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
-    $gPlatformFspPkgTokenSpaceGuid_PcdGttSize                1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
-    $gPlatformFspPkgTokenSpaceGuid_ISPEnable                 1 bytes $_AS_BUILT_ = 0x0 $_DEFAULT_ = 0
-
-    Find "VLYVIEW1"
-    $gPlatformFspPkgTokenSpaceGuid_PcdImageRevision          4 bytes $_AS_BUILT_ = 0x2, 0x3, 0x0, 0x0 $_DEFAULT_ = 0x00000302
-    Skip 24 bytes
-    $gPlatformFspPkgTokenSpaceGuid_PcdPlatformType           1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSecureBoot       1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 2
-
-    $DIMM_MemDown             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 0
-    $DRAM_Speed               1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 2
-    $DRAM_Type                1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 1
-    $Rank_En_0_0              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 1
-    $Rank_En_1_0              1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_ = 0
-    $DIMM_DWidth_0_0          1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 0
-    $DIMM_Density_0_0         1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 1
-    $DIMM_BusWidth_0_0        1 byte $_AS_BUILT_ = 0x3 $_DEFAULT_ = 3
-    $DIMM_Sides_0_0           1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_ = 0
-    $tCL                      1 byte $_AS_BUILT_ = 0x7 $_DEFAULT_ = 9
-    $tRP_tRCD                 1 byte $_AS_BUILT_ = 0x7 $_DEFAULT_ = 9
-    $tWR                      1 byte $_AS_BUILT_ = 0x8 $_DEFAULT_ = 10
-    $tWTR                     1 byte $_AS_BUILT_ = 0x4 $_DEFAULT_ = 5
-    $tRRD                     1 byte $_AS_BUILT_ = 0x6 $_DEFAULT_ = 4
-    $tRTP                     1 byte $_AS_BUILT_ = 0x4 $_DEFAULT_ = 5
-    $tFAW                     1 byte $_AS_BUILT_ = 0x14 $_DEFAULT_ = 20
-
-EndStruct
-
-List &DRAMSPEED
-    Selection 0x0 , "800 MHz"
-    Selection 0x1 , "1066 MHz"
-    Selection 0x2 , "1333 MHz"
-    Selection 0x3 , "1600 MHz"
-EndList
-
-List &DRAMTYPE
-    Selection 0x0 , "DDR3"
-    Selection 0x1 , "DDR3L"
-    Selection 0x2 , "DDR3U"
-    //Selection 0x3 , "LPDDR2"
-    Selection 0x4 , "LPDDR2"
-    Selection 0x5 , "LPDDR3"
-    Selection 0x6 , "DDR4"
-EndList
-
-List &DIMMDWIDTH
-    Selection 0x0 , "x8"
-    Selection 0x1 , "x16"
-    Selection 0x2 , "x32"
-EndList
-
-List &DIMMDENSITY
-    Selection 0x0 , "1 Gbit"
-    Selection 0x1 , "2 Gbit"
-    Selection 0x2 , "4 Gbit"
-    Selection 0x3 , "8 Gbit"
-EndList
-
-List &DIMMBUSWIDTH
-    Selection 0x0 , "8 bits"
-    Selection 0x1 , "16 bits"
-    Selection 0x2 , "32 bits"
-    Selection 0x3 , "64 bits"
-EndList
-
-List &RANKPERDIMM
-    Selection 0x1 , "2 Ranks"
-    Selection 0x0 , "1 Rank"
-EndList
-
-List &SATA_MODE
-    Selection 0x1 , "AHCI"
-    Selection 0x0 , "IDE"
-EndList
-
-List &EMMC_MODES
-    Selection 0x0 , "Disabled"
-    Selection 0x1 , "Auto"
-    Selection 0x2 , "eMMC 4.1"
-    Selection 0x3 , "eMMC 4.5"
-EndList
-
-List &EN_DIS
-    Selection 0x1 , "Enabled"
-    Selection 0x0 , "Disabled"
-EndList
-
-List &EN_DIS_AUTO
-    Selection 0x2 , "Auto"
-    Selection 0x1 , "Enabled"
-    Selection 0x0 , "Disabled"
-EndList
-
-List &MMIO_SIZES
-    Selection 0x400, "1.0 GB"
-    Selection 0x600, "1.5 GB"
-    Selection 0x800, "2.0 GB"
-EndList
-
-List &TSEG_SIZES
-    Selection 0x01, "1 MB"
-    Selection 0x02, "2 MB"
-    Selection 0x04, "4 MB"
-    Selection 0x08, "8 MB"
-EndList
-
-List &IGDPREALLOC_SIZES
-    Selection 0x01, "32 MB"
-    Selection 0x02, "64 MB"
-    Selection 0x03, "96 MB"
-    Selection 0x04, "128 MB"
-    Selection 0x05, "160 MB"
-    Selection 0x06, "192 MB"
-    Selection 0x07, "224 MB"
-    Selection 0x08, "256 MB"
-    Selection 0x09, "288 MB"
-    Selection 0x0A, "320 MB"
-    Selection 0x0B, "352 MB"
-    Selection 0x0C, "384 MB"
-    Selection 0x0D, "416 MB"
-    Selection 0x0E, "448 MB"
-    Selection 0x0F, "480 MB"
-    Selection 0x10, "512 MB"
-EndList
-
-List &APERTURE_SIZES
-    Selection 0x1 , "128 MB"
-    Selection 0x2 , "256 MB"
-    Selection 0x3 , "512 MB"
-EndList
-
-List &GTT_SIZES
-    Selection 0x1 , "1 MB"
-    Selection 0x2 , "2 MB"
-EndList
-
-List &PCI_ACPI
-    Selection 0x2 , "ACPI Mode"
-    Selection 0x1 , "PCI Mode"
-    Selection 0x0 , "Disabled"
-EndList
-
-List &PLATFORM_TYPE
-    Selection 0x2 , "BayleyBay Platform Type"
-    Selection 0x3 , "BakerSport Platform (ECC) Type"
-EndList
-
-BeginInfoBlock
-  PPVer "1.0"
-  Description "MinnowMax"
-
-EndInfoBlock
-
-Page "Platform"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdPlatformType, "Platform Type", &PLATFORM_TYPE,
-                Help "Select Platform Type."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSecureBoot, "Enable Secure Boot", &EN_DIS_AUTO,
-                Help "Enable/disable secure boot. Auto by default."
-EndPage
-
-Page "North Complex"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitTsegSize, "Tseg Size", &TSEG_SIZES,
-				Help "Size of memory reserved for SMRAM, in MB."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitMmioSize, "Mmio Size", &MMIO_SIZES,
-                Help "Size of memory address space reserved for MMIO (Memory Mapped I/O), in GB."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdIgdDvmt50PreAlloc, "Internal Graphics Pre-allocated Memory ", &IGDPREALLOC_SIZES,
-                Help "Size of memory preallocated for internal graphics"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdApertureSize, "Aperture Size", &APERTURE_SIZES,
-                Help "Select the Aperture Size"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdGttSize, "GTT Size", &GTT_SIZES,
-                Help "Select the GTT Size"
-    EditNum $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr1, "DIMM 0 SPD SMBus Address", HEX,
-                Help "Address of DIMM 0. 8 bits"
-    EditNum $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr2, "DIMM 1 SPD SMBus Address", HEX,
-                Help "Address of DIMM 1. 8 bits"
-EndPage
-
-Page "Memory Down"
-    Combo $DIMM_MemDown, "Enable Memory Down", &EN_DIS,
-                Help "Enable = Memory Down, Disable = DIMM"
-    Combo $DRAM_Speed, "DRAM Speed", &DRAMSPEED,
-                Help "DRAM Speed"
-    Combo $DRAM_Type, "DRAM Type", &DRAMTYPE,
-                Help "DRAM Type"
-    Combo $Rank_En_0_0, "DIMM 0 Enable", &EN_DIS,
-                Help "Please populate DIMM slot 0 if only one DIMM is supported."
-    Combo $Rank_En_1_0, "DIMM 1 Enable", &EN_DIS,
-                Help "DIMM 1 has to be identical to DIMM 0."
-    Combo $DIMM_DWidth_0_0, "DIMM_DWidth", &DIMMDWIDTH,
-                Help "DRAM device data width."
-    Combo $DIMM_Density_0_0, "DIMM_Density", &DIMMDENSITY,
-                Help "DRAM device data density."
-    Combo $DIMM_BusWidth_0_0, "DIMM_BusWidth", &DIMMBUSWIDTH,
-                Help "DIMM Bus Width."
-    Combo $DIMM_Sides_0_0, "DIMM_Sides", &RANKPERDIMM,
-                Help "Ranks Per DIMM. "
-    EditNum $tCL, "tCL", DEC,
-                Help "tCL"
-    EditNum $tRP_tRCD, "tRP_tRCD", DEC,
-                Help "tRP and tRCD in DRAM clk - 5:12.5ns, 6:15ns, etc."
-    EditNum $tWR, "tWR", DEC,
-                Help "tWR in DRAM clk"
-    EditNum $tWTR, "tWTR", DEC,
-                Help "tWTR in DRAM clk"
-    EditNum $tRRD, "tRRD", DEC,
-                Help "tRRD in DRAM clk"
-    EditNum $tRTP, "tRTP", DEC,
-                Help "tRTP in DRAM clk"
-    EditNum $tFAW, "tFAW", DEC,
-                Help "tFAW in DRAM clk"
-EndPage
-
-Page "South Complex"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdSataMode, "Select SATA Mode", &SATA_MODE,
-                Help "Select SATA boot mode. AHCI by default."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableXhci, "Enable XHCI", &EN_DIS,
-                Help "Enable/disable XHCI. If enabled, all EHCI ports will be routed to XHCI and EHCI will be disabled."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdeMMCBootMode, "eMMC Boot Mode", &EMMC_MODES,
-                Help "Select EMMC Mode."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdio, "Enable SDIO", &EN_DIS,
-                Help "Enable/disable SDIO."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdcard, "Enable SD Card", &EN_DIS,
-                Help "Enable/disable the SD Card."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart0, "Enable HSUART0", &EN_DIS,
-                Help "Enable/disable HSUART0."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart1, "Enable HSUART1", &EN_DIS,
-                Help "Enable/disable HSUART1."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSpi, "Enable SPI", &EN_DIS,
-                Help "Enable/disable SPI."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableLan, "Enable LAN", &EN_DIS,
-                Help "Enable/disable LAN."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableAzalia, "Enable Azalia", &EN_DIS_AUTO,
-                Help "Enable/disable Azalia. Auto by default."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSata, "Enable SATA", &EN_DIS,
-                Help "Enable/disable SATA."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableLpe, "Enable LPE", &PCI_ACPI,
-                Help "Choose LPE Mode"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdLpssSioEnablePciMode, "Enable PCI mode for LPSS SIO devices", &EN_DIS,
-                Help "Enable PCI Mode for LPSS SIO devices. If disabled, LPSS SIO devices will run in ACPI mode."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma0, "Enable DMA0", &EN_DIS,
-                Help "Enable/disable DMA0"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma1, "Enable DMA1", &EN_DIS,
-                Help "Enable/disable DMA1"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C0, "Enable I2C0", &EN_DIS,
-                Help "Enable/disable I2C0"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C1, "Enable I2C1", &EN_DIS,
-                Help "Enable/disable I2C1"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C2, "Enable I2C2", &EN_DIS,
-                Help "Enable/disable I2C2"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C3, "Enable I2C3", &EN_DIS,
-                Help "Enable/disable I2C3"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C4, "Enable I2C4", &EN_DIS,
-                Help "Enable/disable I2C4"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C5, "Enable I2C5", &EN_DIS,
-                Help "Enable/disable I2C5"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C6, "Enable I2C6", &EN_DIS,
-                Help "Enable/disable I2C6"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm0, "Enable PWM0", &EN_DIS,
-                Help "Enable/disable PWM0"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm1, "Enable PWM1", &EN_DIS,
-                Help "Enable/disable PWM1"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsi, "Enable HSI", &EN_DIS,
-                Help "Enable/disable HSI"
-    Combo $gPlatformFspPkgTokenSpaceGuid_ISPEnable, "Enable ISP", &EN_DIS,
-                Help "Enable/disable ISP."
-EndPage
diff --git a/src/vendorcode/intel/fsp/baytrail/absf/minnowmax_2gb.absf b/src/vendorcode/intel/fsp/baytrail/absf/minnowmax_2gb.absf
deleted file mode 100644
index 6992fe7..0000000
--- a/src/vendorcode/intel/fsp/baytrail/absf/minnowmax_2gb.absf
+++ /dev/null
@@ -1,328 +0,0 @@
-//
-// This file contains an 'Intel Peripheral Driver' and is
-// licensed for Intel CPUs and chipsets under the terms of your
-// license agreement with Intel or your vendor.  This file must not
-// be modified by end users or could render the generated boot loader
-// inoperable.
-//
-// @file
-// Boot Setting File for Platform: Bayley Bay Platform
-//
-// Copyright (c) 2010-2013 Intel Corporation. All rights reserved
-// This software and associated documentation (if any) is furnished
-// under a license and may only be used or copied in accordance
-// with the terms of the license. Except as permitted by such
-// license, no part of this software or documentation may be
-// reproduced, stored in a retrieval system, or transmitted in any
-// form or by any means without the express written consent of
-// Intel Corporation.
-//
-//
-
-
-GlobalDataDef
-  SKUID = 0 $_AS_BUILT_ = 0x01 , "DEFAULT"
-EndGlobalData
-
-StructDef
-
-    Find "VLV2UPDR"
-    Skip 24 bytes
-    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitTsegSize        2 bytes $_AS_BUILT_ = 0x1, 0x0 $_DEFAULT_ = 0x0001
-    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitMmioSize        2 bytes $_AS_BUILT_ = 0x0, 0x8 $_DEFAULT_ = 0x0800
-    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr1        1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0xA0
-    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr2        1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0xA2
-    $gPlatformFspPkgTokenSpaceGuid_PcdeMMCBootMode           1 byte $_AS_BUILT_ = 0x3 $_DEFAULT_  = 2
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdio             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdcard           1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart0          1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart1          1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSpi              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableLan              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSata             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdSataMode               1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableAzalia           1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0
-    $gPlatformFspPkgTokenSpaceGuid_AzaliaConfigPtr           4 bytes $_AS_BUILT_ = 0x0, 0x0, 0x0, 0x0 $_DEFAULT_  = 0
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableXhci             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableLpe              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdLpssSioEnablePciMode   1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma0             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma1             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C0             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C1             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C2             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C3             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C4             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C5             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C6             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm0             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm1             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsi              1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0
-    $gPlatformFspPkgTokenSpaceGuid_PcdIgdDvmt50PreAlloc      1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
-    $gPlatformFspPkgTokenSpaceGuid_PcdApertureSize           1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
-    $gPlatformFspPkgTokenSpaceGuid_PcdGttSize                1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
-    $gPlatformFspPkgTokenSpaceGuid_ISPEnable                 1 bytes $_AS_BUILT_ = 0x0 $_DEFAULT_ = 0
-
-    Find "VLYVIEW1"
-    $gPlatformFspPkgTokenSpaceGuid_PcdImageRevision          4 bytes $_AS_BUILT_ = 0x2, 0x3, 0x0, 0x0 $_DEFAULT_ = 0x00000302
-    Skip 24 bytes
-    $gPlatformFspPkgTokenSpaceGuid_PcdPlatformType           1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
-    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSecureBoot       1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 2
-
-    $DIMM_MemDown             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 0
-    $DRAM_Speed               1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 2
-    $DRAM_Type                1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 1
-    $Rank_En_0_0              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 1
-    $Rank_En_1_0              1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_ = 0
-    $DIMM_DWidth_0_0          1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 0
-    $DIMM_Density_0_0         1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_ = 1
-    $DIMM_BusWidth_0_0        1 byte $_AS_BUILT_ = 0x3 $_DEFAULT_ = 3
-    $DIMM_Sides_0_0           1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_ = 0
-    $tCL                      1 byte $_AS_BUILT_ = 0x7 $_DEFAULT_ = 9
-    $tRP_tRCD                 1 byte $_AS_BUILT_ = 0x7 $_DEFAULT_ = 9
-    $tWR                      1 byte $_AS_BUILT_ = 0x8 $_DEFAULT_ = 10
-    $tWTR                     1 byte $_AS_BUILT_ = 0x4 $_DEFAULT_ = 5
-    $tRRD                     1 byte $_AS_BUILT_ = 0x6 $_DEFAULT_ = 4
-    $tRTP                     1 byte $_AS_BUILT_ = 0x4 $_DEFAULT_ = 5
-    $tFAW                     1 byte $_AS_BUILT_ = 0x14 $_DEFAULT_ = 20
-
-EndStruct
-
-List &DRAMSPEED
-    Selection 0x0 , "800 MHz"
-    Selection 0x1 , "1066 MHz"
-    Selection 0x2 , "1333 MHz"
-    Selection 0x3 , "1600 MHz"
-EndList
-
-List &DRAMTYPE
-    Selection 0x0 , "DDR3"
-    Selection 0x1 , "DDR3L"
-    Selection 0x2 , "DDR3U"
-    //Selection 0x3 , "LPDDR2"
-    Selection 0x4 , "LPDDR2"
-    Selection 0x5 , "LPDDR3"
-    Selection 0x6 , "DDR4"
-EndList
-
-List &DIMMDWIDTH
-    Selection 0x0 , "x8"
-    Selection 0x1 , "x16"
-    Selection 0x2 , "x32"
-EndList
-
-List &DIMMDENSITY
-    Selection 0x0 , "1 Gbit"
-    Selection 0x1 , "2 Gbit"
-    Selection 0x2 , "4 Gbit"
-    Selection 0x3 , "8 Gbit"
-EndList
-
-List &DIMMBUSWIDTH
-    Selection 0x0 , "8 bits"
-    Selection 0x1 , "16 bits"
-    Selection 0x2 , "32 bits"
-    Selection 0x3 , "64 bits"
-EndList
-
-List &RANKPERDIMM
-    Selection 0x1 , "2 Ranks"
-    Selection 0x0 , "1 Rank"
-EndList
-
-List &SATA_MODE
-    Selection 0x1 , "AHCI"
-    Selection 0x0 , "IDE"
-EndList
-
-List &EMMC_MODES
-    Selection 0x0 , "Disabled"
-    Selection 0x1 , "Auto"
-    Selection 0x2 , "eMMC 4.1"
-    Selection 0x3 , "eMMC 4.5"
-EndList
-
-List &EN_DIS
-    Selection 0x1 , "Enabled"
-    Selection 0x0 , "Disabled"
-EndList
-
-List &EN_DIS_AUTO
-    Selection 0x2 , "Auto"
-    Selection 0x1 , "Enabled"
-    Selection 0x0 , "Disabled"
-EndList
-
-List &MMIO_SIZES
-    Selection 0x400, "1.0 GB"
-    Selection 0x600, "1.5 GB"
-    Selection 0x800, "2.0 GB"
-EndList
-
-List &TSEG_SIZES
-    Selection 0x01, "1 MB"
-    Selection 0x02, "2 MB"
-    Selection 0x04, "4 MB"
-    Selection 0x08, "8 MB"
-EndList
-
-List &IGDPREALLOC_SIZES
-    Selection 0x01, "32 MB"
-    Selection 0x02, "64 MB"
-    Selection 0x03, "96 MB"
-    Selection 0x04, "128 MB"
-    Selection 0x05, "160 MB"
-    Selection 0x06, "192 MB"
-    Selection 0x07, "224 MB"
-    Selection 0x08, "256 MB"
-    Selection 0x09, "288 MB"
-    Selection 0x0A, "320 MB"
-    Selection 0x0B, "352 MB"
-    Selection 0x0C, "384 MB"
-    Selection 0x0D, "416 MB"
-    Selection 0x0E, "448 MB"
-    Selection 0x0F, "480 MB"
-    Selection 0x10, "512 MB"
-EndList
-
-List &APERTURE_SIZES
-    Selection 0x1 , "128 MB"
-    Selection 0x2 , "256 MB"
-    Selection 0x3 , "512 MB"
-EndList
-
-List &GTT_SIZES
-    Selection 0x1 , "1 MB"
-    Selection 0x2 , "2 MB"
-EndList
-
-List &PCI_ACPI
-    Selection 0x2 , "ACPI Mode"
-    Selection 0x1 , "PCI Mode"
-    Selection 0x0 , "Disabled"
-EndList
-
-List &PLATFORM_TYPE
-    Selection 0x2 , "BayleyBay Platform Type"
-    Selection 0x3 , "BakerSport Platform (ECC) Type"
-EndList
-
-BeginInfoBlock
-  PPVer "1.0"
-  Description "MinnowMax"
-
-EndInfoBlock
-
-Page "Platform"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdPlatformType, "Platform Type", &PLATFORM_TYPE,
-                Help "Select Platform Type."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSecureBoot, "Enable Secure Boot", &EN_DIS_AUTO,
-                Help "Enable/disable secure boot. Auto by default."
-EndPage
-
-Page "North Complex"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitTsegSize, "Tseg Size", &TSEG_SIZES,
-				Help "Size of memory reserved for SMRAM, in MB."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitMmioSize, "Mmio Size", &MMIO_SIZES,
-                Help "Size of memory address space reserved for MMIO (Memory Mapped I/O), in GB."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdIgdDvmt50PreAlloc, "Internal Graphics Pre-allocated Memory ", &IGDPREALLOC_SIZES,
-                Help "Size of memory preallocated for internal graphics"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdApertureSize, "Aperture Size", &APERTURE_SIZES,
-                Help "Select the Aperture Size"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdGttSize, "GTT Size", &GTT_SIZES,
-                Help "Select the GTT Size"
-    EditNum $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr1, "DIMM 0 SPD SMBus Address", HEX,
-                Help "Address of DIMM 0. 8 bits"
-    EditNum $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr2, "DIMM 1 SPD SMBus Address", HEX,
-                Help "Address of DIMM 1. 8 bits"
-EndPage
-
-Page "Memory Down"
-    Combo $DIMM_MemDown, "Enable Memory Down", &EN_DIS,
-                Help "Enable = Memory Down, Disable = DIMM"
-    Combo $DRAM_Speed, "DRAM Speed", &DRAMSPEED,
-                Help "DRAM Speed"
-    Combo $DRAM_Type, "DRAM Type", &DRAMTYPE,
-                Help "DRAM Type"
-    Combo $Rank_En_0_0, "DIMM 0 Enable", &EN_DIS,
-                Help "Please populate DIMM slot 0 if only one DIMM is supported."
-    Combo $Rank_En_1_0, "DIMM 1 Enable", &EN_DIS,
-                Help "DIMM 1 has to be identical to DIMM 0."
-    Combo $DIMM_DWidth_0_0, "DIMM_DWidth", &DIMMDWIDTH,
-                Help "DRAM device data width."
-    Combo $DIMM_Density_0_0, "DIMM_Density", &DIMMDENSITY,
-                Help "DRAM device data density."
-    Combo $DIMM_BusWidth_0_0, "DIMM_BusWidth", &DIMMBUSWIDTH,
-                Help "DIMM Bus Width."
-    Combo $DIMM_Sides_0_0, "DIMM_Sides", &RANKPERDIMM,
-                Help "Ranks Per DIMM. "
-    EditNum $tCL, "tCL", DEC,
-                Help "tCL"
-    EditNum $tRP_tRCD, "tRP_tRCD", DEC,
-                Help "tRP and tRCD in DRAM clk - 5:12.5ns, 6:15ns, etc."
-    EditNum $tWR, "tWR", DEC,
-                Help "tWR in DRAM clk"
-    EditNum $tWTR, "tWTR", DEC,
-                Help "tWTR in DRAM clk"
-    EditNum $tRRD, "tRRD", DEC,
-                Help "tRRD in DRAM clk"
-    EditNum $tRTP, "tRTP", DEC,
-                Help "tRTP in DRAM clk"
-    EditNum $tFAW, "tFAW", DEC,
-                Help "tFAW in DRAM clk"
-EndPage
-
-Page "South Complex"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdSataMode, "Select SATA Mode", &SATA_MODE,
-                Help "Select SATA boot mode. AHCI by default."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableXhci, "Enable XHCI", &EN_DIS,
-                Help "Enable/disable XHCI. If enabled, all EHCI ports will be routed to XHCI and EHCI will be disabled."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdeMMCBootMode, "eMMC Boot Mode", &EMMC_MODES,
-                Help "Select EMMC Mode."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdio, "Enable SDIO", &EN_DIS,
-                Help "Enable/disable SDIO."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdcard, "Enable SD Card", &EN_DIS,
-                Help "Enable/disable the SD Card."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart0, "Enable HSUART0", &EN_DIS,
-                Help "Enable/disable HSUART0."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart1, "Enable HSUART1", &EN_DIS,
-                Help "Enable/disable HSUART1."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSpi, "Enable SPI", &EN_DIS,
-                Help "Enable/disable SPI."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableLan, "Enable LAN", &EN_DIS,
-                Help "Enable/disable LAN."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableAzalia, "Enable Azalia", &EN_DIS_AUTO,
-                Help "Enable/disable Azalia. Auto by default."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSata, "Enable SATA", &EN_DIS,
-                Help "Enable/disable SATA."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableLpe, "Enable LPE", &PCI_ACPI,
-                Help "Choose LPE Mode"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdLpssSioEnablePciMode, "Enable PCI mode for LPSS SIO devices", &EN_DIS,
-                Help "Enable PCI Mode for LPSS SIO devices. If disabled, LPSS SIO devices will run in ACPI mode."
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma0, "Enable DMA0", &EN_DIS,
-                Help "Enable/disable DMA0"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma1, "Enable DMA1", &EN_DIS,
-                Help "Enable/disable DMA1"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C0, "Enable I2C0", &EN_DIS,
-                Help "Enable/disable I2C0"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C1, "Enable I2C1", &EN_DIS,
-                Help "Enable/disable I2C1"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C2, "Enable I2C2", &EN_DIS,
-                Help "Enable/disable I2C2"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C3, "Enable I2C3", &EN_DIS,
-                Help "Enable/disable I2C3"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C4, "Enable I2C4", &EN_DIS,
-                Help "Enable/disable I2C4"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C5, "Enable I2C5", &EN_DIS,
-                Help "Enable/disable I2C5"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C6, "Enable I2C6", &EN_DIS,
-                Help "Enable/disable I2C6"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm0, "Enable PWM0", &EN_DIS,
-                Help "Enable/disable PWM0"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm1, "Enable PWM1", &EN_DIS,
-                Help "Enable/disable PWM1"
-    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsi, "Enable HSI", &EN_DIS,
-                Help "Enable/disable HSI"
-    Combo $gPlatformFspPkgTokenSpaceGuid_ISPEnable, "Enable ISP", &EN_DIS,
-                Help "Enable/disable ISP."
-EndPage
diff --git a/src/vendorcode/intel/fsp/baytrail/include/azalia.h b/src/vendorcode/intel/fsp/baytrail/include/azalia.h
deleted file mode 100644
index c58cf4c..0000000
--- a/src/vendorcode/intel/fsp/baytrail/include/azalia.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/**@file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef _AZALIA_H_
-#define _AZALIA_H_
-
-#include <stdint.h>
-
-#pragma pack(1)
-
-typedef struct {
-  uint32_t  VendorDeviceId;
-  uint16_t  SubSystemId;
-  uint8_t   RevisionId;                       /// 0xFF applies to all steppings
-  uint8_t   FrontPanelSupport;
-  uint16_t  NumberOfRearJacks;
-  uint16_t  NumberOfFrontJacks;
-} PCH_AZALIA_VERB_TABLE_HEADER;
-
-typedef struct {
-  PCH_AZALIA_VERB_TABLE_HEADER  VerbTableHeader;
-  uint32_t                        *VerbTableData;
-} PCH_AZALIA_VERB_TABLE;
-
-typedef struct {
-  uint8_t                 Pme       : 1;      /// 0: Disable; 1: Enable
-  uint8_t                 DS        : 1;      /// 0: Docking is not supported; 1:Docking is supported
-  uint8_t                 DA        : 1;      /// 0: Docking is not attached; 1:Docking is attached
-  uint8_t                 HdmiCodec : 1;      /// 0: Disable; 1: Enable
-  uint8_t                 AzaliaVCi : 1;      /// 0: Disable; 1: Enable
-  uint8_t                 Rsvdbits  : 3;
-  uint8_t                 AzaliaVerbTableNum; /// Number of verb tables provided by platform
-  PCH_AZALIA_VERB_TABLE  *AzaliaVerbTable;   /// Pointer to the actual verb table(s)
-  uint16_t                ResetWaitTimer;     /// The delay timer after Azalia reset, the value is number of microseconds
-} PCH_AZALIA_CONFIG;
-
-#pragma pack()
-
-#endif
diff --git a/src/vendorcode/intel/fsp/baytrail/include/fsp.h b/src/vendorcode/intel/fsp/baytrail/include/fsp.h
deleted file mode 100644
index f2e1d8f..0000000
--- a/src/vendorcode/intel/fsp/baytrail/include/fsp.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-/** \file  fsp.h
- *
- *
- */
-#include <stdint.h>
-#include "fsptypes.h"
-#include "fspfv.h"
-#include "fspffs.h"
-#include "fsphob.h"
-#include "fspapi.h"
-#include "fspplatform.h"
-#include "fspinfoheader.h"
-#include "fspvpd.h"
-
-#define FSP_HOB_RESOURCE_OWNER_FSP_GUID \
-{ 0x69a79759, 0x1373, 0x4367, { 0xa6, 0xc4, 0xc7, 0xf5, 0x9e, 0xfd, 0x98, 0x6e } }
-#define FSP_NON_VOLATILE_STORAGE_HOB_GUID \
-{ 0x721acf02, 0x4d77, 0x4c2a, { 0xb3, 0xdc, 0x27, 0xb, 0x7b, 0xa9, 0xe4, 0xb0 } }
-#define FSP_HOB_RESOURCE_OWNER_TSEG_GUID \
-{ 0xd038747c, 0xd00c, 0x4980, { 0xb3, 0x19, 0x49, 0x01, 0x99, 0xa4, 0x7d, 0x55 } }
-#define FSP_HOB_RESOURCE_OWNER_GRAPHICS_GUID \
-{ 0x9c7c3aa7, 0x5332, 0x4917, { 0x82, 0xb9, 0x56, 0xa5, 0xf3, 0xe6, 0x2a, 0x07 } }
-#define FSP_BOOTLOADER_TEMPORARY_MEMORY_HOB_GUID \
-{ 0xbbcff46c, 0xc8d3, 0x4113, { 0x89, 0x85, 0xb9, 0xd4, 0xf3, 0xb3, 0xf6, 0x4e } }
-
-//
-// 0x21 - 0xf..f are reserved.
-//
-#define BOOT_WITH_FULL_CONFIGURATION                  0x00
-#define BOOT_WITH_MINIMAL_CONFIGURATION               0x01
-#define BOOT_ASSUMING_NO_CONFIGURATION_CHANGES        0x02
-#define BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS 0x03
-#define BOOT_WITH_DEFAULT_SETTINGS                    0x04
-#define BOOT_ON_S4_RESUME                             0x05
-#define BOOT_ON_S5_RESUME                             0x06
-#define BOOT_ON_S2_RESUME                             0x10
-#define BOOT_ON_S3_RESUME                             0x11
-#define BOOT_ON_FLASH_UPDATE                          0x12
-#define BOOT_IN_RECOVERY_MODE                         0x20
diff --git a/src/vendorcode/intel/fsp/baytrail/include/fspapi.h b/src/vendorcode/intel/fsp/baytrail/include/fspapi.h
deleted file mode 100644
index 26afc0e..0000000
--- a/src/vendorcode/intel/fsp/baytrail/include/fspapi.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef _FSP_API_H_
-#define _FSP_API_H_
-
-#pragma pack(1)
-
-typedef VOID (* CONTINUATION_PROC)(EFI_STATUS Status, VOID *HobListPtr);
-
-typedef struct {
-  VOID               *NvsBufferPtr;
-  VOID               *RtBufferPtr;
-  CONTINUATION_PROC   ContinuationFunc;
-} FSP_INIT_PARAMS;
-
-typedef struct {
-  UINT32            *StackTop;
-  UINT32             BootMode;
-  VOID              *UpdDataRgnPtr;
-  UINT32             Reserved[7];
-} FSP_INIT_RT_COMMON_BUFFER;
-
-typedef enum {
-  EnumInitPhaseAfterPciEnumeration = 0x20,
-  EnumInitPhaseReadyToBoot = 0x40
-} FSP_INIT_PHASE;
-
-typedef struct {
-  FSP_INIT_PHASE     Phase;
-} NOTIFY_PHASE_PARAMS;
-
-#pragma pack()
-
-typedef FSP_STATUS (FSPAPI *FSP_FSP_INIT)    (FSP_INIT_PARAMS     *FspInitParamPtr);
-typedef FSP_STATUS (FSPAPI *FSP_NOTFY_PHASE) (NOTIFY_PHASE_PARAMS *NotifyPhaseParamPtr);
-
-#endif
diff --git a/src/vendorcode/intel/fsp/baytrail/include/fspffs.h b/src/vendorcode/intel/fsp/baytrail/include/fspffs.h
deleted file mode 100644
index f3b83b2..0000000
--- a/src/vendorcode/intel/fsp/baytrail/include/fspffs.h
+++ /dev/null
@@ -1,506 +0,0 @@
-/**
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-
-#ifndef __PI_FIRMWARE_FILE_H__
-#define __PI_FIRMWARE_FILE_H__
-
-#pragma pack(1)
-///
-/// Used to verify the integrity of the file.
-///
-typedef union {
-  struct {
-    ///
-    /// The IntegrityCheck.Checksum.Header field is an 8-bit checksum of the file
-    /// header. The State and IntegrityCheck.Checksum.File fields are assumed
-    /// to be zero and the checksum is calculated such that the entire header sums to zero.
-    ///
-    UINT8   Header;
-    ///
-    /// If the FFS_ATTRIB_CHECKSUM (see definition below) bit of the Attributes
-    /// field is set to one, the IntegrityCheck.Checksum.File field is an 8-bit
-    /// checksum of the file data.
-    /// If the FFS_ATTRIB_CHECKSUM bit of the Attributes field is cleared to zero,
-    /// the IntegrityCheck.Checksum.File field must be initialized with a value of
-    /// 0xAA. The IntegrityCheck.Checksum.File field is valid any time the
-    /// EFI_FILE_DATA_VALID bit is set in the State field.
-    ///
-    UINT8   File;
-  } Checksum;
-  ///
-  /// This is the full 16 bits of the IntegrityCheck field.
-  ///
-  UINT16    Checksum16;
-} EFI_FFS_INTEGRITY_CHECK;
-
-///
-/// FFS_FIXED_CHECKSUM is the checksum value used when the
-/// FFS_ATTRIB_CHECKSUM attribute bit is clear.
-///
-#define FFS_FIXED_CHECKSUM  0xAA
-
-typedef UINT8 EFI_FV_FILETYPE;
-typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
-typedef UINT8 EFI_FFS_FILE_STATE;
-
-///
-/// File Types Definitions
-///
-#define EFI_FV_FILETYPE_ALL                   0x00
-#define EFI_FV_FILETYPE_RAW                   0x01
-#define EFI_FV_FILETYPE_FREEFORM              0x02
-#define EFI_FV_FILETYPE_SECURITY_CORE         0x03
-#define EFI_FV_FILETYPE_PEI_CORE              0x04
-#define EFI_FV_FILETYPE_DXE_CORE              0x05
-#define EFI_FV_FILETYPE_PEIM                  0x06
-#define EFI_FV_FILETYPE_DRIVER                0x07
-#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER  0x08
-#define EFI_FV_FILETYPE_APPLICATION           0x09
-#define EFI_FV_FILETYPE_SMM                   0x0A
-#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B
-#define EFI_FV_FILETYPE_COMBINED_SMM_DXE      0x0C
-#define EFI_FV_FILETYPE_SMM_CORE              0x0D
-#define EFI_FV_FILETYPE_OEM_MIN               0xc0
-#define EFI_FV_FILETYPE_OEM_MAX               0xdf
-#define EFI_FV_FILETYPE_DEBUG_MIN             0xe0
-#define EFI_FV_FILETYPE_DEBUG_MAX             0xef
-#define EFI_FV_FILETYPE_FFS_MIN               0xf0
-#define EFI_FV_FILETYPE_FFS_MAX               0xff
-#define EFI_FV_FILETYPE_FFS_PAD               0xf0
-///
-/// FFS File Attributes.
-///
-#define FFS_ATTRIB_LARGE_FILE         0x01
-#define FFS_ATTRIB_FIXED              0x04
-#define FFS_ATTRIB_DATA_ALIGNMENT     0x38
-#define FFS_ATTRIB_CHECKSUM           0x40
-
-///
-/// FFS File State Bits.
-///
-#define EFI_FILE_HEADER_CONSTRUCTION  0x01
-#define EFI_FILE_HEADER_VALID         0x02
-#define EFI_FILE_DATA_VALID           0x04
-#define EFI_FILE_MARKED_FOR_UPDATE    0x08
-#define EFI_FILE_DELETED              0x10
-#define EFI_FILE_HEADER_INVALID       0x20
-
-
-///
-/// Each file begins with the header that describe the
-/// contents and state of the files.
-///
-typedef struct {
-  ///
-  /// This GUID is the file name. It is used to uniquely identify the file.
-  ///
-  EFI_GUID                Name;
-  ///
-  /// Used to verify the integrity of the file.
-  ///
-  EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
-  ///
-  /// Identifies the type of file.
-  ///
-  EFI_FV_FILETYPE         Type;
-  ///
-  /// Declares various file attribute bits.
-  ///
-  EFI_FFS_FILE_ATTRIBUTES Attributes;
-  ///
-  /// The length of the file in bytes, including the FFS header.
-  ///
-  UINT8                   Size[3];
-  ///
-  /// Used to track the state of the file throughout the life of the file from creation to deletion.
-  ///
-  EFI_FFS_FILE_STATE      State;
-} EFI_FFS_FILE_HEADER;
-
-typedef struct {
-  ///
-  /// This GUID is the file name. It is used to uniquely identify the file. There may be only
-  /// one instance of a file with the file name GUID of Name in any given firmware
-  /// volume, except if the file type is EFI_FV_FILETYPE_FFS_PAD.
-  ///
-  EFI_GUID                  Name;
-
-  ///
-  /// Used to verify the integrity of the file.
-  ///
-  EFI_FFS_INTEGRITY_CHECK   IntegrityCheck;
-
-  ///
-  /// Identifies the type of file.
-  ///
-  EFI_FV_FILETYPE           Type;
-
-  ///
-  /// Declares various file attribute bits.
-  ///
-  EFI_FFS_FILE_ATTRIBUTES   Attributes;
-
-  ///
-  /// The length of the file in bytes, including the FFS header.
-  /// The length of the file data is either (Size - sizeof(EFI_FFS_FILE_HEADER)). This calculation means a
-  /// zero-length file has a Size of 24 bytes, which is sizeof(EFI_FFS_FILE_HEADER).
-  /// Size is not required to be a multiple of 8 bytes. Given a file F, the next file header is
-  /// located at the next 8-byte aligned firmware volume offset following the last byte of the file F.
-  ///
-  UINT8                     Size[3];
-
-  ///
-  /// Used to track the state of the file throughout the life of the file from creation to deletion.
-  ///
-  EFI_FFS_FILE_STATE        State;
-
-  ///
-  /// If FFS_ATTRIB_LARGE_FILE is set in Attributes, then ExtendedSize exists and Size must be set to zero.
-  /// If FFS_ATTRIB_LARGE_FILE is not set then EFI_FFS_FILE_HEADER is used.
-  ///
-  UINT32                    ExtendedSize;
-} EFI_FFS_FILE_HEADER2;
-
-#define IS_FFS_FILE2(FfsFileHeaderPtr) \
-    (((((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Attributes) & FFS_ATTRIB_LARGE_FILE) == FFS_ATTRIB_LARGE_FILE)
-
-#define FFS_FILE_SIZE(FfsFileHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Size) & 0x00ffffff))
-
-#define FFS_FILE2_SIZE(FfsFileHeaderPtr) \
-    (((EFI_FFS_FILE_HEADER2 *) (UINTN) FfsFileHeaderPtr)->ExtendedSize)
-
-typedef UINT8 EFI_SECTION_TYPE;
-
-///
-/// Pseudo type. It is used as a wild card when retrieving sections.
-///  The section type EFI_SECTION_ALL matches all section types.
-///
-#define EFI_SECTION_ALL                   0x00
-
-///
-/// Encapsulation section Type values.
-///
-#define EFI_SECTION_COMPRESSION           0x01
-
-#define EFI_SECTION_GUID_DEFINED          0x02
-
-#define EFI_SECTION_DISPOSABLE            0x03
-
-///
-/// Leaf section Type values.
-///
-#define EFI_SECTION_PE32                  0x10
-#define EFI_SECTION_PIC                   0x11
-#define EFI_SECTION_TE                    0x12
-#define EFI_SECTION_DXE_DEPEX             0x13
-#define EFI_SECTION_VERSION               0x14
-#define EFI_SECTION_USER_INTERFACE        0x15
-#define EFI_SECTION_COMPATIBILITY16       0x16
-#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17
-#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18
-#define EFI_SECTION_RAW                   0x19
-#define EFI_SECTION_PEI_DEPEX             0x1B
-#define EFI_SECTION_SMM_DEPEX             0x1C
-
-///
-/// Common section header.
-///
-typedef struct {
-  ///
-  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
-  /// including the EFI_COMMON_SECTION_HEADER.
-  ///
-  UINT8             Size[3];
-  EFI_SECTION_TYPE  Type;
-  ///
-  /// Declares the section type.
-  ///
-} EFI_COMMON_SECTION_HEADER;
-
-typedef struct {
-  ///
-  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
-  /// including the EFI_COMMON_SECTION_HEADER.
-  ///
-  UINT8             Size[3];
-
-  EFI_SECTION_TYPE  Type;
-
-  ///
-  /// If Size is 0xFFFFFF, then ExtendedSize contains the size of the section. If
-  /// Size is not equal to 0xFFFFFF, then this field does not exist.
-  ///
-  UINT32            ExtendedSize;
-} EFI_COMMON_SECTION_HEADER2;
-
-///
-/// Leaf section type that contains an
-/// IA-32 16-bit executable image.
-///
-typedef EFI_COMMON_SECTION_HEADER  EFI_COMPATIBILITY16_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2 EFI_COMPATIBILITY16_SECTION2;
-
-///
-/// CompressionType of EFI_COMPRESSION_SECTION.
-///
-#define EFI_NOT_COMPRESSED        0x00
-#define EFI_STANDARD_COMPRESSION  0x01
-///
-/// An encapsulation section type in which the
-/// section data is compressed.
-///
-typedef struct {
-  ///
-  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
-  ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  ///
-  /// The UINT32 that indicates the size of the section data after decompression.
-  ///
-  UINT32                      UncompressedLength;
-  ///
-  /// Indicates which compression algorithm is used.
-  ///
-  UINT8                       CompressionType;
-} EFI_COMPRESSION_SECTION;
-
-typedef struct {
-  ///
-  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
-  ///
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// UINT32 that indicates the size of the section data after decompression.
-  ///
-  UINT32                        UncompressedLength;
-  ///
-  /// Indicates which compression algorithm is used.
-  ///
-  UINT8                         CompressionType;
-} EFI_COMPRESSION_SECTION2;
-
-///
-/// An encapsulation section type in which the section data is disposable.
-/// A disposable section is an encapsulation section in which the section data may be disposed of during
-/// the process of creating or updating a firmware image without significant impact on the usefulness of
-/// the file. The Type field in the section header is set to EFI_SECTION_DISPOSABLE. This
-/// allows optional or descriptive data to be included with the firmware file which can be removed in
-/// order to conserve space. The contents of this section are implementation specific, but might contain
-/// debug data or detailed integration instructions.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_DISPOSABLE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_DISPOSABLE_SECTION2;
-
-///
-/// The leaf section which could be used to determine the dispatch order of DXEs.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_DXE_DEPEX_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_DXE_DEPEX_SECTION2;
-
-///
-/// The leaf section which contains a PI FV.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_FIRMWARE_VOLUME_IMAGE_SECTION2;
-
-///
-/// The leaf section which contains a single GUID.
-///
-typedef struct {
-  ///
-  /// Common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
-  ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  ///
-  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
-  ///
-  EFI_GUID                    SubTypeGuid;
-} EFI_FREEFORM_SUBTYPE_GUID_SECTION;
-
-typedef struct {
-  ///
-  /// The common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
-  ///
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
-  ///
-  EFI_GUID                      SubTypeGuid;
-} EFI_FREEFORM_SUBTYPE_GUID_SECTION2;
-
-///
-/// Attributes of EFI_GUID_DEFINED_SECTION.
-///
-#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED  0x01
-#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID    0x02
-///
-/// The leaf section which is encapsulation defined by specific GUID.
-///
-typedef struct {
-  ///
-  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
-  ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  ///
-  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
-  ///
-  EFI_GUID                    SectionDefinitionGuid;
-  ///
-  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
-  ///
-  UINT16                      DataOffset;
-  ///
-  /// The bit field that declares some specific characteristics of the section contents.
-  ///
-  UINT16                      Attributes;
-} EFI_GUID_DEFINED_SECTION;
-
-typedef struct {
-  ///
-  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
-  ///
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
-  ///
-  EFI_GUID                      SectionDefinitionGuid;
-  ///
-  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
-  ///
-  UINT16                        DataOffset;
-  ///
-  /// The bit field that declares some specific characteristics of the section contents.
-  ///
-  UINT16                        Attributes;
-} EFI_GUID_DEFINED_SECTION2;
-
-///
-/// The leaf section which contains PE32+ image.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PE32_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PE32_SECTION2;
-
-///
-/// The leaf section used to determine the dispatch order of PEIMs.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PEI_DEPEX_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PEI_DEPEX_SECTION2;
-
-///
-/// A leaf section type that contains a position-independent-code (PIC) image.
-/// A PIC image section is a leaf section that contains a position-independent-code (PIC) image.
-/// In addition to normal PE32+ images that contain relocation information, PEIM executables may be
-/// PIC and are referred to as PIC images. A PIC image is the same as a PE32+ image except that all
-/// relocation information has been stripped from the image and the image can be moved and will
-/// execute correctly without performing any relocation or other fix-ups. EFI_PIC_SECTION2 must
-/// be used if the section is 16MB or larger.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PIC_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PIC_SECTION2;
-
-///
-/// The leaf section which constains the position-independent-code image.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_TE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_TE_SECTION2;
-
-///
-/// The leaf section which contains an array of zero or more bytes.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_RAW_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_RAW_SECTION2;
-
-///
-/// The SMM dependency expression section is a leaf section that contains a dependency expression that
-/// is used to determine the dispatch order for SMM drivers. Before the SMRAM invocation of the
-/// SMM driver's entry point, this dependency expression must evaluate to TRUE. See the Platform
-/// Initialization Specification, Volume 2, for details regarding the format of the dependency expression.
-/// The dependency expression may refer to protocols installed in either the UEFI or the SMM protocol
-/// database. EFI_SMM_DEPEX_SECTION2 must be used if the section is 16MB or larger.
-///
-typedef EFI_COMMON_SECTION_HEADER EFI_SMM_DEPEX_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2 EFI_SMM_DEPEX_SECTION2;
-
-///
-/// The leaf section which contains a unicode string that
-/// is human readable file name.
-///
-typedef struct {
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-
-  ///
-  /// Array of unicode string.
-  ///
-  CHAR16                      FileNameString[1];
-} EFI_USER_INTERFACE_SECTION;
-
-typedef struct {
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  CHAR16                        FileNameString[1];
-} EFI_USER_INTERFACE_SECTION2;
-
-///
-/// The leaf section which contains a numeric build number and
-/// an optional unicode string that represents the file revision.
-///
-typedef struct {
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  UINT16                      BuildNumber;
-
-  ///
-  /// Array of unicode string.
-  ///
-  CHAR16                      VersionString[1];
-} EFI_VERSION_SECTION;
-
-typedef struct {
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// A UINT16 that represents a particular build. Subsequent builds have monotonically
-  /// increasing build numbers relative to earlier builds.
-  ///
-  UINT16                        BuildNumber;
-  CHAR16                        VersionString[1];
-} EFI_VERSION_SECTION2;
-
-#define IS_SECTION2(SectionHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff) == 0x00ffffff)
-
-#define SECTION_SIZE(SectionHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff))
-
-#define SECTION2_SIZE(SectionHeaderPtr) \
-    (((EFI_COMMON_SECTION_HEADER2 *) (UINTN) SectionHeaderPtr)->ExtendedSize)
-
-#pragma pack()
-
-#endif
diff --git a/src/vendorcode/intel/fsp/baytrail/include/fspfv.h b/src/vendorcode/intel/fsp/baytrail/include/fspfv.h
deleted file mode 100644
index 26c00f2..0000000
--- a/src/vendorcode/intel/fsp/baytrail/include/fspfv.h
+++ /dev/null
@@ -1,247 +0,0 @@
-/**
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef __PI_FIRMWAREVOLUME_H__
-#define __PI_FIRMWAREVOLUME_H__
-
-///
-/// EFI_FV_FILE_ATTRIBUTES
-///
-typedef UINT32  EFI_FV_FILE_ATTRIBUTES;
-
-//
-// Value of EFI_FV_FILE_ATTRIBUTES.
-//
-#define EFI_FV_FILE_ATTRIB_ALIGNMENT      0x0000001F
-#define EFI_FV_FILE_ATTRIB_FIXED          0x00000100
-#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED  0x00000200
-
-///
-/// type of EFI FVB attribute
-///
-typedef UINT32  EFI_FVB_ATTRIBUTES_2;
-
-//
-// Attributes bit definitions
-//
-#define EFI_FVB2_READ_DISABLED_CAP  0x00000001
-#define EFI_FVB2_READ_ENABLED_CAP   0x00000002
-#define EFI_FVB2_READ_STATUS        0x00000004
-#define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008
-#define EFI_FVB2_WRITE_ENABLED_CAP  0x00000010
-#define EFI_FVB2_WRITE_STATUS       0x00000020
-#define EFI_FVB2_LOCK_CAP           0x00000040
-#define EFI_FVB2_LOCK_STATUS        0x00000080
-#define EFI_FVB2_STICKY_WRITE       0x00000200
-#define EFI_FVB2_MEMORY_MAPPED      0x00000400
-#define EFI_FVB2_ERASE_POLARITY     0x00000800
-#define EFI_FVB2_READ_LOCK_CAP      0x00001000
-#define EFI_FVB2_READ_LOCK_STATUS   0x00002000
-#define EFI_FVB2_WRITE_LOCK_CAP     0x00004000
-#define EFI_FVB2_WRITE_LOCK_STATUS  0x00008000
-#define EFI_FVB2_ALIGNMENT          0x001F0000
-#define EFI_FVB2_ALIGNMENT_1        0x00000000
-#define EFI_FVB2_ALIGNMENT_2        0x00010000
-#define EFI_FVB2_ALIGNMENT_4        0x00020000
-#define EFI_FVB2_ALIGNMENT_8        0x00030000
-#define EFI_FVB2_ALIGNMENT_16       0x00040000
-#define EFI_FVB2_ALIGNMENT_32       0x00050000
-#define EFI_FVB2_ALIGNMENT_64       0x00060000
-#define EFI_FVB2_ALIGNMENT_128      0x00070000
-#define EFI_FVB2_ALIGNMENT_256      0x00080000
-#define EFI_FVB2_ALIGNMENT_512      0x00090000
-#define EFI_FVB2_ALIGNMENT_1K       0x000A0000
-#define EFI_FVB2_ALIGNMENT_2K       0x000B0000
-#define EFI_FVB2_ALIGNMENT_4K       0x000C0000
-#define EFI_FVB2_ALIGNMENT_8K       0x000D0000
-#define EFI_FVB2_ALIGNMENT_16K      0x000E0000
-#define EFI_FVB2_ALIGNMENT_32K      0x000F0000
-#define EFI_FVB2_ALIGNMENT_64K      0x00100000
-#define EFI_FVB2_ALIGNMENT_128K     0x00110000
-#define EFI_FVB2_ALIGNMENT_256K     0x00120000
-#define EFI_FVB2_ALIGNMENT_512K     0x00130000
-#define EFI_FVB2_ALIGNMENT_1M       0x00140000
-#define EFI_FVB2_ALIGNMENT_2M       0x00150000
-#define EFI_FVB2_ALIGNMENT_4M       0x00160000
-#define EFI_FVB2_ALIGNMENT_8M       0x00170000
-#define EFI_FVB2_ALIGNMENT_16M      0x00180000
-#define EFI_FVB2_ALIGNMENT_32M      0x00190000
-#define EFI_FVB2_ALIGNMENT_64M      0x001A0000
-#define EFI_FVB2_ALIGNMENT_128M     0x001B0000
-#define EFI_FVB2_ALIGNMENT_256M     0x001C0000
-#define EFI_FVB2_ALIGNMENT_512M     0x001D0000
-#define EFI_FVB2_ALIGNMENT_1G       0x001E0000
-#define EFI_FVB2_ALIGNMENT_2G       0x001F0000
-
-
-typedef struct {
-  ///
-  /// The number of sequential blocks which are of the same size.
-  ///
-  UINT32 NumBlocks;
-  ///
-  /// The size of the blocks.
-  ///
-  UINT32 Length;
-} EFI_FV_BLOCK_MAP_ENTRY;
-
-///
-/// Describes the features and layout of the firmware volume.
-///
-typedef struct {
-  ///
-  /// The first 16 bytes are reserved to allow for the reset vector of
-  /// processors whose reset vector is at address 0.
-  ///
-  UINT8                     ZeroVector[16];
-  ///
-  /// Declares the file system with which the firmware volume is formatted.
-  ///
-  EFI_GUID                  FileSystemGuid;
-  ///
-  /// Length in bytes of the complete firmware volume, including the header.
-  ///
-  UINT64                    FvLength;
-  ///
-  /// Set to EFI_FVH_SIGNATURE
-  ///
-  UINT32                    Signature;
-  ///
-  /// Declares capabilities and power-on defaults for the firmware volume.
-  ///
-  EFI_FVB_ATTRIBUTES_2      Attributes;
-  ///
-  /// Length in bytes of the complete firmware volume header.
-  ///
-  UINT16                    HeaderLength;
-  ///
-  /// A 16-bit checksum of the firmware volume header. A valid header sums to zero.
-  ///
-  UINT16                    Checksum;
-  ///
-  /// Offset, relative to the start of the header, of the extended header
-  /// (EFI_FIRMWARE_VOLUME_EXT_HEADER) or zero if there is no extended header.
-  ///
-  UINT16                    ExtHeaderOffset;
-  ///
-  /// This field must always be set to zero.
-  ///
-  UINT8                     Reserved[1];
-  ///
-  /// Set to 2. Future versions of this specification may define new header fields and will
-  /// increment the Revision field accordingly.
-  ///
-  UINT8                     Revision;
-  ///
-  /// An array of run-length encoded FvBlockMapEntry structures. The array is
-  /// terminated with an entry of {0,0}.
-  ///
-  EFI_FV_BLOCK_MAP_ENTRY    BlockMap[1];
-} EFI_FIRMWARE_VOLUME_HEADER;
-
-#define EFI_FVH_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', 'H')
-
-///
-/// Firmware Volume Header Revision definition
-///
-#define EFI_FVH_REVISION  0x02
-
-///
-/// Extension header pointed by ExtHeaderOffset of volume header.
-///
-typedef struct {
-  ///
-  /// Firmware volume name.
-  ///
-  EFI_GUID  FvName;
-  ///
-  /// Size of the rest of the extension header, including this structure.
-  ///
-  UINT32    ExtHeaderSize;
-} EFI_FIRMWARE_VOLUME_EXT_HEADER;
-
-///
-/// Entry struture for describing FV extension header
-///
-typedef struct {
-  ///
-  /// Size of this header extension.
-  ///
-  UINT16    ExtEntrySize;
-  ///
-  /// Type of the header.
-  ///
-  UINT16    ExtEntryType;
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY;
-
-#define EFI_FV_EXT_TYPE_OEM_TYPE  0x01
-///
-/// This extension header provides a mapping between a GUID and an OEM file type.
-///
-typedef struct {
-  ///
-  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
-  ///
-  EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
-  ///
-  /// A bit mask, one bit for each file type between 0xC0 (bit 0) and 0xDF (bit 31). If a bit
-  /// is '1', then the GUID entry exists in Types. If a bit is '0' then no GUID entry exists in Types.
-  ///
-  UINT32    TypeMask;
-  ///
-  /// An array of GUIDs, each GUID representing an OEM file type.
-  ///
-  /// EFI_GUID  Types[1];
-  ///
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;
-
-#define EFI_FV_EXT_TYPE_GUID_TYPE 0x0002
-
-///
-/// This extension header EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE provides a vendor specific
-/// GUID FormatType type which includes a length and a successive series of data bytes.
-///
-typedef struct {
-  ///
-  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
-  ///
-  EFI_FIRMWARE_VOLUME_EXT_ENTRY     Hdr;
-  ///
-  /// Vendor-specific GUID.
-  ///
-  EFI_GUID                          FormatType;
-  ///
-  /// An arry of bytes of length Length.
-  ///
-  /// UINT8                             Data[1];
-  ///
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE;
-
-#endif
diff --git a/src/vendorcode/intel/fsp/baytrail/include/fsphob.h b/src/vendorcode/intel/fsp/baytrail/include/fsphob.h
deleted file mode 100644
index 7edef0d..0000000
--- a/src/vendorcode/intel/fsp/baytrail/include/fsphob.h
+++ /dev/null
@@ -1,542 +0,0 @@
-/**
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef __PI_HOB_H__
-#define __PI_HOB_H__
-
-//
-// HobType of EFI_HOB_GENERIC_HEADER.
-//
-#define EFI_HOB_TYPE_MEMORY_ALLOCATION    0x0002
-#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR  0x0003
-#define EFI_HOB_TYPE_GUID_EXTENSION       0x0004
-#define EFI_HOB_TYPE_UNUSED               0xFFFE
-#define EFI_HOB_TYPE_END_OF_HOB_LIST      0xFFFF
-
-///
-/// Describes the format and size of the data inside the HOB.
-/// All HOBs must contain this generic HOB header.
-///
-typedef struct {
-  ///
-  /// Identifies the HOB data structure type.
-  ///
-  UINT16    HobType;
-  ///
-  /// The length in bytes of the HOB.
-  ///
-  UINT16    HobLength;
-  ///
-  /// This field must always be set to zero.
-  ///
-  UINT32    Reserved;
-} EFI_HOB_GENERIC_HEADER;
-
-///
-/// Enumeration of memory types introduced in UEFI.
-///
-typedef enum {
-  ///
-  /// Not used.
-  ///
-  EfiReservedMemoryType,
-  ///
-  /// The code portions of a loaded application.
-  /// (Note that UEFI OS loaders are UEFI applications.)
-  ///
-  EfiLoaderCode,
-  ///
-  /// The data portions of a loaded application and the default data allocation
-  /// type used by an application to allocate pool memory.
-  ///
-  EfiLoaderData,
-  ///
-  /// The code portions of a loaded Boot Services Driver.
-  ///
-  EfiBootServicesCode,
-  ///
-  /// The data portions of a loaded Boot Serves Driver, and the default data
-  /// allocation type used by a Boot Services Driver to allocate pool memory.
-  ///
-  EfiBootServicesData,
-  ///
-  /// The code portions of a loaded Runtime Services Driver.
-  ///
-  EfiRuntimeServicesCode,
-  ///
-  /// The data portions of a loaded Runtime Services Driver and the default
-  /// data allocation type used by a Runtime Services Driver to allocate pool memory.
-  ///
-  EfiRuntimeServicesData,
-  ///
-  /// Free (unallocated) memory.
-  ///
-  EfiConventionalMemory,
-  ///
-  /// Memory in which errors have been detected.
-  ///
-  EfiUnusableMemory,
-  ///
-  /// Memory that holds the ACPI tables.
-  ///
-  EfiACPIReclaimMemory,
-  ///
-  /// Address space reserved for use by the firmware.
-  ///
-  EfiACPIMemoryNVS,
-  ///
-  /// Used by system firmware to request that a memory-mapped IO region
-  /// be mapped by the OS to a virtual address so it can be accessed by EFI runtime services.
-  ///
-  EfiMemoryMappedIO,
-  ///
-  /// System memory-mapped IO region that is used to translate memory
-  /// cycles to IO cycles by the processor.
-  ///
-  EfiMemoryMappedIOPortSpace,
-  ///
-  /// Address space reserved by the firmware for code that is part of the processor.
-  ///
-  EfiPalCode,
-  EfiMaxMemoryType
-} EFI_MEMORY_TYPE;
-
-///
-/// EFI_HOB_MEMORY_ALLOCATION_HEADER describes the
-/// various attributes of the logical memory allocation. The type field will be used for
-/// subsequent inclusion in the UEFI memory map.
-///
-typedef struct {
-  ///
-  /// A GUID that defines the memory allocation region's type and purpose, as well as
-  /// other fields within the memory allocation HOB. This GUID is used to define the
-  /// additional data within the HOB that may be present for the memory allocation HOB.
-  /// Type EFI_GUID is defined in InstallProtocolInterface() in the UEFI 2.0
-  /// specification.
-  ///
-  EFI_GUID              Name;
-
-  ///
-  /// The base address of memory allocated by this HOB. Type
-  /// EFI_PHYSICAL_ADDRESS is defined in AllocatePages() in the UEFI 2.0
-  /// specification.
-  ///
-  EFI_PHYSICAL_ADDRESS  MemoryBaseAddress;
-
-  ///
-  /// The length in bytes of memory allocated by this HOB.
-  ///
-  UINT64                MemoryLength;
-
-  ///
-  /// Defines the type of memory allocated by this HOB. The memory type definition
-  /// follows the EFI_MEMORY_TYPE definition. Type EFI_MEMORY_TYPE is defined
-  /// in AllocatePages() in the UEFI 2.0 specification.
-  ///
-  EFI_MEMORY_TYPE       MemoryType;
-
-  ///
-  /// Padding for Itanium processor family
-  ///
-  UINT8                 Reserved[4];
-} EFI_HOB_MEMORY_ALLOCATION_HEADER;
-
-///
-/// Describes all memory ranges used during the HOB producer
-/// phase that exist outside the HOB list. This HOB type
-/// describes how memory is used, not the physical attributes of memory.
-///
-typedef struct {
-  ///
-  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
-  ///
-  EFI_HOB_GENERIC_HEADER            Header;
-  ///
-  /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
-  /// various attributes of the logical memory allocation.
-  ///
-  EFI_HOB_MEMORY_ALLOCATION_HEADER  AllocDescriptor;
-  //
-  // Additional data pertaining to the "Name" Guid memory
-  // may go here.
-  //
-} EFI_HOB_MEMORY_ALLOCATION;
-
-///
-/// The resource type.
-///
-typedef UINT32 EFI_RESOURCE_TYPE;
-
-//
-// Value of ResourceType in EFI_HOB_RESOURCE_DESCRIPTOR.
-//
-#define EFI_RESOURCE_SYSTEM_MEMORY          0x00000000
-#define EFI_RESOURCE_MEMORY_MAPPED_IO       0x00000001
-#define EFI_RESOURCE_IO                     0x00000002
-#define EFI_RESOURCE_FIRMWARE_DEVICE        0x00000003
-#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT  0x00000004
-#define EFI_RESOURCE_MEMORY_RESERVED        0x00000005
-#define EFI_RESOURCE_IO_RESERVED            0x00000006
-#define EFI_RESOURCE_MAX_MEMORY_TYPE        0x00000007
-
-///
-/// A type of recount attribute type.
-///
-typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE;
-
-//
-// These types can be ORed together as needed.
-//
-// The first three enumerations describe settings
-//
-#define EFI_RESOURCE_ATTRIBUTE_PRESENT              0x00000001
-#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED          0x00000002
-#define EFI_RESOURCE_ATTRIBUTE_TESTED               0x00000004
-//
-// The rest of the settings describe capabilities
-//
-#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC           0x00000008
-#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC         0x00000010
-#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1           0x00000020
-#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2           0x00000040
-#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED           0x00000080
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED          0x00000100
-#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED      0x00000200
-#define EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE              0x00000400
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE        0x00000800
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE  0x00001000
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE     0x00002000
-#define EFI_RESOURCE_ATTRIBUTE_16_BIT_IO                0x00004000
-#define EFI_RESOURCE_ATTRIBUTE_32_BIT_IO                0x00008000
-#define EFI_RESOURCE_ATTRIBUTE_64_BIT_IO                0x00010000
-#define EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED        0x00020000
-
-///
-/// Describes the resource properties of all fixed,
-/// nonrelocatable resource ranges found on the processor
-/// host bus during the HOB producer phase.
-///
-typedef struct {
-  ///
-  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_RESOURCE_DESCRIPTOR.
-  ///
-  EFI_HOB_GENERIC_HEADER      Header;
-  ///
-  /// A GUID representing the owner of the resource. This GUID is used by HOB
-  /// consumer phase components to correlate device ownership of a resource.
-  ///
-  EFI_GUID                    Owner;
-  ///
-  /// The resource type enumeration as defined by EFI_RESOURCE_TYPE.
-  ///
-  EFI_RESOURCE_TYPE           ResourceType;
-  ///
-  /// Resource attributes as defined by EFI_RESOURCE_ATTRIBUTE_TYPE.
-  ///
-  EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;
-  ///
-  /// The physical start address of the resource region.
-  ///
-  EFI_PHYSICAL_ADDRESS        PhysicalStart;
-  ///
-  /// The number of bytes of the resource region.
-  ///
-  UINT64                      ResourceLength;
-} EFI_HOB_RESOURCE_DESCRIPTOR;
-
-///
-/// Allows writers of executable content in the HOB producer phase to
-/// maintain and manage HOBs with specific GUID.
-///
-typedef struct {
-  ///
-  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_GUID_EXTENSION.
-  ///
-  EFI_HOB_GENERIC_HEADER      Header;
-  ///
-  /// A GUID that defines the contents of this HOB.
-  ///
-  EFI_GUID                    Name;
-  //
-  // Guid specific data goes here
-  //
-} EFI_HOB_GUID_TYPE;
-
-///
-/// Union of all the possible HOB Types.
-///
-typedef union {
-  EFI_HOB_GENERIC_HEADER              *Header;
-  EFI_HOB_MEMORY_ALLOCATION           *MemoryAllocation;
-  EFI_HOB_RESOURCE_DESCRIPTOR         *ResourceDescriptor;
-  EFI_HOB_GUID_TYPE                   *Guid;
-  UINT8                               *Raw;
-} EFI_PEI_HOB_POINTERS;
-
-
-/**
-  Returns the type of a HOB.
-
-  This macro returns the HobType field from the HOB header for the
-  HOB specified by HobStart.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @return HobType.
-
-**/
-#define GET_HOB_TYPE(HobStart) \
-  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobType)
-
-/**
-  Returns the length, in bytes, of a HOB.
-
-  This macro returns the HobLength field from the HOB header for the
-  HOB specified by HobStart.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @return HobLength.
-
-**/
-#define GET_HOB_LENGTH(HobStart) \
-  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobLength)
-
-/**
-  Returns a pointer to the next HOB in the HOB list.
-
-  This macro returns a pointer to HOB that follows the
-  HOB specified by HobStart in the HOB List.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @return A pointer to the next HOB in the HOB list.
-
-**/
-#define GET_NEXT_HOB(HobStart) \
-  (VOID *)(*(UINT8 **)&(HobStart) + GET_HOB_LENGTH (HobStart))
-
-/**
-  Determines if a HOB is the last HOB in the HOB list.
-
-  This macro determine if the HOB specified by HobStart is the
-  last HOB in the HOB list.  If HobStart is last HOB in the HOB list,
-  then TRUE is returned.  Otherwise, FALSE is returned.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @retval TRUE       The HOB specified by HobStart is the last HOB in the HOB list.
-  @retval FALSE      The HOB specified by HobStart is not the last HOB in the HOB list.
-
-**/
-#define END_OF_HOB_LIST(HobStart)  (GET_HOB_TYPE (HobStart) == (UINT16)EFI_HOB_TYPE_END_OF_HOB_LIST)
-
-/**
-  Returns a pointer to data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  This macro returns a pointer to the data buffer in a HOB specified by HobStart.
-  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  @param   GuidHob   A pointer to a HOB.
-
-  @return  A pointer to the data buffer in a HOB.
-
-**/
-#define GET_GUID_HOB_DATA(HobStart) \
-  (VOID *)(*(UINT8 **)&(HobStart) + sizeof (EFI_HOB_GUID_TYPE))
-
-/**
-  Returns the size of the data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  This macro returns the size, in bytes, of the data buffer in a HOB specified by HobStart.
-  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  @param   GuidHob   A pointer to a HOB.
-
-  @return  The size of the data buffer.
-**/
-#define GET_GUID_HOB_DATA_SIZE(HobStart) \
-  (UINT16)(GET_HOB_LENGTH (HobStart) - sizeof (EFI_HOB_GUID_TYPE))
-
-/**
-  Returns the pointer to the HOB list.
-
-  This function returns the pointer to first HOB in the list.
-
-  If the pointer to the HOB list is NULL, then ASSERT().
-
-  @return The pointer to the HOB list.
-
-**/
-VOID *
-EFIAPI
-GetHobList (
-  VOID
-  );
-
-/**
-  Returns the next instance of a HOB type from the starting HOB.
-
-  This function searches the first instance of a HOB type from the starting HOB pointer.
-  If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
-  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
-  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
-  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
-
-  If HobStart is NULL, then ASSERT().
-
-  @param  Type          The HOB type to return.
-  @param  HobStart      The starting HOB pointer to search from.
-
-  @return The next instance of a HOB type from the starting HOB.
-
-**/
-VOID *
-EFIAPI
-GetNextHob (
-  UINT16                 Type,
-  CONST VOID             *HobStart
-  );
-
-/**
-  Returns the first instance of a HOB type among the whole HOB list.
-
-  This function searches the first instance of a HOB type among the whole HOB list.
-  If there does not exist such HOB type in the HOB list, it will return NULL.
-
-  If the pointer to the HOB list is NULL, then ASSERT().
-
-  @param  Type          The HOB type to return.
-
-  @return The next instance of a HOB type from the starting HOB.
-
-**/
-VOID *
-EFIAPI
-GetFirstHob (
-  UINT16                 Type
-  );
-
-/**
-  Returns the next instance of the matched GUID HOB from the starting HOB.
-
-  This function searches the first instance of a HOB from the starting HOB pointer.
-  Such HOB should satisfy two conditions:
-  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
-  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
-  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
-  to extract the data section and its size info respectively.
-  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
-  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
-  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
-
-  If Guid is NULL, then ASSERT().
-  If HobStart is NULL, then ASSERT().
-
-  @param  Guid          The GUID to match with in the HOB list.
-  @param  HobStart      A pointer to a Guid.
-
-  @return The next instance of the matched GUID HOB from the starting HOB.
-
-**/
-VOID *
-EFIAPI
-GetNextGuidHob (
-  CONST EFI_GUID         *Guid,
-  CONST VOID             *HobStart
-  );
-
-/**
-  Returns the first instance of the matched GUID HOB among the whole HOB list.
-
-  This function searches the first instance of a HOB among the whole HOB list.
-  Such HOB should satisfy two conditions:
-  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
-  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
-  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
-  to extract the data section and its size info respectively.
-
-  If the pointer to the HOB list is NULL, then ASSERT().
-  If Guid is NULL, then ASSERT().
-
-  @param  Guid          The GUID to match with in the HOB list.
-
-  @return The first instance of the matched GUID HOB among the whole HOB list.
-
-**/
-VOID *
-EFIAPI
-GetFirstGuidHob (
-  CONST EFI_GUID         *Guid
-  );
-
-/**
-  Compares two GUIDs.
-
-  This function compares Guid1 to Guid2.  If the GUIDs are identical then TRUE is returned.
-  If there are any bit differences in the two GUIDs, then FALSE is returned.
-
-  If Guid1 is NULL, then ASSERT().
-  If Guid2 is NULL, then ASSERT().
-
-  @param  Guid1       A pointer to a 128 bit GUID.
-  @param  Guid2       A pointer to a 128 bit GUID.
-
-  @retval TRUE        Guid1 and Guid2 are identical.
-  @retval FALSE       Guid1 and Guid2 are not identical.
-
-**/
-BOOLEAN
-EFIAPI
-CompareGuid (
-  CONST EFI_GUID  *Guid1,
-  CONST EFI_GUID  *Guid2
-  );
-
-/**
-  Reads a 64-bit value from memory that may be unaligned.
-
-  This function returns the 64-bit value pointed to by Buffer. The function
-  guarantees that the read operation does not produce an alignment fault.
-
-  If the Buffer is NULL, then ASSERT().
-
-  @param  Buffer  Pointer to a 64-bit value that may be unaligned.
-
-  @return The 64-bit value read from Buffer.
-
-**/
-UINT64
-EFIAPI
-ReadUnaligned64 (
-  CONST UINT64              *Buffer
-  );
-
-#endif
diff --git a/src/vendorcode/intel/fsp/baytrail/include/fspinfoheader.h b/src/vendorcode/intel/fsp/baytrail/include/fspinfoheader.h
deleted file mode 100644
index b277bcd..0000000
--- a/src/vendorcode/intel/fsp/baytrail/include/fspinfoheader.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef _FSP_INFO_HEADER_H_
-#define _FSP_INFO_HEADER_H_
-
-#pragma pack(1)
-
-typedef struct  {
-
-  UINT32  Signature;       // Off 0x94
-  UINT32  HeaderLength;
-  UINT8   Reserved1[3];
-  UINT8   HeaderRevision;
-  UINT32  ImageRevision;
-
-  CHAR8   ImageId[8];      // Off 0xA4
-  UINT32  ImageSize;
-  UINT32  ImageBase;
-
-  UINT32  ImageAttribute;  // Off 0xB4
-  UINT32  CfgRegionOffset;
-  UINT32  CfgRegionSize;
-  UINT32  ApiEntryNum;
-
-  UINT32  NemInitEntry;    // Off 0xC4
-  UINT32  FspInitEntry;
-  UINT32  NotifyPhaseEntry;
-  UINT32  Reserved2;
-
-} FSP_INFO_HEADER;
-
-#pragma pack()
-
-#endif
diff --git a/src/vendorcode/intel/fsp/baytrail/include/fspplatform.h b/src/vendorcode/intel/fsp/baytrail/include/fspplatform.h
deleted file mode 100644
index 81f7b66..0000000
--- a/src/vendorcode/intel/fsp/baytrail/include/fspplatform.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef _FSP_PLATFORM_H_
-#define _FSP_PLATFORM_H_
-
-#include "fsptypes.h"
-#include "fspapi.h"
-#include "azalia.h"
-
-#pragma pack(1)
-
-typedef struct {
-  FSP_INIT_RT_COMMON_BUFFER   Common;
-} FSP_INIT_RT_BUFFER;
-
-#pragma pack()
-
-//
-// Function prototypes for board_fsp.c
-//
-void
-GetFspReservedMemoryFromGuid (
-  uint32_t         *FspMemoryBase,
-  uint32_t         *FspMemoryLength,
-  EFI_GUID          FspReservedMemoryGuid
-  );
-
-void
-GetFspNVStorageMemory (
-  void         **FspNVStorageHob,
-  uint16_t     *DataSize
-  );
-
-void
-GetTempRamStack (
-  void         **TempRamStackPtr,
-  uint16_t     *DataSize
-  );
-
-void
-GetHighMemorySize (
-  uint64_t         *HighMemoryLength
-  );
-
-void
-GetLowMemorySize (
-  uint32_t         *LowMemoryLength
-  );
-
-#endif
diff --git a/src/vendorcode/intel/fsp/baytrail/include/fsptypes.h b/src/vendorcode/intel/fsp/baytrail/include/fsptypes.h
deleted file mode 100644
index 4a313ad..0000000
--- a/src/vendorcode/intel/fsp/baytrail/include/fsptypes.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/**
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-/** \file  fsptypes.h
- *
- *
- */
-
-#ifndef __FSP_TYPES_H__
-#define __FSP_TYPES_H__
-
-///
-/// 8-byte unsigned value.
-///
-typedef unsigned long long  UINT64;
-///
-/// 8-byte signed value.
-///
-typedef long long           INT64;
-///
-/// 4-byte unsigned value.
-///
-typedef unsigned int        UINT32;
-///
-/// 4-byte signed value.
-///
-typedef int                 INT32;
-///
-/// 2-byte unsigned value.
-///
-typedef unsigned short      UINT16;
-///
-/// 2-byte Character.  Unless otherwise specified all strings are stored in the
-/// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
-///
-typedef unsigned short      CHAR16;
-///
-/// 2-byte signed value.
-///
-typedef short               INT16;
-///
-/// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
-/// values are undefined.
-///
-typedef unsigned char       BOOLEAN;
-///
-/// 1-byte unsigned value.
-///
-typedef unsigned char       UINT8;
-///
-/// 1-byte Character
-///
-typedef char                CHAR8;
-///
-/// 1-byte signed value
-///
-typedef char                INT8;
-
-typedef void                VOID;
-
-typedef UINT64              EFI_PHYSICAL_ADDRESS;
-
-typedef struct {
-  UINT32  Data1;
-  UINT16  Data2;
-  UINT16  Data3;
-  UINT8   Data4[8];
-} EFI_GUID;
-
-#define CONST     const
-#define STATIC    static
-
-#define TRUE  ((BOOLEAN)(1==1))
-#define FALSE ((BOOLEAN)(0==1))
-
-#define FSPAPI __attribute__((cdecl))
-#define EFIAPI __attribute__((cdecl))
-
-#define ASSERT(Expression)      \
-  do {                          \
-    if (!(Expression)) {        \
-      for (;;);                 \
-    }                           \
-  } while (FALSE)
-
-typedef UINT32 FSP_STATUS;
-typedef UINT32 EFI_STATUS;
-
-#endif
diff --git a/src/vendorcode/intel/fsp/baytrail/include/fspvpd.h b/src/vendorcode/intel/fsp/baytrail/include/fspvpd.h
deleted file mode 100644
index b001cdb..0000000
--- a/src/vendorcode/intel/fsp/baytrail/include/fspvpd.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
-
-Copyright (C) 2013-2014 Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef __FSPVPD_H__
-#define __FSPVPD_H__
-
-#pragma pack(1)
-
-typedef struct {
-  UINT8    EnableMemoryDown;
-  UINT8    DRAMSpeed;      /* DRAM Speed  */
-  UINT8    DRAMType;       /* DRAM Type */
-  UINT8    DIMM0Enable;    /* DIMM 0 Enable */
-  UINT8    DIMM1Enable;    /* DIMM 1 Enable */
-  UINT8    DIMMDWidth;     /* DRAM device data width */
-  UINT8    DIMMDensity;    /* DRAM device data density */
-  UINT8    DIMMBusWidth;   /* DIMM Bus Width */
-  UINT8    DIMMSides;      /* Ranks Per DIMM */
-  UINT8    DIMMtCL;        /* tCL */
-  UINT8    DIMMtRPtRCD;    /* tRP and tRCD in DRAM clk - 5:12.5ns, 6:15ns, etc. */
-  UINT8    DIMMtWR;        /* tWR in DRAM clk  */
-  UINT8    DIMMtWTR;       /* tWTR in DRAM clk */
-  UINT8    DIMMtRRD;       /* tRRD in DRAM clk */
-  UINT8    DIMMtRTP;       /* tRTP in DRAM clk */
-  UINT8    DIMMtFAW;       /* tFAW in DRAM clk */
-} MEMORY_DOWN_DATA;
-
-
-typedef struct _UPD_DATA_REGION {
-  UINT64                      Signature;                     /* Offset 0x0000 */
-  UINT32                      RESERVED1;                     /* Offset 0x0008 */
-  UINT8                       Padding0[20];                  /* Offset 0x000C */
-  UINT16                      PcdMrcInitTsegSize;            /* Offset 0x0020 */
-  UINT16                      PcdMrcInitMmioSize;            /* Offset 0x0022 */
-  UINT8                       PcdMrcInitSPDAddr1;            /* Offset 0x0024 */
-  UINT8                       PcdMrcInitSPDAddr2;            /* Offset 0x0025 */
-  UINT8                       PcdeMMCBootMode;               /* Offset 0x0026 */
-  UINT8                       PcdEnableSdio;                 /* Offset 0x0027 */
-  UINT8                       PcdEnableSdcard;               /* Offset 0x0028 */
-  UINT8                       PcdEnableHsuart0;              /* Offset 0x0029 */
-  UINT8                       PcdEnableHsuart1;              /* Offset 0x002A */
-  UINT8                       PcdEnableSpi;                  /* Offset 0x002B */
-  UINT8                       PcdEnableLan;                  /* Offset 0x002C */
-  UINT8                       PcdEnableSata;                 /* Offset 0x002D */
-  UINT8                       PcdSataMode;                   /* Offset 0x002E */
-  UINT8                       PcdEnableAzalia;               /* Offset 0x002F */
-  UINT32                      AzaliaConfigPtr;               /* Offset 0x0030 */
-  UINT8                       PcdEnableXhci;                 /* Offset 0x0034 */
-  UINT8                       PcdEnableLpe;                  /* Offset 0x0035 */
-  UINT8                       PcdLpssSioEnablePciMode;       /* Offset 0x0036 */
-  UINT8                       PcdEnableDma0;                 /* Offset 0x0037 */
-  UINT8                       PcdEnableDma1;                 /* Offset 0x0038 */
-  UINT8                       PcdEnableI2C0;                 /* Offset 0x0039 */
-  UINT8                       PcdEnableI2C1;                 /* Offset 0x003A */
-  UINT8                       PcdEnableI2C2;                 /* Offset 0x003B */
-  UINT8                       PcdEnableI2C3;                 /* Offset 0x003C */
-  UINT8                       PcdEnableI2C4;                 /* Offset 0x003D */
-  UINT8                       PcdEnableI2C5;                 /* Offset 0x003E */
-  UINT8                       PcdEnableI2C6;                 /* Offset 0x003F */
-  UINT8                       PcdEnablePwm0;                 /* Offset 0x0040 */
-  UINT8                       PcdEnablePwm1;                 /* Offset 0x0041 */
-  UINT8                       PcdEnableHsi;                  /* Offset 0x0042 */
-  UINT8                       PcdIgdDvmt50PreAlloc;          /* Offset 0x0043 */
-  UINT8                       PcdApertureSize;               /* Offset 0x0044 */
-  UINT8                       PcdGttSize;                    /* Offset 0x0045 */
-  UINT32                      SerialDebugPortAddress;        /* Offset 0x0046 */
-  UINT8                       SerialDebugPortType;           /* Offset 0x004A */
-  UINT8                       PcdMrcDebugMsg;                /* Offset 0x004B */
-  UINT8                       ISPEnable;                     /* Offset 0x004C */
-  UINT8                       PcdSccEnablePciMode;           /* Offset 0x004D */
-  UINT8                       IgdRenderStandby;              /* Offset 0x004E */
-  UINT8                       TxeUmaEnable;                  /* Offset 0x004F */
-  UINT8                       UnusedUpdSpace1[160];          /* Offset 0x0050 */
-  MEMORY_DOWN_DATA            PcdMemoryParameters;           /* Offset 0x00F0 */
-  UINT16                      PcdRegionTerminator;           /* Offset 0x0100 */
-} UPD_DATA_REGION;
-
-
-typedef struct _VPD_DATA_REGION {
-  UINT64   PcdVpdRegionSign;                      /* Offset 0x0000 */
-  UINT32   PcdImageRevision;                      /* Offset 0x0008 */
-  UINT32   PcdUpdRegionOffset;                    /* Offset 0x000C */
-  UINT8    Padding0[16];                          /* Offset 0x0010 */
-  UINT32   PcdFspReservedMemoryLength;            /* Offset 0x0020 */
-  UINT8    PcdPlatformType;                       /* Offset 0x0024 */
-  UINT8    PcdEnableSecureBoot;                   /* Offset 0x0025 */
-  UINT8    PcdMemoryParameters[16];               /* Offset 0x0026 */
-} VPD_DATA_REGION;
-
-#pragma pack()
-
-#endif
diff --git a/src/vendorcode/intel/fsp/baytrail/srx/board_fsp.c b/src/vendorcode/intel/fsp/baytrail/srx/board_fsp.c
deleted file mode 100644
index 2cb3492..0000000
--- a/src/vendorcode/intel/fsp/baytrail/srx/board_fsp.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-/***********************************************************************
- *
- * board_fsp.c
- *
- * Parse HOB to get system data.
- *
- **********************************************************************/
-#include "fsp.h"
-
-void
-GetLowMemorySize (
-  uint32_t         *LowMemoryLength
-  )
-{
-  EFI_PEI_HOB_POINTERS    Hob;
-
-  *LowMemoryLength = 0x100000;
-
-  //
-  // Get the HOB list for processing
-  //
-  Hob.Raw = GetHobList();
-
-  //
-  // Collect memory ranges
-  //
-  while (!END_OF_HOB_LIST (Hob)) {
-    if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) {
-      if (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) {
-        //
-        // Need memory above 1MB to be collected here
-        //
-        if (Hob.ResourceDescriptor->PhysicalStart >= 0x100000 &&
-            Hob.ResourceDescriptor->PhysicalStart < (EFI_PHYSICAL_ADDRESS) 0x100000000) {
-          *LowMemoryLength += (uint32_t) (Hob.ResourceDescriptor->ResourceLength);
-        }
-      }
-    }
-    Hob.Raw = GET_NEXT_HOB (Hob);
-  }
-
-  return;
-}
-
-void
-GetHighMemorySize (
-  uint64_t         *HighMemoryLength
-  )
-{
-  EFI_PEI_HOB_POINTERS    Hob;
-
-  *HighMemoryLength = 0x0;
-
-  //
-  // Get the HOB list for processing
-  //
-  Hob.Raw = GetHobList();
-
-  //
-  // Collect memory ranges
-  //
-  while (!END_OF_HOB_LIST (Hob)) {
-    if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) {
-      if (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) {
-        //
-        // Need memory above 4GB to be collected here
-        //
-        if (Hob.ResourceDescriptor->PhysicalStart >= (EFI_PHYSICAL_ADDRESS) 0x100000000) {
-          *HighMemoryLength += (uint64_t) (Hob.ResourceDescriptor->ResourceLength);
-        }
-      }
-    }
-    Hob.Raw = GET_NEXT_HOB (Hob);
-  }
-
-  return;
-}
-
-void
-GetFspReservedMemoryFromGuid (
-  uint32_t         *FspMemoryBase,
-  uint32_t         *FspMemoryLength,
-  EFI_GUID          FspReservedMemoryGuid
-  )
-{
-  EFI_PEI_HOB_POINTERS    Hob;
-
-  //
-  // Get the HOB list for processing
-  //
-  Hob.Raw = GetHobList();
-  *FspMemoryBase = 0;
-  *FspMemoryLength = 0;
-
-  //
-  // Collect memory ranges
-  //
-  while (!END_OF_HOB_LIST (Hob)) {
-    if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) {
-      if (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED) {
-        if (CompareGuid(&Hob.ResourceDescriptor->Owner, &FspReservedMemoryGuid)) {
-          *FspMemoryBase = (uint32_t) (Hob.ResourceDescriptor->PhysicalStart);
-          *FspMemoryLength = (uint32_t) (Hob.ResourceDescriptor->ResourceLength);
-		      break;
-        }
-      }
-    }
-    Hob.Raw = GET_NEXT_HOB (Hob);
-  }
-
-  return;
-}
-
-void
-GetFspNVStorageMemory (
-  VOID         **FspNVStorageHob,
-  uint16_t     *DataSize
-  )
-{
-
-  EFI_GUID                FspNVStorageHobGuid = FSP_NON_VOLATILE_STORAGE_HOB_GUID;
-  uint8_t                 *GuidHob;
-  EFI_HOB_GENERIC_HEADER  *GuidHobHdr;
-
-  GuidHob = GetFirstGuidHob(&FspNVStorageHobGuid);
-  if (!GuidHob) {
-    *FspNVStorageHob = 0;
-    *DataSize = 0;
-  } else {
-    *FspNVStorageHob = GET_GUID_HOB_DATA (GuidHob);
-    GuidHobHdr = (EFI_HOB_GENERIC_HEADER *)GuidHob;
-    *DataSize =  GET_GUID_HOB_DATA_SIZE (GuidHobHdr);
-  }
-}
-
-void
-GetTempRamStack (
-  VOID         **TempRamStackPtr,
-  uint16_t     *DataSize
-  )
-{
-
-  EFI_GUID                FspBootloaderTemporaryMemoryHobGuid = FSP_BOOTLOADER_TEMPORARY_MEMORY_HOB_GUID;
-  uint8_t                 *GuidHob;
-  EFI_HOB_GENERIC_HEADER  *GuidHobHdr;
-
-  GuidHob = GetFirstGuidHob(&FspBootloaderTemporaryMemoryHobGuid);
-  if (!GuidHob) {
-    *TempRamStackPtr = 0;
-    *DataSize = 0;
-  } else {
-    *TempRamStackPtr = GET_GUID_HOB_DATA (GuidHob);
-    GuidHobHdr = (EFI_HOB_GENERIC_HEADER *)GuidHob;
-    *DataSize =  GET_GUID_HOB_DATA_SIZE (GuidHobHdr);
-  }
-}
diff --git a/src/vendorcode/intel/fsp/baytrail/srx/fsphob.c b/src/vendorcode/intel/fsp/baytrail/srx/fsphob.c
deleted file mode 100644
index 5d6e890..0000000
--- a/src/vendorcode/intel/fsp/baytrail/srx/fsphob.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/**
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-/***********************************************************************
- *
- * fsphob.c
- *
- * HOB infrastructure code.
- *
- **********************************************************************/
-#include <string.h>
-
-#include "fsptypes.h"
-#include "fsphob.h"
-
-//
-// Pointer to the HOB should be initialized with the output of FSP INIT PARAMS
-//
-extern volatile void *FspHobListPtr;
-
-/**
-  Reads a 64-bit value from memory that may be unaligned.
-
-  This function returns the 64-bit value pointed to by Buffer. The function
-  guarantees that the read operation does not produce an alignment fault.
-
-  If the Buffer is NULL, then ASSERT().
-
-  @param  Buffer  Pointer to a 64-bit value that may be unaligned.
-
-  @return The 64-bit value read from Buffer.
-
-**/
-UINT64
-EFIAPI
-ReadUnaligned64 (
-  CONST UINT64              *Buffer
-  )
-{
-  ASSERT (Buffer != NULL);
-
-  return *Buffer;
-}
-
-/**
-  Compares two GUIDs.
-
-  This function compares Guid1 to Guid2.  If the GUIDs are identical then TRUE is returned.
-  If there are any bit differences in the two GUIDs, then FALSE is returned.
-
-  If Guid1 is NULL, then ASSERT().
-  If Guid2 is NULL, then ASSERT().
-
-  @param  Guid1       A pointer to a 128 bit GUID.
-  @param  Guid2       A pointer to a 128 bit GUID.
-
-  @retval TRUE        Guid1 and Guid2 are identical.
-  @retval FALSE       Guid1 and Guid2 are not identical.
-
-**/
-BOOLEAN
-EFIAPI
-CompareGuid (
-  CONST EFI_GUID  *Guid1,
-  CONST EFI_GUID  *Guid2
-  )
-{
-  UINT64  LowPartOfGuid1;
-  UINT64  LowPartOfGuid2;
-  UINT64  HighPartOfGuid1;
-  UINT64  HighPartOfGuid2;
-
-  LowPartOfGuid1  = ReadUnaligned64 ((CONST UINT64*) Guid1);
-  LowPartOfGuid2  = ReadUnaligned64 ((CONST UINT64*) Guid2);
-  HighPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1 + 1);
-  HighPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2 + 1);
-
-  return (BOOLEAN) (LowPartOfGuid1 == LowPartOfGuid2 && HighPartOfGuid1 == HighPartOfGuid2);
-}
-
-/**
-  Returns the pointer to the HOB list.
-**/
-VOID *
-EFIAPI
-GetHobList (
-  VOID
-  )
-{
-  ASSERT (FspHobListPtr != NULL);
-  return ((VOID *)FspHobListPtr);
-}
-
-/**
-  Returns the next instance of a HOB type from the starting HOB.
-**/
-VOID *
-EFIAPI
-GetNextHob (
-  UINT16                 Type,
-  CONST VOID             *HobStart
-  )
-{
-  EFI_PEI_HOB_POINTERS  Hob;
-
-  ASSERT (HobStart != NULL);
-
-  Hob.Raw = (UINT8 *) HobStart;
-  //
-  // Parse the HOB list until end of list or matching type is found.
-  //
-  while (!END_OF_HOB_LIST (Hob)) {
-    if (Hob.Header->HobType == Type) {
-      return Hob.Raw;
-    }
-    Hob.Raw = GET_NEXT_HOB (Hob);
-  }
-  return NULL;
-}
-
-/**
-  Returns the first instance of a HOB type among the whole HOB list.
-**/
-VOID *
-EFIAPI
-GetFirstHob (
-  UINT16                 Type
-  )
-{
-  VOID      *HobList;
-
-  HobList = GetHobList ();
-  return GetNextHob (Type, HobList);
-}
-
-/**
-  Returns the next instance of the matched GUID HOB from the starting HOB.
-**/
-VOID *
-EFIAPI
-GetNextGuidHob (
-  CONST EFI_GUID         *Guid,
-  CONST VOID             *HobStart
-  )
-{
-  EFI_PEI_HOB_POINTERS  GuidHob;
-
-  GuidHob.Raw = (UINT8 *) HobStart;
-  while ((GuidHob.Raw = GetNextHob (EFI_HOB_TYPE_GUID_EXTENSION, GuidHob.Raw)) != NULL) {
-    if (CompareGuid (Guid, &GuidHob.Guid->Name)) {
-      break;
-    }
-    GuidHob.Raw = GET_NEXT_HOB (GuidHob);
-  }
-  return GuidHob.Raw;
-}
-
-/**
-  Returns the first instance of the matched GUID HOB among the whole HOB list.
-**/
-VOID *
-EFIAPI
-GetFirstGuidHob (
-  CONST EFI_GUID         *Guid
-  )
-{
-  VOID      *HobList;
-
-  HobList = GetHobList ();
-  return GetNextGuidHob (Guid, HobList);
-}
diff --git a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspapi.h b/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspapi.h
deleted file mode 100644
index 9520736..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspapi.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef _FSP_API_H_
-#define _FSP_API_H_
-
-#pragma pack(1)
-
-typedef VOID (* CONTINUATION_PROC)(EFI_STATUS Status, VOID *HobListPtr);
-
-typedef struct {
-  VOID              *NvsBufferPtr;
-  VOID              *RtBufferPtr;
-  CONTINUATION_PROC   ContinuationFunc;
-} FSP_INIT_PARAMS;
-
-typedef struct {
-  UINT32            *StackTop;
-  UINT32             BootMode;
-} FSP_INIT_RT_COMMON_BUFFER;
-
-typedef enum {
-  EnumInitPhaseAfterPciEnumeration = 0x20,
-  EnumInitPhaseReadyToBoot = 0x40
-} FSP_INIT_PHASE;
-
-typedef struct {
-  FSP_INIT_PHASE     Phase;
-} NOTIFY_PHASE_PARAMS;
-
-#pragma pack()
-
-typedef FSP_STATUS (FSPAPI *FSP_FSP_INIT)    (FSP_INIT_PARAMS     *FspInitParamPtr);
-typedef FSP_STATUS (FSPAPI *FSP_NOTFY_PHASE) (NOTIFY_PHASE_PARAMS *NotifyPhaseParamPtr);
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspffs.h b/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspffs.h
deleted file mode 100644
index 7a7c367..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspffs.h
+++ /dev/null
@@ -1,506 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-
-#ifndef __PI_FIRMWARE_FILE_H__
-#define __PI_FIRMWARE_FILE_H__
-
-#pragma pack(1)
-///
-/// Used to verify the integrity of the file.
-///
-typedef union {
-  struct {
-    ///
-    /// The IntegrityCheck.Checksum.Header field is an 8-bit checksum of the file
-    /// header. The State and IntegrityCheck.Checksum.File fields are assumed
-    /// to be zero and the checksum is calculated such that the entire header sums to zero.
-    ///
-    UINT8   Header;
-    ///
-    /// If the FFS_ATTRIB_CHECKSUM (see definition below) bit of the Attributes
-    /// field is set to one, the IntegrityCheck.Checksum.File field is an 8-bit
-    /// checksum of the file data.
-    /// If the FFS_ATTRIB_CHECKSUM bit of the Attributes field is cleared to zero,
-    /// the IntegrityCheck.Checksum.File field must be initialized with a value of
-    /// 0xAA. The IntegrityCheck.Checksum.File field is valid any time the
-    /// EFI_FILE_DATA_VALID bit is set in the State field.
-    ///
-    UINT8   File;
-  } Checksum;
-  ///
-  /// This is the full 16 bits of the IntegrityCheck field.
-  ///
-  UINT16    Checksum16;
-} EFI_FFS_INTEGRITY_CHECK;
-
-///
-/// FFS_FIXED_CHECKSUM is the checksum value used when the
-/// FFS_ATTRIB_CHECKSUM attribute bit is clear.
-///
-#define FFS_FIXED_CHECKSUM  0xAA
-
-typedef UINT8 EFI_FV_FILETYPE;
-typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
-typedef UINT8 EFI_FFS_FILE_STATE;
-
-///
-/// File Types Definitions
-///
-#define EFI_FV_FILETYPE_ALL                   0x00
-#define EFI_FV_FILETYPE_RAW                   0x01
-#define EFI_FV_FILETYPE_FREEFORM              0x02
-#define EFI_FV_FILETYPE_SECURITY_CORE         0x03
-#define EFI_FV_FILETYPE_PEI_CORE              0x04
-#define EFI_FV_FILETYPE_DXE_CORE              0x05
-#define EFI_FV_FILETYPE_PEIM                  0x06
-#define EFI_FV_FILETYPE_DRIVER                0x07
-#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER  0x08
-#define EFI_FV_FILETYPE_APPLICATION           0x09
-#define EFI_FV_FILETYPE_SMM                   0x0A
-#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B
-#define EFI_FV_FILETYPE_COMBINED_SMM_DXE      0x0C
-#define EFI_FV_FILETYPE_SMM_CORE              0x0D
-#define EFI_FV_FILETYPE_OEM_MIN               0xc0
-#define EFI_FV_FILETYPE_OEM_MAX               0xdf
-#define EFI_FV_FILETYPE_DEBUG_MIN             0xe0
-#define EFI_FV_FILETYPE_DEBUG_MAX             0xef
-#define EFI_FV_FILETYPE_FFS_MIN               0xf0
-#define EFI_FV_FILETYPE_FFS_MAX               0xff
-#define EFI_FV_FILETYPE_FFS_PAD               0xf0
-///
-/// FFS File Attributes.
-///
-#define FFS_ATTRIB_LARGE_FILE         0x01
-#define FFS_ATTRIB_FIXED              0x04
-#define FFS_ATTRIB_DATA_ALIGNMENT     0x38
-#define FFS_ATTRIB_CHECKSUM           0x40
-
-///
-/// FFS File State Bits.
-///
-#define EFI_FILE_HEADER_CONSTRUCTION  0x01
-#define EFI_FILE_HEADER_VALID         0x02
-#define EFI_FILE_DATA_VALID           0x04
-#define EFI_FILE_MARKED_FOR_UPDATE    0x08
-#define EFI_FILE_DELETED              0x10
-#define EFI_FILE_HEADER_INVALID       0x20
-
-
-///
-/// Each file begins with the header that describe the
-/// contents and state of the files.
-///
-typedef struct {
-  ///
-  /// This GUID is the file name. It is used to uniquely identify the file.
-  ///
-  EFI_GUID                Name;
-  ///
-  /// Used to verify the integrity of the file.
-  ///
-  EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
-  ///
-  /// Identifies the type of file.
-  ///
-  EFI_FV_FILETYPE         Type;
-  ///
-  /// Declares various file attribute bits.
-  ///
-  EFI_FFS_FILE_ATTRIBUTES Attributes;
-  ///
-  /// The length of the file in bytes, including the FFS header.
-  ///
-  UINT8                   Size[3];
-  ///
-  /// Used to track the state of the file throughout the life of the file from creation to deletion.
-  ///
-  EFI_FFS_FILE_STATE      State;
-} EFI_FFS_FILE_HEADER;
-
-typedef struct {
-  ///
-  /// This GUID is the file name. It is used to uniquely identify the file. There may be only
-  /// one instance of a file with the file name GUID of Name in any given firmware
-  /// volume, except if the file type is EFI_FV_FILETYPE_FFS_PAD.
-  ///
-  EFI_GUID                  Name;
-
-  ///
-  /// Used to verify the integrity of the file.
-  ///
-  EFI_FFS_INTEGRITY_CHECK   IntegrityCheck;
-
-  ///
-  /// Identifies the type of file.
-  ///
-  EFI_FV_FILETYPE           Type;
-
-  ///
-  /// Declares various file attribute bits.
-  ///
-  EFI_FFS_FILE_ATTRIBUTES   Attributes;
-
-  ///
-  /// The length of the file in bytes, including the FFS header.
-  /// The length of the file data is either (Size - sizeof(EFI_FFS_FILE_HEADER)). This calculation means a
-  /// zero-length file has a Size of 24 bytes, which is sizeof(EFI_FFS_FILE_HEADER).
-  /// Size is not required to be a multiple of 8 bytes. Given a file F, the next file header is
-  /// located at the next 8-byte aligned firmware volume offset following the last byte of the file F.
-  ///
-  UINT8                     Size[3];
-
-  ///
-  /// Used to track the state of the file throughout the life of the file from creation to deletion.
-  ///
-  EFI_FFS_FILE_STATE        State;
-
-  ///
-  /// If FFS_ATTRIB_LARGE_FILE is set in Attributes, then ExtendedSize exists and Size must be set to zero.
-  /// If FFS_ATTRIB_LARGE_FILE is not set then EFI_FFS_FILE_HEADER is used.
-  ///
-  UINT32                    ExtendedSize;
-} EFI_FFS_FILE_HEADER2;
-
-#define IS_FFS_FILE2(FfsFileHeaderPtr) \
-    (((((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Attributes) & FFS_ATTRIB_LARGE_FILE) == FFS_ATTRIB_LARGE_FILE)
-
-#define FFS_FILE_SIZE(FfsFileHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Size) & 0x00ffffff))
-
-#define FFS_FILE2_SIZE(FfsFileHeaderPtr) \
-    (((EFI_FFS_FILE_HEADER2 *) (UINTN) FfsFileHeaderPtr)->ExtendedSize)
-
-typedef UINT8 EFI_SECTION_TYPE;
-
-///
-/// Pseudo type. It is used as a wild card when retrieving sections.
-///  The section type EFI_SECTION_ALL matches all section types.
-///
-#define EFI_SECTION_ALL                   0x00
-
-///
-/// Encapsulation section Type values.
-///
-#define EFI_SECTION_COMPRESSION           0x01
-
-#define EFI_SECTION_GUID_DEFINED          0x02
-
-#define EFI_SECTION_DISPOSABLE            0x03
-
-///
-/// Leaf section Type values.
-///
-#define EFI_SECTION_PE32                  0x10
-#define EFI_SECTION_PIC                   0x11
-#define EFI_SECTION_TE                    0x12
-#define EFI_SECTION_DXE_DEPEX             0x13
-#define EFI_SECTION_VERSION               0x14
-#define EFI_SECTION_USER_INTERFACE        0x15
-#define EFI_SECTION_COMPATIBILITY16       0x16
-#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17
-#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18
-#define EFI_SECTION_RAW                   0x19
-#define EFI_SECTION_PEI_DEPEX             0x1B
-#define EFI_SECTION_SMM_DEPEX             0x1C
-
-///
-/// Common section header.
-///
-typedef struct {
-  ///
-  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
-  /// including the EFI_COMMON_SECTION_HEADER.
-  ///
-  UINT8             Size[3];
-  EFI_SECTION_TYPE  Type;
-  ///
-  /// Declares the section type.
-  ///
-} EFI_COMMON_SECTION_HEADER;
-
-typedef struct {
-  ///
-  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
-  /// including the EFI_COMMON_SECTION_HEADER.
-  ///
-  UINT8             Size[3];
-
-  EFI_SECTION_TYPE  Type;
-
-  ///
-  /// If Size is 0xFFFFFF, then ExtendedSize contains the size of the section. If
-  /// Size is not equal to 0xFFFFFF, then this field does not exist.
-  ///
-  UINT32            ExtendedSize;
-} EFI_COMMON_SECTION_HEADER2;
-
-///
-/// Leaf section type that contains an
-/// IA-32 16-bit executable image.
-///
-typedef EFI_COMMON_SECTION_HEADER  EFI_COMPATIBILITY16_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2 EFI_COMPATIBILITY16_SECTION2;
-
-///
-/// CompressionType of EFI_COMPRESSION_SECTION.
-///
-#define EFI_NOT_COMPRESSED        0x00
-#define EFI_STANDARD_COMPRESSION  0x01
-///
-/// An encapsulation section type in which the
-/// section data is compressed.
-///
-typedef struct {
-  ///
-  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
-  ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  ///
-  /// The UINT32 that indicates the size of the section data after decompression.
-  ///
-  UINT32                      UncompressedLength;
-  ///
-  /// Indicates which compression algorithm is used.
-  ///
-  UINT8                       CompressionType;
-} EFI_COMPRESSION_SECTION;
-
-typedef struct {
-  ///
-  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
-  ///
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// UINT32 that indicates the size of the section data after decompression.
-  ///
-  UINT32                        UncompressedLength;
-  ///
-  /// Indicates which compression algorithm is used.
-  ///
-  UINT8                         CompressionType;
-} EFI_COMPRESSION_SECTION2;
-
-///
-/// An encapsulation section type in which the section data is disposable.
-/// A disposable section is an encapsulation section in which the section data may be disposed of during
-/// the process of creating or updating a firmware image without significant impact on the usefulness of
-/// the file. The Type field in the section header is set to EFI_SECTION_DISPOSABLE. This
-/// allows optional or descriptive data to be included with the firmware file which can be removed in
-/// order to conserve space. The contents of this section are implementation specific, but might contain
-/// debug data or detailed integration instructions.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_DISPOSABLE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_DISPOSABLE_SECTION2;
-
-///
-/// The leaf section which could be used to determine the dispatch order of DXEs.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_DXE_DEPEX_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_DXE_DEPEX_SECTION2;
-
-///
-/// The leaf section which contains a PI FV.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_FIRMWARE_VOLUME_IMAGE_SECTION2;
-
-///
-/// The leaf section which contains a single GUID.
-///
-typedef struct {
-  ///
-  /// Common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
-  ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  ///
-  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
-  ///
-  EFI_GUID                    SubTypeGuid;
-} EFI_FREEFORM_SUBTYPE_GUID_SECTION;
-
-typedef struct {
-  ///
-  /// The common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
-  ///
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
-  ///
-  EFI_GUID                      SubTypeGuid;
-} EFI_FREEFORM_SUBTYPE_GUID_SECTION2;
-
-///
-/// Attributes of EFI_GUID_DEFINED_SECTION.
-///
-#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED  0x01
-#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID    0x02
-///
-/// The leaf section which is encapsulation defined by specific GUID.
-///
-typedef struct {
-  ///
-  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
-  ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  ///
-  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
-  ///
-  EFI_GUID                    SectionDefinitionGuid;
-  ///
-  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
-  ///
-  UINT16                      DataOffset;
-  ///
-  /// The bit field that declares some specific characteristics of the section contents.
-  ///
-  UINT16                      Attributes;
-} EFI_GUID_DEFINED_SECTION;
-
-typedef struct {
-  ///
-  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
-  ///
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
-  ///
-  EFI_GUID                      SectionDefinitionGuid;
-  ///
-  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
-  ///
-  UINT16                        DataOffset;
-  ///
-  /// The bit field that declares some specific characteristics of the section contents.
-  ///
-  UINT16                        Attributes;
-} EFI_GUID_DEFINED_SECTION2;
-
-///
-/// The leaf section which contains PE32+ image.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PE32_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PE32_SECTION2;
-
-///
-/// The leaf section used to determine the dispatch order of PEIMs.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PEI_DEPEX_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PEI_DEPEX_SECTION2;
-
-///
-/// A leaf section type that contains a position-independent-code (PIC) image.
-/// A PIC image section is a leaf section that contains a position-independent-code (PIC) image.
-/// In addition to normal PE32+ images that contain relocation information, PEIM executables may be
-/// PIC and are referred to as PIC images. A PIC image is the same as a PE32+ image except that all
-/// relocation information has been stripped from the image and the image can be moved and will
-/// execute correctly without performing any relocation or other fix-ups. EFI_PIC_SECTION2 must
-/// be used if the section is 16MB or larger.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PIC_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PIC_SECTION2;
-
-///
-/// The leaf section which constains the position-independent-code image.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_TE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_TE_SECTION2;
-
-///
-/// The leaf section which contains an array of zero or more bytes.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_RAW_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_RAW_SECTION2;
-
-///
-/// The SMM dependency expression section is a leaf section that contains a dependency expression that
-/// is used to determine the dispatch order for SMM drivers. Before the SMRAM invocation of the
-/// SMM driver's entry point, this dependency expression must evaluate to TRUE. See the Platform
-/// Initialization Specification, Volume 2, for details regarding the format of the dependency expression.
-/// The dependency expression may refer to protocols installed in either the UEFI or the SMM protocol
-/// database. EFI_SMM_DEPEX_SECTION2 must be used if the section is 16MB or larger.
-///
-typedef EFI_COMMON_SECTION_HEADER EFI_SMM_DEPEX_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2 EFI_SMM_DEPEX_SECTION2;
-
-///
-/// The leaf section which contains a unicode string that
-/// is human readable file name.
-///
-typedef struct {
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-
-  ///
-  /// Array of unicode string.
-  ///
-  CHAR16                      FileNameString[1];
-} EFI_USER_INTERFACE_SECTION;
-
-typedef struct {
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  CHAR16                        FileNameString[1];
-} EFI_USER_INTERFACE_SECTION2;
-
-///
-/// The leaf section which contains a numeric build number and
-/// an optional unicode string that represents the file revision.
-///
-typedef struct {
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  UINT16                      BuildNumber;
-
-  ///
-  /// Array of unicode string.
-  ///
-  CHAR16                      VersionString[1];
-} EFI_VERSION_SECTION;
-
-typedef struct {
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// A UINT16 that represents a particular build. Subsequent builds have monotonically
-  /// increasing build numbers relative to earlier builds.
-  ///
-  UINT16                        BuildNumber;
-  CHAR16                        VersionString[1];
-} EFI_VERSION_SECTION2;
-
-#define IS_SECTION2(SectionHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff) == 0x00ffffff)
-
-#define SECTION_SIZE(SectionHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff))
-
-#define SECTION2_SIZE(SectionHeaderPtr) \
-    (((EFI_COMMON_SECTION_HEADER2 *) (UINTN) SectionHeaderPtr)->ExtendedSize)
-
-#pragma pack()
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspfv.h b/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspfv.h
deleted file mode 100644
index 75d17fa..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspfv.h
+++ /dev/null
@@ -1,247 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef __PI_FIRMWAREVOLUME_H__
-#define __PI_FIRMWAREVOLUME_H__
-
-///
-/// EFI_FV_FILE_ATTRIBUTES
-///
-typedef UINT32  EFI_FV_FILE_ATTRIBUTES;
-
-//
-// Value of EFI_FV_FILE_ATTRIBUTES.
-//
-#define EFI_FV_FILE_ATTRIB_ALIGNMENT      0x0000001F
-#define EFI_FV_FILE_ATTRIB_FIXED          0x00000100
-#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED  0x00000200
-
-///
-/// type of EFI FVB attribute
-///
-typedef UINT32  EFI_FVB_ATTRIBUTES_2;
-
-//
-// Attributes bit definitions
-//
-#define EFI_FVB2_READ_DISABLED_CAP  0x00000001
-#define EFI_FVB2_READ_ENABLED_CAP   0x00000002
-#define EFI_FVB2_READ_STATUS        0x00000004
-#define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008
-#define EFI_FVB2_WRITE_ENABLED_CAP  0x00000010
-#define EFI_FVB2_WRITE_STATUS       0x00000020
-#define EFI_FVB2_LOCK_CAP           0x00000040
-#define EFI_FVB2_LOCK_STATUS        0x00000080
-#define EFI_FVB2_STICKY_WRITE       0x00000200
-#define EFI_FVB2_MEMORY_MAPPED      0x00000400
-#define EFI_FVB2_ERASE_POLARITY     0x00000800
-#define EFI_FVB2_READ_LOCK_CAP      0x00001000
-#define EFI_FVB2_READ_LOCK_STATUS   0x00002000
-#define EFI_FVB2_WRITE_LOCK_CAP     0x00004000
-#define EFI_FVB2_WRITE_LOCK_STATUS  0x00008000
-#define EFI_FVB2_ALIGNMENT          0x001F0000
-#define EFI_FVB2_ALIGNMENT_1        0x00000000
-#define EFI_FVB2_ALIGNMENT_2        0x00010000
-#define EFI_FVB2_ALIGNMENT_4        0x00020000
-#define EFI_FVB2_ALIGNMENT_8        0x00030000
-#define EFI_FVB2_ALIGNMENT_16       0x00040000
-#define EFI_FVB2_ALIGNMENT_32       0x00050000
-#define EFI_FVB2_ALIGNMENT_64       0x00060000
-#define EFI_FVB2_ALIGNMENT_128      0x00070000
-#define EFI_FVB2_ALIGNMENT_256      0x00080000
-#define EFI_FVB2_ALIGNMENT_512      0x00090000
-#define EFI_FVB2_ALIGNMENT_1K       0x000A0000
-#define EFI_FVB2_ALIGNMENT_2K       0x000B0000
-#define EFI_FVB2_ALIGNMENT_4K       0x000C0000
-#define EFI_FVB2_ALIGNMENT_8K       0x000D0000
-#define EFI_FVB2_ALIGNMENT_16K      0x000E0000
-#define EFI_FVB2_ALIGNMENT_32K      0x000F0000
-#define EFI_FVB2_ALIGNMENT_64K      0x00100000
-#define EFI_FVB2_ALIGNMENT_128K     0x00110000
-#define EFI_FVB2_ALIGNMENT_256K     0x00120000
-#define EFI_FVB2_ALIGNMENT_512K     0x00130000
-#define EFI_FVB2_ALIGNMENT_1M       0x00140000
-#define EFI_FVB2_ALIGNMENT_2M       0x00150000
-#define EFI_FVB2_ALIGNMENT_4M       0x00160000
-#define EFI_FVB2_ALIGNMENT_8M       0x00170000
-#define EFI_FVB2_ALIGNMENT_16M      0x00180000
-#define EFI_FVB2_ALIGNMENT_32M      0x00190000
-#define EFI_FVB2_ALIGNMENT_64M      0x001A0000
-#define EFI_FVB2_ALIGNMENT_128M     0x001B0000
-#define EFI_FVB2_ALIGNMENT_256M     0x001C0000
-#define EFI_FVB2_ALIGNMENT_512M     0x001D0000
-#define EFI_FVB2_ALIGNMENT_1G       0x001E0000
-#define EFI_FVB2_ALIGNMENT_2G       0x001F0000
-
-
-typedef struct {
-  ///
-  /// The number of sequential blocks which are of the same size.
-  ///
-  UINT32 NumBlocks;
-  ///
-  /// The size of the blocks.
-  ///
-  UINT32 Length;
-} EFI_FV_BLOCK_MAP_ENTRY;
-
-///
-/// Describes the features and layout of the firmware volume.
-///
-typedef struct {
-  ///
-  /// The first 16 bytes are reserved to allow for the reset vector of
-  /// processors whose reset vector is at address 0.
-  ///
-  UINT8                     ZeroVector[16];
-  ///
-  /// Declares the file system with which the firmware volume is formatted.
-  ///
-  EFI_GUID                  FileSystemGuid;
-  ///
-  /// Length in bytes of the complete firmware volume, including the header.
-  ///
-  UINT64                    FvLength;
-  ///
-  /// Set to EFI_FVH_SIGNATURE
-  ///
-  UINT32                    Signature;
-  ///
-  /// Declares capabilities and power-on defaults for the firmware volume.
-  ///
-  EFI_FVB_ATTRIBUTES_2      Attributes;
-  ///
-  /// Length in bytes of the complete firmware volume header.
-  ///
-  UINT16                    HeaderLength;
-  ///
-  /// A 16-bit checksum of the firmware volume header. A valid header sums to zero.
-  ///
-  UINT16                    Checksum;
-  ///
-  /// Offset, relative to the start of the header, of the extended header
-  /// (EFI_FIRMWARE_VOLUME_EXT_HEADER) or zero if there is no extended header.
-  ///
-  UINT16                    ExtHeaderOffset;
-  ///
-  /// This field must always be set to zero.
-  ///
-  UINT8                     Reserved[1];
-  ///
-  /// Set to 2. Future versions of this specification may define new header fields and will
-  /// increment the Revision field accordingly.
-  ///
-  UINT8                     Revision;
-  ///
-  /// An array of run-length encoded FvBlockMapEntry structures. The array is
-  /// terminated with an entry of {0,0}.
-  ///
-  EFI_FV_BLOCK_MAP_ENTRY    BlockMap[1];
-} EFI_FIRMWARE_VOLUME_HEADER;
-
-#define EFI_FVH_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', 'H')
-
-///
-/// Firmware Volume Header Revision definition
-///
-#define EFI_FVH_REVISION  0x02
-
-///
-/// Extension header pointed by ExtHeaderOffset of volume header.
-///
-typedef struct {
-  ///
-  /// Firmware volume name.
-  ///
-  EFI_GUID  FvName;
-  ///
-  /// Size of the rest of the extension header, including this structure.
-  ///
-  UINT32    ExtHeaderSize;
-} EFI_FIRMWARE_VOLUME_EXT_HEADER;
-
-///
-/// Entry struture for describing FV extension header
-///
-typedef struct {
-  ///
-  /// Size of this header extension.
-  ///
-  UINT16    ExtEntrySize;
-  ///
-  /// Type of the header.
-  ///
-  UINT16    ExtEntryType;
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY;
-
-#define EFI_FV_EXT_TYPE_OEM_TYPE  0x01
-///
-/// This extension header provides a mapping between a GUID and an OEM file type.
-///
-typedef struct {
-  ///
-  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
-  ///
-  EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
-  ///
-  /// A bit mask, one bit for each file type between 0xC0 (bit 0) and 0xDF (bit 31). If a bit
-  /// is '1', then the GUID entry exists in Types. If a bit is '0' then no GUID entry exists in Types.
-  ///
-  UINT32    TypeMask;
-  ///
-  /// An array of GUIDs, each GUID representing an OEM file type.
-  ///
-  /// EFI_GUID  Types[1];
-  ///
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;
-
-#define EFI_FV_EXT_TYPE_GUID_TYPE 0x0002
-
-///
-/// This extension header EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE provides a vendor specific
-/// GUID FormatType type which includes a length and a successive series of data bytes.
-///
-typedef struct {
-  ///
-  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
-  ///
-  EFI_FIRMWARE_VOLUME_EXT_ENTRY     Hdr;
-  ///
-  /// Vendor-specific GUID.
-  ///
-  EFI_GUID                          FormatType;
-  ///
-  /// An arry of bytes of length Length.
-  ///
-  /// UINT8                             Data[1];
-  ///
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE;
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fsphob.h b/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fsphob.h
deleted file mode 100644
index 5840907..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fsphob.h
+++ /dev/null
@@ -1,507 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef __PI_HOB_H__
-#define __PI_HOB_H__
-
-//
-// HobType of EFI_HOB_GENERIC_HEADER.
-//
-#define EFI_HOB_TYPE_MEMORY_ALLOCATION    0x0002
-#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR  0x0003
-#define EFI_HOB_TYPE_GUID_EXTENSION       0x0004
-#define EFI_HOB_TYPE_UNUSED               0xFFFE
-#define EFI_HOB_TYPE_END_OF_HOB_LIST      0xFFFF
-
-///
-/// Describes the format and size of the data inside the HOB.
-/// All HOBs must contain this generic HOB header.
-///
-typedef struct {
-  ///
-  /// Identifies the HOB data structure type.
-  ///
-  UINT16    HobType;
-  ///
-  /// The length in bytes of the HOB.
-  ///
-  UINT16    HobLength;
-  ///
-  /// This field must always be set to zero.
-  ///
-  UINT32    Reserved;
-} EFI_HOB_GENERIC_HEADER;
-
-///
-/// Enumeration of memory types introduced in UEFI.
-///
-typedef enum {
-  ///
-  /// Not used.
-  ///
-  EfiReservedMemoryType,
-  ///
-  /// The code portions of a loaded application.
-  /// (Note that UEFI OS loaders are UEFI applications.)
-  ///
-  EfiLoaderCode,
-  ///
-  /// The data portions of a loaded application and the default data allocation
-  /// type used by an application to allocate pool memory.
-  ///
-  EfiLoaderData,
-  ///
-  /// The code portions of a loaded Boot Services Driver.
-  ///
-  EfiBootServicesCode,
-  ///
-  /// The data portions of a loaded Boot Serves Driver, and the default data
-  /// allocation type used by a Boot Services Driver to allocate pool memory.
-  ///
-  EfiBootServicesData,
-  ///
-  /// The code portions of a loaded Runtime Services Driver.
-  ///
-  EfiRuntimeServicesCode,
-  ///
-  /// The data portions of a loaded Runtime Services Driver and the default
-  /// data allocation type used by a Runtime Services Driver to allocate pool memory.
-  ///
-  EfiRuntimeServicesData,
-  ///
-  /// Free (unallocated) memory.
-  ///
-  EfiConventionalMemory,
-  ///
-  /// Memory in which errors have been detected.
-  ///
-  EfiUnusableMemory,
-  ///
-  /// Memory that holds the ACPI tables.
-  ///
-  EfiACPIReclaimMemory,
-  ///
-  /// Address space reserved for use by the firmware.
-  ///
-  EfiACPIMemoryNVS,
-  ///
-  /// Used by system firmware to request that a memory-mapped IO region
-  /// be mapped by the OS to a virtual address so it can be accessed by EFI runtime services.
-  ///
-  EfiMemoryMappedIO,
-  ///
-  /// System memory-mapped IO region that is used to translate memory
-  /// cycles to IO cycles by the processor.
-  ///
-  EfiMemoryMappedIOPortSpace,
-  ///
-  /// Address space reserved by the firmware for code that is part of the processor.
-  ///
-  EfiPalCode,
-  EfiMaxMemoryType
-} EFI_MEMORY_TYPE;
-
-///
-/// EFI_HOB_MEMORY_ALLOCATION_HEADER describes the
-/// various attributes of the logical memory allocation. The type field will be used for
-/// subsequent inclusion in the UEFI memory map.
-///
-typedef struct {
-  ///
-  /// A GUID that defines the memory allocation region's type and purpose, as well as
-  /// other fields within the memory allocation HOB. This GUID is used to define the
-  /// additional data within the HOB that may be present for the memory allocation HOB.
-  /// Type EFI_GUID is defined in InstallProtocolInterface() in the UEFI 2.0
-  /// specification.
-  ///
-  EFI_GUID              Name;
-
-  ///
-  /// The base address of memory allocated by this HOB. Type
-  /// EFI_PHYSICAL_ADDRESS is defined in AllocatePages() in the UEFI 2.0
-  /// specification.
-  ///
-  EFI_PHYSICAL_ADDRESS  MemoryBaseAddress;
-
-  ///
-  /// The length in bytes of memory allocated by this HOB.
-  ///
-  UINT64                MemoryLength;
-
-  ///
-  /// Defines the type of memory allocated by this HOB. The memory type definition
-  /// follows the EFI_MEMORY_TYPE definition. Type EFI_MEMORY_TYPE is defined
-  /// in AllocatePages() in the UEFI 2.0 specification.
-  ///
-  EFI_MEMORY_TYPE       MemoryType;
-
-  ///
-  /// Padding for Itanium processor family
-  ///
-  UINT8                 Reserved[4];
-} EFI_HOB_MEMORY_ALLOCATION_HEADER;
-
-///
-/// Describes all memory ranges used during the HOB producer
-/// phase that exist outside the HOB list. This HOB type
-/// describes how memory is used, not the physical attributes of memory.
-///
-typedef struct {
-  ///
-  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
-  ///
-  EFI_HOB_GENERIC_HEADER            Header;
-  ///
-  /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
-  /// various attributes of the logical memory allocation.
-  ///
-  EFI_HOB_MEMORY_ALLOCATION_HEADER  AllocDescriptor;
-  //
-  // Additional data pertaining to the "Name" Guid memory
-  // may go here.
-  //
-} EFI_HOB_MEMORY_ALLOCATION;
-
-///
-/// The resource type.
-///
-typedef UINT32 EFI_RESOURCE_TYPE;
-
-//
-// Value of ResourceType in EFI_HOB_RESOURCE_DESCRIPTOR.
-//
-#define EFI_RESOURCE_SYSTEM_MEMORY          0x00000000
-#define EFI_RESOURCE_MEMORY_MAPPED_IO       0x00000001
-#define EFI_RESOURCE_IO                     0x00000002
-#define EFI_RESOURCE_FIRMWARE_DEVICE        0x00000003
-#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT  0x00000004
-#define EFI_RESOURCE_MEMORY_RESERVED        0x00000005
-#define EFI_RESOURCE_IO_RESERVED            0x00000006
-#define EFI_RESOURCE_MAX_MEMORY_TYPE        0x00000007
-
-///
-/// A type of recount attribute type.
-///
-typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE;
-
-//
-// These types can be ORed together as needed.
-//
-// The first three enumerations describe settings
-//
-#define EFI_RESOURCE_ATTRIBUTE_PRESENT              0x00000001
-#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED          0x00000002
-#define EFI_RESOURCE_ATTRIBUTE_TESTED               0x00000004
-//
-// The rest of the settings describe capabilities
-//
-#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC           0x00000008
-#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC         0x00000010
-#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1           0x00000020
-#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2           0x00000040
-#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED           0x00000080
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED          0x00000100
-#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED      0x00000200
-#define EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE              0x00000400
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE        0x00000800
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE  0x00001000
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE     0x00002000
-#define EFI_RESOURCE_ATTRIBUTE_16_BIT_IO                0x00004000
-#define EFI_RESOURCE_ATTRIBUTE_32_BIT_IO                0x00008000
-#define EFI_RESOURCE_ATTRIBUTE_64_BIT_IO                0x00010000
-#define EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED        0x00020000
-
-///
-/// Describes the resource properties of all fixed,
-/// nonrelocatable resource ranges found on the processor
-/// host bus during the HOB producer phase.
-///
-typedef struct {
-  ///
-  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_RESOURCE_DESCRIPTOR.
-  ///
-  EFI_HOB_GENERIC_HEADER      Header;
-  ///
-  /// A GUID representing the owner of the resource. This GUID is used by HOB
-  /// consumer phase components to correlate device ownership of a resource.
-  ///
-  EFI_GUID                    Owner;
-  ///
-  /// The resource type enumeration as defined by EFI_RESOURCE_TYPE.
-  ///
-  EFI_RESOURCE_TYPE           ResourceType;
-  ///
-  /// Resource attributes as defined by EFI_RESOURCE_ATTRIBUTE_TYPE.
-  ///
-  EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;
-  ///
-  /// The physical start address of the resource region.
-  ///
-  EFI_PHYSICAL_ADDRESS        PhysicalStart;
-  ///
-  /// The number of bytes of the resource region.
-  ///
-  UINT64                      ResourceLength;
-} EFI_HOB_RESOURCE_DESCRIPTOR;
-
-///
-/// Allows writers of executable content in the HOB producer phase to
-/// maintain and manage HOBs with specific GUID.
-///
-typedef struct {
-  ///
-  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_GUID_EXTENSION.
-  ///
-  EFI_HOB_GENERIC_HEADER      Header;
-  ///
-  /// A GUID that defines the contents of this HOB.
-  ///
-  EFI_GUID                    Name;
-  //
-  // Guid specific data goes here
-  //
-} EFI_HOB_GUID_TYPE;
-
-///
-/// Union of all the possible HOB Types.
-///
-typedef union {
-  EFI_HOB_GENERIC_HEADER              *Header;
-  EFI_HOB_MEMORY_ALLOCATION           *MemoryAllocation;
-  EFI_HOB_RESOURCE_DESCRIPTOR         *ResourceDescriptor;
-  EFI_HOB_GUID_TYPE                   *Guid;
-  UINT8                               *Raw;
-} EFI_PEI_HOB_POINTERS;
-
-
-/**
-  Returns the type of a HOB.
-
-  This macro returns the HobType field from the HOB header for the
-  HOB specified by HobStart.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @return HobType.
-
-**/
-#define GET_HOB_TYPE(HobStart) \
-  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobType)
-
-/**
-  Returns the length, in bytes, of a HOB.
-
-  This macro returns the HobLength field from the HOB header for the
-  HOB specified by HobStart.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @return HobLength.
-
-**/
-#define GET_HOB_LENGTH(HobStart) \
-  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobLength)
-
-/**
-  Returns a pointer to the next HOB in the HOB list.
-
-  This macro returns a pointer to HOB that follows the
-  HOB specified by HobStart in the HOB List.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @return A pointer to the next HOB in the HOB list.
-
-**/
-#define GET_NEXT_HOB(HobStart) \
-  (VOID *)(*(UINT8 **)&(HobStart) + GET_HOB_LENGTH (HobStart))
-
-/**
-  Determines if a HOB is the last HOB in the HOB list.
-
-  This macro determine if the HOB specified by HobStart is the
-  last HOB in the HOB list.  If HobStart is last HOB in the HOB list,
-  then TRUE is returned.  Otherwise, FALSE is returned.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @retval TRUE       The HOB specified by HobStart is the last HOB in the HOB list.
-  @retval FALSE      The HOB specified by HobStart is not the last HOB in the HOB list.
-
-**/
-#define END_OF_HOB_LIST(HobStart)  (GET_HOB_TYPE (HobStart) == (UINT16)EFI_HOB_TYPE_END_OF_HOB_LIST)
-
-/**
-  Returns a pointer to data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  This macro returns a pointer to the data buffer in a HOB specified by HobStart.
-  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  @param   GuidHob   A pointer to a HOB.
-
-  @return  A pointer to the data buffer in a HOB.
-
-**/
-#define GET_GUID_HOB_DATA(HobStart) \
-  (VOID *)(*(UINT8 **)&(HobStart) + sizeof (EFI_HOB_GUID_TYPE))
-
-/**
-  Returns the size of the data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  This macro returns the size, in bytes, of the data buffer in a HOB specified by HobStart.
-  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  @param   GuidHob   A pointer to a HOB.
-
-  @return  The size of the data buffer.
-**/
-#define GET_GUID_HOB_DATA_SIZE(HobStart) \
-  (UINT16)(GET_HOB_LENGTH (HobStart) - sizeof (EFI_HOB_GUID_TYPE))
-
-/**
-  Returns the pointer to the HOB list.
-
-  This function returns the pointer to first HOB in the list.
-
-  If the pointer to the HOB list is NULL, then ASSERT().
-
-  @return The pointer to the HOB list.
-
-**/
-VOID *
-EFIAPI
-GetHobList (
-  VOID
-  );
-
-/**
-  Returns the next instance of a HOB type from the starting HOB.
-
-  This function searches the first instance of a HOB type from the starting HOB pointer.
-  If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
-  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
-  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
-  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
-
-  If HobStart is NULL, then ASSERT().
-
-  @param  Type          The HOB type to return.
-  @param  HobStart      The starting HOB pointer to search from.
-
-  @return The next instance of a HOB type from the starting HOB.
-
-**/
-VOID *
-EFIAPI
-GetNextHob (
-  UINT16                 Type,
-  CONST VOID             *HobStart
-  );
-
-/**
-  Returns the first instance of a HOB type among the whole HOB list.
-
-  This function searches the first instance of a HOB type among the whole HOB list.
-  If there does not exist such HOB type in the HOB list, it will return NULL.
-
-  If the pointer to the HOB list is NULL, then ASSERT().
-
-  @param  Type          The HOB type to return.
-
-  @return The next instance of a HOB type from the starting HOB.
-
-**/
-VOID *
-EFIAPI
-GetFirstHob (
-  UINT16                 Type
-  );
-
-/**
-  Returns the next instance of the matched GUID HOB from the starting HOB.
-
-  This function searches the first instance of a HOB from the starting HOB pointer.
-  Such HOB should satisfy two conditions:
-  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
-  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
-  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
-  to extract the data section and its size info respectively.
-  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
-  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
-  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
-
-  If Guid is NULL, then ASSERT().
-  If HobStart is NULL, then ASSERT().
-
-  @param  Guid          The GUID to match with in the HOB list.
-  @param  HobStart      A pointer to a Guid.
-
-  @return The next instance of the matched GUID HOB from the starting HOB.
-
-**/
-VOID *
-EFIAPI
-GetNextGuidHob (
-  CONST EFI_GUID         *Guid,
-  CONST VOID             *HobStart
-  );
-
-/**
-  Returns the first instance of the matched GUID HOB among the whole HOB list.
-
-  This function searches the first instance of a HOB among the whole HOB list.
-  Such HOB should satisfy two conditions:
-  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
-  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
-  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
-  to extract the data section and its size info respectively.
-
-  If the pointer to the HOB list is NULL, then ASSERT().
-  If Guid is NULL, then ASSERT().
-
-  @param  Guid          The GUID to match with in the HOB list.
-
-  @return The first instance of the matched GUID HOB among the whole HOB list.
-
-**/
-VOID *
-EFIAPI
-GetFirstGuidHob (
-  CONST EFI_GUID         *Guid
-  );
-
-BOOLEAN
-EFIAPI
-CompareGuid (
-  CONST EFI_GUID  *Guid1,
-  CONST EFI_GUID  *Guid2
-  );
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspinfoheader.h b/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspinfoheader.h
deleted file mode 100644
index 0f7b3a9..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspinfoheader.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef _FSP_INFO_HEADER_H_
-#define _FSP_INFO_HEADER_H_
-
-#pragma pack(1)
-
-typedef struct  {
-
-  UINT32  Signature;       // Off 0x94
-  UINT32  HeaderLength;
-  UINT8   Reserved1[3];
-  UINT8   HeaderRevision;
-  UINT32  ImageRevision;
-
-  CHAR8   ImageId[8];      // Off 0xA4
-  UINT32  ImageSize;
-  UINT32  ImageBase;
-
-  UINT32  ImageAttribute;  // Off 0xB4
-  UINT32  CfgRegionOffset;
-  UINT32  CfgRegionSize;
-  UINT32  ApiEntryNum;
-
-  UINT32  NemInitEntry;    // Off 0xC4
-  UINT32  FspInitEntry;
-  UINT32  NotifyPhaseEntry;
-  UINT32  Reserved2;
-
-} FSP_INFO_HEADER;
-
-#pragma pack()
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspplatform.h b/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspplatform.h
deleted file mode 100644
index 06cf67e..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fspplatform.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef _FSP_PLATFORM_H_
-#define _FSP_PLATFORM_H_
-
-#include "fsptypes.h"
-#include "fspapi.h"
-#include "mem_config.h"
-
-#pragma pack(1)
-
-typedef struct {
-    MEM_CONFIG  *MemoryConfig;
-} FSP_INIT_RT_PLATFORM_BUFFER;
-
-typedef struct {
-    uint8_t  HTEnable;
-    uint8_t  TurboEnable;
-    uint8_t  MemoryDownEnable;
-    uint8_t  FastBootEnable;
-} PLATFORM_CONFIG;
-
-typedef struct {
-    const PLATFORM_CONFIG  *PlatformConfig;
-} FSP_INIT_RT_CONFIG_BUFFER;
-
-typedef struct {
-    FSP_INIT_RT_COMMON_BUFFER  Common;
-    FSP_INIT_RT_CONFIG_BUFFER  PlatformConfiguration;
-    FSP_INIT_RT_PLATFORM_BUFFER  Platform;
-} FSP_INIT_RT_BUFFER;
-
-#pragma pack()
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fsptypes.h b/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fsptypes.h
deleted file mode 100644
index a3a54c0..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/fsptypes.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-/** \file  fsptypes.h
- *
- *
- */
-
-#ifndef __FSP_TYPES_H__
-#define __FSP_TYPES_H__
-
-///
-/// 8-byte unsigned value.
-///
-typedef unsigned long long  UINT64;
-///
-/// 8-byte signed value.
-///
-typedef long long           INT64;
-///
-/// 4-byte unsigned value.
-///
-typedef unsigned int        UINT32;
-///
-/// 4-byte signed value.
-///
-typedef int                 INT32;
-///
-/// 2-byte unsigned value.
-///
-typedef unsigned short      UINT16;
-///
-/// 2-byte Character.  Unless otherwise specified all strings are stored in the
-/// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
-///
-typedef unsigned short      CHAR16;
-///
-/// 2-byte signed value.
-///
-typedef short               INT16;
-///
-/// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
-/// values are undefined.
-///
-typedef unsigned char       BOOLEAN;
-///
-/// 1-byte unsigned value.
-///
-typedef unsigned char       UINT8;
-///
-/// 1-byte Character
-///
-typedef char                CHAR8;
-///
-/// 1-byte signed value
-///
-typedef char                INT8;
-
-typedef void                VOID;
-
-typedef UINT64              EFI_PHYSICAL_ADDRESS;
-
-typedef struct {
-  UINT32  Data1;
-  UINT16  Data2;
-  UINT16  Data3;
-  UINT8   Data4[8];
-} EFI_GUID;
-
-#define CONST     const
-#define STATIC    static
-
-#define TRUE  ((BOOLEAN)(1==1))
-#define FALSE ((BOOLEAN)(0==1))
-
-#define FSPAPI __attribute__((cdecl))
-#define EFIAPI __attribute__((cdecl))
-
-#define ASSERT(Expression)      \
-  do {                          \
-    if (!(Expression)) {        \
-      for (;;);                 \
-    }                           \
-  } while (FALSE)
-
-typedef UINT32 FSP_STATUS;
-typedef UINT32 EFI_STATUS;
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/mem_config.h b/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/mem_config.h
deleted file mode 100644
index 26deb90..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/mem_config.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-//
-// mem_config.h
-//
-
-#ifndef _MEM_CONFIG_H_
-#define _MEM_CONFIG_H_
-
-typedef enum {
-  fi1067_IVB=0,
-  fi1333_IVB,
-  fi1400_IVB,
-  fi1600_IVB,
-  fi1800_IVB,
-  fi1867_IVB,
-  fi2000_IVB,
-  fi2133_IVB,
-  fi2200_IVB,
-  fi2400_IVB,
-  fi2600_IVB,
-  fi2667_IVB,
-  fi2800_IVB,
-  fiUnsupport_IVB,
-}TFrequencyIndex_IVB;
-
-#define NUM_IVB_MEM_CLK_FREQUENCIES 13
-
-// DDR3 memory SPD data
-//
-// NOTE: This only includes the SPD bytes that are relevant to the MRC
-typedef struct {                             // BYTE
-    uint8_t  SPDGeneral;                     // 0   Number of Serial PD Bytes Written / SPD Device Size / CRC Coverage 1, 2
-    uint8_t  SPDRevision;                    // 1   SPD Revision
-    uint8_t  DRAMDeviceType;                 // 2   DRAM Device Type
-    uint8_t  ModuleType;                     // 3   Module Type
-    uint8_t  SDRAMDensityAndBanks;           // 4   SDRAM Density and Banks
-    uint8_t  SDRAMAddressing;                // 5   SDRAM Addressing
-    uint8_t  VDD;                            // 6   Module Nominal Voltage
-    uint8_t  ModuleOrganization;             // 7   Module Organization
-    uint8_t  ModuleMemoryBusWidth;           // 8   Module Memory Bus Width
-    uint8_t  FineTimebase;                   // 9   Fine Timebase (FTB) Dividend / Divisor
-    uint8_t  TimebaseDividend;               // 10  Medium Timebase (MTB) Dividend
-    uint8_t  TimebaseDivisor;                // 11  Medium Timebase (MTB) Divisor
-    uint8_t  SDRAMMinimumCycleTime;          // 12  SDRAM Minimum Cycle Time (tCKmin)
-    uint8_t  Reserved0;                      // 13  Reserved0
-    uint8_t  CASLatenciesLSB;                // 14  CAS Latencies Supported, Least Significant Byte
-    uint8_t  CASLatenciesMSB;                // 15  CAS Latencies Supported, Most Significant Byte
-    uint8_t  MinimumCASLatencyTime;          // 16  Minimum CAS Latency Time (tAAmin)
-    uint8_t  MinimumWriteRecoveryTime;       // 17  Minimum Write Recovery Time (tWRmin)
-    uint8_t  MinimumRASToCASDelayTime;       // 18  Minimum RAS# to CAS# Delay Time (tRCDmin)
-    uint8_t  MinimumRowToRowDelayTime;       // 19  Minimum Row Active to Row Active Delay Time (tRRDmin)
-    uint8_t  MinimumRowPrechargeDelayTime;   // 20  Minimum Row Precharge Delay Time (tRPmin)
-    uint8_t  UpperNibblesFortRASAndtRC;      // 21  Upper Nibbles for tRAS and tRC
-    uint8_t  tRASmin;                        // 22  Minimum Active to Precharge Delay Time (tRASmin), Least Significant Byte
-    uint8_t  tRCmin;                         // 23  Minimum Active to Active/Refresh Delay Time (tRCmin), Least Significant Byte
-    uint8_t  tRFCminLeastSignificantByte;    // 24  Minimum Refresh Recovery Delay Time (tRFCmin), Least Significant Byte
-    uint8_t  tRFCminMostSignificantByte;     // 25  Minimum Refresh Recovery Delay Time (tRFCmin), Most Significant Byte
-    uint8_t  tWTRmin;                        // 26  Minimum Internal Write to Read Command Delay Time (tWTRmin)
-    uint8_t  tRTPmin;                        // 27  Minimum Internal Read to Precharge Command Delay Time (tRTPmin)
-    uint8_t  UpperNibbleFortFAW;             // 28  Upper Nibble for tFAW
-    uint8_t  tFAWmin;                        // 29  Minimum Four Activate Window Delay Time (tFAWmin)
-    uint8_t  SDRAMOptionalFeatures;          // 30  SDRAM Optional Features
-    uint8_t  SDRAMThermalAndRefreshOptions;  // 31  SDRAMThermalAndRefreshOptions
-    uint8_t  ModuleThermalSensor;            // 32  ModuleThermalSensor
-    uint8_t  SDRAMDeviceType;                // 33  SDRAM Device Type
-    int8_t   tCKminFine;                     // 34  Fine Offset for SDRAM Minimum Cycle Time (tCKmin)
-    int8_t   tAAminFine;                     // 35  Fine Offset for Minimum CAS Latency Time (tAAmin)
-    int8_t   tRCDminFine;                    // 36  Fine Offset for Minimum RAS# to CAS# Delay Time (tRCDmin)
-    int8_t   tRPminFine;                     // 37  Fine Offset for Minimum Row Precharge Delay Time (tRPmin)
-    int8_t   tRCminFine;                     // 38  Fine Offset for Minimum Active to Active/Refresh Delay Time (tRCmin)
-    uint8_t  ReferenceRawCardUsed;           // 62  Reference Raw Card Used
-    uint8_t  AddressMappingEdgeConnector;    // 63  Address Mapping from Edge Connector to DRAM
-    uint8_t  ThermalHeatSpreaderSolution;    // 64  ThermalHeatSpreaderSolution
-    uint8_t  ModuleManufacturerIdCodeLsb;    // 117 Module Manufacturer ID Code, Least Significant Byte
-    uint8_t  ModuleManufacturerIdCodeMsb;    // 118 Module Manufacturer ID Code, Most Significant Byte
-    uint8_t  ModuleManufacturingLocation;    // 119 Module Manufacturing Location
-    uint8_t  ModuleManufacturingDateYear;    // 120 Module Manufacturing Date Year
-    uint8_t  ModuleManufacturingDateWW;      // 121 Module Manufacturing Date creation work week
-    uint8_t  ModuleSerialNumberA;            // 122 Module Serial Number A
-    uint8_t  ModuleSerialNumberB;            // 123 Module Serial Number B
-    uint8_t  ModuleSerialNumberC;            // 124 Module Serial Number C
-    uint8_t  ModuleSerialNumberD;            // 125 Module Serial Number D
-    uint8_t  CRCA;                           // 126 CRC A
-    uint8_t  CRCB;                           // 127 CRC B
-} DDR3_SPD;
-
-// Configuration for each memory channel/bank
-typedef struct {
-    uint32_t  Exists;
-    DDR3_SPD  SpdData;
-    uint8_t   InitClkPiValue[NUM_IVB_MEM_CLK_FREQUENCIES];
-} MEM_BANK_CONFIG;
-
-// Memory configuration
-typedef struct {
-    MEM_BANK_CONFIG  ChannelABank0;
-    MEM_BANK_CONFIG  ChannelABank1;
-    MEM_BANK_CONFIG  ChannelBBank0;
-    MEM_BANK_CONFIG  ChannelBBank1;
-} MEM_CONFIG;
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/peifsp.h b/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/peifsp.h
deleted file mode 100644
index dc3e60f..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/include/peifsp.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-/** \file  peifsp.h
- *
- *
- */
-#include <stdint.h>
-#include "fsptypes.h"
-#include "fspfv.h"
-#include "fspffs.h"
-#include "fsphob.h"
-#include "fspapi.h"
-#include "fspplatform.h"
-#include "fspinfoheader.h"
diff --git a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/srx/fsphob.c b/src/vendorcode/intel/fsp/ivybridge_bd82x6x/srx/fsphob.c
deleted file mode 100644
index 4214b3a..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_bd82x6x/srx/fsphob.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/**
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-/***********************************************************************
- *
- * fsphob.c
- *
- * HOB infrastructure code.
- *
- **********************************************************************/
-#include <string.h>
-
-#include "fsptypes.h"
-#include "fsphob.h"
-
-//
-// Pointer to the HOB should be initialized with the output of FSP INIT PARAMS
-//
-extern volatile void *FspHobListPtr;
-
-//
-// Function prototype
-//
-UINT64
-EFIAPI
-ReadUnaligned64 (
-  CONST UINT64              *Buffer
-  );
-
-/**
-  Reads a 64-bit value from memory that may be unaligned.
-
-  This function returns the 64-bit value pointed to by Buffer. The function
-  guarantees that the read operation does not produce an alignment fault.
-
-  If the Buffer is NULL, then ASSERT().
-
-  @param  Buffer  Pointer to a 64-bit value that may be unaligned.
-
-  @return The 64-bit value read from Buffer.
-
-**/
-UINT64
-EFIAPI
-ReadUnaligned64 (
-  CONST UINT64              *Buffer
-  )
-{
-  ASSERT (Buffer != NULL);
-
-  return *Buffer;
-}
-
-/**
-  Compares two GUIDs.
-
-  This function compares Guid1 to Guid2.  If the GUIDs are identical then TRUE is returned.
-  If there are any bit differences in the two GUIDs, then FALSE is returned.
-
-  If Guid1 is NULL, then ASSERT().
-  If Guid2 is NULL, then ASSERT().
-
-  @param  Guid1       A pointer to a 128 bit GUID.
-  @param  Guid2       A pointer to a 128 bit GUID.
-
-  @retval TRUE        Guid1 and Guid2 are identical.
-  @retval FALSE       Guid1 and Guid2 are not identical.
-
-**/
-BOOLEAN
-EFIAPI
-CompareGuid (
-  CONST EFI_GUID  *Guid1,
-  CONST EFI_GUID  *Guid2
-  )
-{
-  UINT64  LowPartOfGuid1;
-  UINT64  LowPartOfGuid2;
-  UINT64  HighPartOfGuid1;
-  UINT64  HighPartOfGuid2;
-
-  LowPartOfGuid1  = ReadUnaligned64 ((CONST UINT64*) Guid1);
-  LowPartOfGuid2  = ReadUnaligned64 ((CONST UINT64*) Guid2);
-  HighPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1 + 1);
-  HighPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2 + 1);
-
-  return (BOOLEAN) (LowPartOfGuid1 == LowPartOfGuid2 && HighPartOfGuid1 == HighPartOfGuid2);
-}
-
-/**
-  Returns the pointer to the HOB list.
-**/
-VOID *
-EFIAPI
-GetHobList (
-  VOID
-  )
-{
-  ASSERT (FspHobListPtr != NULL);
-  return ((VOID *)FspHobListPtr);
-}
-
-/**
-  Returns the next instance of a HOB type from the starting HOB.
-**/
-VOID *
-EFIAPI
-GetNextHob (
-  UINT16                 Type,
-  CONST VOID             *HobStart
-  )
-{
-  EFI_PEI_HOB_POINTERS  Hob;
-
-  ASSERT (HobStart != NULL);
-
-  Hob.Raw = (UINT8 *) HobStart;
-  //
-  // Parse the HOB list until end of list or matching type is found.
-  //
-  while (!END_OF_HOB_LIST (Hob)) {
-    if (Hob.Header->HobType == Type) {
-      return Hob.Raw;
-    }
-    Hob.Raw = GET_NEXT_HOB (Hob);
-  }
-  return NULL;
-}
-
-/**
-  Returns the first instance of a HOB type among the whole HOB list.
-**/
-VOID *
-EFIAPI
-GetFirstHob (
-  UINT16                 Type
-  )
-{
-  VOID      *HobList;
-
-  HobList = GetHobList ();
-  return GetNextHob (Type, HobList);
-}
-
-/**
-  Returns the next instance of the matched GUID HOB from the starting HOB.
-**/
-VOID *
-EFIAPI
-GetNextGuidHob (
-  CONST EFI_GUID         *Guid,
-  CONST VOID             *HobStart
-  )
-{
-  EFI_PEI_HOB_POINTERS  GuidHob;
-
-  GuidHob.Raw = (UINT8 *) HobStart;
-  while ((GuidHob.Raw = GetNextHob (EFI_HOB_TYPE_GUID_EXTENSION, GuidHob.Raw)) != NULL) {
-    if (CompareGuid (Guid, &GuidHob.Guid->Name)) {
-      break;
-    }
-    GuidHob.Raw = GET_NEXT_HOB (GuidHob);
-  }
-  return GuidHob.Raw;
-}
-
-/**
-  Returns the first instance of the matched GUID HOB among the whole HOB list.
-**/
-VOID *
-EFIAPI
-GetFirstGuidHob (
-  CONST EFI_GUID         *Guid
-  )
-{
-  VOID      *HobList;
-
-  HobList = GetHobList ();
-  return GetNextGuidHob (Guid, HobList);
-}
diff --git a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fsp_vpd.h b/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fsp_vpd.h
deleted file mode 100644
index fdee5f4..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fsp_vpd.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef __VPDHEADER_H__
-#define __VPDHEADER_H__
-
-#pragma pack(1)
-
-typedef struct _UPD_DATA_REGION {
-  UINT64   Signature;                             /* Offset 0x0000 */
-  UINT64   Reserved;                              /* Offset 0x0008 */
-  UINT8    HTEnable;                              /* Offset 0x0010 */
-  UINT8    TurboEnable;                           /* Offset 0x0011 */
-  UINT8    MemoryDownEnable;                      /* Offset 0x0012 */
-  UINT8    FastBootEnable;                        /* Offset 0x0013 */
-  UINT16   PcdRegionTerminator;                   /* Offset 0x0310 */
-} UPD_DATA_REGION;
-
-
-#define VPD_IMAGE_SIGN  0x565053462d325453        /* 'ST2-FSPV' */
-#define VPD_IMAGE_REV   0x00000001
-
-typedef struct _VPD_DATA_REGION {
-  UINT64   PcdVpdRegionSign;                      /* Offset 0x0000 */
-  UINT32   PcdImageRevision;                      /* Offset 0x0008 */
-  UINT32   PcdUpdRegionOffset;                    /* Offset 0x000C */
-  UINT8    Padding0[16];                          /* Offset 0x0010 */
-  UINT32   PcdFspReservedMemoryLength;            /* Offset 0x0020 */
-} VPD_DATA_REGION;
-
-#pragma pack()
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspapi.h b/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspapi.h
deleted file mode 100644
index 18a1582..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspapi.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
-
-Copyright (c) 2008 - 2013, Intel Corporation. All rights reserved.
-This software and associated documentation (if any) is furnished
-under a license and may only be used or copied in accordance
-with the terms of the license. Except as permitted by such
-license, no part of this software or documentation may be
-reproduced, stored in a retrieval system, or transmitted in any
-form or by any means without the express written consent of
-Intel Corporation.
-
-**/
-
-#ifndef _FSP_API_H_
-#define _FSP_API_H_
-
-#pragma pack(1)
-
-typedef VOID (* CONTINUATION_PROC)(EFI_STATUS Status, VOID *HobListPtr);
-
-typedef struct {
-  VOID               *NvsBufferPtr;
-  VOID               *RtBufferPtr;
-  CONTINUATION_PROC   ContinuationFunc;
-} FSP_INIT_PARAMS;
-
-typedef struct {
-  UINT32            *StackTop;
-  UINT32             BootMode;  /* Refer to boot mode defined in MdePkg\Include\Pi\PiBootMode.h */
-  VOID              *UpdDataRgnPtr;
-  UINT32             Reserved[7];
-} FSP_INIT_RT_COMMON_BUFFER;
-
-typedef enum {
-  EnumInitPhaseAfterPciEnumeration = 0x20,
-  EnumInitPhaseReadyToBoot = 0x40
-} FSP_INIT_PHASE;
-
-typedef struct {
-  FSP_INIT_PHASE     Phase;
-} NOTIFY_PHASE_PARAMS;
-
-#pragma pack()
-
-
-typedef FSP_STATUS (FSPAPI *FSP_FSP_INIT)    (FSP_INIT_PARAMS     *FspInitParamPtr);
-typedef FSP_STATUS (FSPAPI *FSP_NOTFY_PHASE) (NOTIFY_PHASE_PARAMS *NotifyPhaseParamPtr);
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspffs.h b/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspffs.h
deleted file mode 100644
index 7a7c367..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspffs.h
+++ /dev/null
@@ -1,506 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-
-#ifndef __PI_FIRMWARE_FILE_H__
-#define __PI_FIRMWARE_FILE_H__
-
-#pragma pack(1)
-///
-/// Used to verify the integrity of the file.
-///
-typedef union {
-  struct {
-    ///
-    /// The IntegrityCheck.Checksum.Header field is an 8-bit checksum of the file
-    /// header. The State and IntegrityCheck.Checksum.File fields are assumed
-    /// to be zero and the checksum is calculated such that the entire header sums to zero.
-    ///
-    UINT8   Header;
-    ///
-    /// If the FFS_ATTRIB_CHECKSUM (see definition below) bit of the Attributes
-    /// field is set to one, the IntegrityCheck.Checksum.File field is an 8-bit
-    /// checksum of the file data.
-    /// If the FFS_ATTRIB_CHECKSUM bit of the Attributes field is cleared to zero,
-    /// the IntegrityCheck.Checksum.File field must be initialized with a value of
-    /// 0xAA. The IntegrityCheck.Checksum.File field is valid any time the
-    /// EFI_FILE_DATA_VALID bit is set in the State field.
-    ///
-    UINT8   File;
-  } Checksum;
-  ///
-  /// This is the full 16 bits of the IntegrityCheck field.
-  ///
-  UINT16    Checksum16;
-} EFI_FFS_INTEGRITY_CHECK;
-
-///
-/// FFS_FIXED_CHECKSUM is the checksum value used when the
-/// FFS_ATTRIB_CHECKSUM attribute bit is clear.
-///
-#define FFS_FIXED_CHECKSUM  0xAA
-
-typedef UINT8 EFI_FV_FILETYPE;
-typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
-typedef UINT8 EFI_FFS_FILE_STATE;
-
-///
-/// File Types Definitions
-///
-#define EFI_FV_FILETYPE_ALL                   0x00
-#define EFI_FV_FILETYPE_RAW                   0x01
-#define EFI_FV_FILETYPE_FREEFORM              0x02
-#define EFI_FV_FILETYPE_SECURITY_CORE         0x03
-#define EFI_FV_FILETYPE_PEI_CORE              0x04
-#define EFI_FV_FILETYPE_DXE_CORE              0x05
-#define EFI_FV_FILETYPE_PEIM                  0x06
-#define EFI_FV_FILETYPE_DRIVER                0x07
-#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER  0x08
-#define EFI_FV_FILETYPE_APPLICATION           0x09
-#define EFI_FV_FILETYPE_SMM                   0x0A
-#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B
-#define EFI_FV_FILETYPE_COMBINED_SMM_DXE      0x0C
-#define EFI_FV_FILETYPE_SMM_CORE              0x0D
-#define EFI_FV_FILETYPE_OEM_MIN               0xc0
-#define EFI_FV_FILETYPE_OEM_MAX               0xdf
-#define EFI_FV_FILETYPE_DEBUG_MIN             0xe0
-#define EFI_FV_FILETYPE_DEBUG_MAX             0xef
-#define EFI_FV_FILETYPE_FFS_MIN               0xf0
-#define EFI_FV_FILETYPE_FFS_MAX               0xff
-#define EFI_FV_FILETYPE_FFS_PAD               0xf0
-///
-/// FFS File Attributes.
-///
-#define FFS_ATTRIB_LARGE_FILE         0x01
-#define FFS_ATTRIB_FIXED              0x04
-#define FFS_ATTRIB_DATA_ALIGNMENT     0x38
-#define FFS_ATTRIB_CHECKSUM           0x40
-
-///
-/// FFS File State Bits.
-///
-#define EFI_FILE_HEADER_CONSTRUCTION  0x01
-#define EFI_FILE_HEADER_VALID         0x02
-#define EFI_FILE_DATA_VALID           0x04
-#define EFI_FILE_MARKED_FOR_UPDATE    0x08
-#define EFI_FILE_DELETED              0x10
-#define EFI_FILE_HEADER_INVALID       0x20
-
-
-///
-/// Each file begins with the header that describe the
-/// contents and state of the files.
-///
-typedef struct {
-  ///
-  /// This GUID is the file name. It is used to uniquely identify the file.
-  ///
-  EFI_GUID                Name;
-  ///
-  /// Used to verify the integrity of the file.
-  ///
-  EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
-  ///
-  /// Identifies the type of file.
-  ///
-  EFI_FV_FILETYPE         Type;
-  ///
-  /// Declares various file attribute bits.
-  ///
-  EFI_FFS_FILE_ATTRIBUTES Attributes;
-  ///
-  /// The length of the file in bytes, including the FFS header.
-  ///
-  UINT8                   Size[3];
-  ///
-  /// Used to track the state of the file throughout the life of the file from creation to deletion.
-  ///
-  EFI_FFS_FILE_STATE      State;
-} EFI_FFS_FILE_HEADER;
-
-typedef struct {
-  ///
-  /// This GUID is the file name. It is used to uniquely identify the file. There may be only
-  /// one instance of a file with the file name GUID of Name in any given firmware
-  /// volume, except if the file type is EFI_FV_FILETYPE_FFS_PAD.
-  ///
-  EFI_GUID                  Name;
-
-  ///
-  /// Used to verify the integrity of the file.
-  ///
-  EFI_FFS_INTEGRITY_CHECK   IntegrityCheck;
-
-  ///
-  /// Identifies the type of file.
-  ///
-  EFI_FV_FILETYPE           Type;
-
-  ///
-  /// Declares various file attribute bits.
-  ///
-  EFI_FFS_FILE_ATTRIBUTES   Attributes;
-
-  ///
-  /// The length of the file in bytes, including the FFS header.
-  /// The length of the file data is either (Size - sizeof(EFI_FFS_FILE_HEADER)). This calculation means a
-  /// zero-length file has a Size of 24 bytes, which is sizeof(EFI_FFS_FILE_HEADER).
-  /// Size is not required to be a multiple of 8 bytes. Given a file F, the next file header is
-  /// located at the next 8-byte aligned firmware volume offset following the last byte of the file F.
-  ///
-  UINT8                     Size[3];
-
-  ///
-  /// Used to track the state of the file throughout the life of the file from creation to deletion.
-  ///
-  EFI_FFS_FILE_STATE        State;
-
-  ///
-  /// If FFS_ATTRIB_LARGE_FILE is set in Attributes, then ExtendedSize exists and Size must be set to zero.
-  /// If FFS_ATTRIB_LARGE_FILE is not set then EFI_FFS_FILE_HEADER is used.
-  ///
-  UINT32                    ExtendedSize;
-} EFI_FFS_FILE_HEADER2;
-
-#define IS_FFS_FILE2(FfsFileHeaderPtr) \
-    (((((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Attributes) & FFS_ATTRIB_LARGE_FILE) == FFS_ATTRIB_LARGE_FILE)
-
-#define FFS_FILE_SIZE(FfsFileHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Size) & 0x00ffffff))
-
-#define FFS_FILE2_SIZE(FfsFileHeaderPtr) \
-    (((EFI_FFS_FILE_HEADER2 *) (UINTN) FfsFileHeaderPtr)->ExtendedSize)
-
-typedef UINT8 EFI_SECTION_TYPE;
-
-///
-/// Pseudo type. It is used as a wild card when retrieving sections.
-///  The section type EFI_SECTION_ALL matches all section types.
-///
-#define EFI_SECTION_ALL                   0x00
-
-///
-/// Encapsulation section Type values.
-///
-#define EFI_SECTION_COMPRESSION           0x01
-
-#define EFI_SECTION_GUID_DEFINED          0x02
-
-#define EFI_SECTION_DISPOSABLE            0x03
-
-///
-/// Leaf section Type values.
-///
-#define EFI_SECTION_PE32                  0x10
-#define EFI_SECTION_PIC                   0x11
-#define EFI_SECTION_TE                    0x12
-#define EFI_SECTION_DXE_DEPEX             0x13
-#define EFI_SECTION_VERSION               0x14
-#define EFI_SECTION_USER_INTERFACE        0x15
-#define EFI_SECTION_COMPATIBILITY16       0x16
-#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17
-#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18
-#define EFI_SECTION_RAW                   0x19
-#define EFI_SECTION_PEI_DEPEX             0x1B
-#define EFI_SECTION_SMM_DEPEX             0x1C
-
-///
-/// Common section header.
-///
-typedef struct {
-  ///
-  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
-  /// including the EFI_COMMON_SECTION_HEADER.
-  ///
-  UINT8             Size[3];
-  EFI_SECTION_TYPE  Type;
-  ///
-  /// Declares the section type.
-  ///
-} EFI_COMMON_SECTION_HEADER;
-
-typedef struct {
-  ///
-  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
-  /// including the EFI_COMMON_SECTION_HEADER.
-  ///
-  UINT8             Size[3];
-
-  EFI_SECTION_TYPE  Type;
-
-  ///
-  /// If Size is 0xFFFFFF, then ExtendedSize contains the size of the section. If
-  /// Size is not equal to 0xFFFFFF, then this field does not exist.
-  ///
-  UINT32            ExtendedSize;
-} EFI_COMMON_SECTION_HEADER2;
-
-///
-/// Leaf section type that contains an
-/// IA-32 16-bit executable image.
-///
-typedef EFI_COMMON_SECTION_HEADER  EFI_COMPATIBILITY16_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2 EFI_COMPATIBILITY16_SECTION2;
-
-///
-/// CompressionType of EFI_COMPRESSION_SECTION.
-///
-#define EFI_NOT_COMPRESSED        0x00
-#define EFI_STANDARD_COMPRESSION  0x01
-///
-/// An encapsulation section type in which the
-/// section data is compressed.
-///
-typedef struct {
-  ///
-  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
-  ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  ///
-  /// The UINT32 that indicates the size of the section data after decompression.
-  ///
-  UINT32                      UncompressedLength;
-  ///
-  /// Indicates which compression algorithm is used.
-  ///
-  UINT8                       CompressionType;
-} EFI_COMPRESSION_SECTION;
-
-typedef struct {
-  ///
-  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
-  ///
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// UINT32 that indicates the size of the section data after decompression.
-  ///
-  UINT32                        UncompressedLength;
-  ///
-  /// Indicates which compression algorithm is used.
-  ///
-  UINT8                         CompressionType;
-} EFI_COMPRESSION_SECTION2;
-
-///
-/// An encapsulation section type in which the section data is disposable.
-/// A disposable section is an encapsulation section in which the section data may be disposed of during
-/// the process of creating or updating a firmware image without significant impact on the usefulness of
-/// the file. The Type field in the section header is set to EFI_SECTION_DISPOSABLE. This
-/// allows optional or descriptive data to be included with the firmware file which can be removed in
-/// order to conserve space. The contents of this section are implementation specific, but might contain
-/// debug data or detailed integration instructions.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_DISPOSABLE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_DISPOSABLE_SECTION2;
-
-///
-/// The leaf section which could be used to determine the dispatch order of DXEs.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_DXE_DEPEX_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_DXE_DEPEX_SECTION2;
-
-///
-/// The leaf section which contains a PI FV.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_FIRMWARE_VOLUME_IMAGE_SECTION2;
-
-///
-/// The leaf section which contains a single GUID.
-///
-typedef struct {
-  ///
-  /// Common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
-  ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  ///
-  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
-  ///
-  EFI_GUID                    SubTypeGuid;
-} EFI_FREEFORM_SUBTYPE_GUID_SECTION;
-
-typedef struct {
-  ///
-  /// The common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
-  ///
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
-  ///
-  EFI_GUID                      SubTypeGuid;
-} EFI_FREEFORM_SUBTYPE_GUID_SECTION2;
-
-///
-/// Attributes of EFI_GUID_DEFINED_SECTION.
-///
-#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED  0x01
-#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID    0x02
-///
-/// The leaf section which is encapsulation defined by specific GUID.
-///
-typedef struct {
-  ///
-  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
-  ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  ///
-  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
-  ///
-  EFI_GUID                    SectionDefinitionGuid;
-  ///
-  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
-  ///
-  UINT16                      DataOffset;
-  ///
-  /// The bit field that declares some specific characteristics of the section contents.
-  ///
-  UINT16                      Attributes;
-} EFI_GUID_DEFINED_SECTION;
-
-typedef struct {
-  ///
-  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
-  ///
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
-  ///
-  EFI_GUID                      SectionDefinitionGuid;
-  ///
-  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
-  ///
-  UINT16                        DataOffset;
-  ///
-  /// The bit field that declares some specific characteristics of the section contents.
-  ///
-  UINT16                        Attributes;
-} EFI_GUID_DEFINED_SECTION2;
-
-///
-/// The leaf section which contains PE32+ image.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PE32_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PE32_SECTION2;
-
-///
-/// The leaf section used to determine the dispatch order of PEIMs.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PEI_DEPEX_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PEI_DEPEX_SECTION2;
-
-///
-/// A leaf section type that contains a position-independent-code (PIC) image.
-/// A PIC image section is a leaf section that contains a position-independent-code (PIC) image.
-/// In addition to normal PE32+ images that contain relocation information, PEIM executables may be
-/// PIC and are referred to as PIC images. A PIC image is the same as a PE32+ image except that all
-/// relocation information has been stripped from the image and the image can be moved and will
-/// execute correctly without performing any relocation or other fix-ups. EFI_PIC_SECTION2 must
-/// be used if the section is 16MB or larger.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PIC_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PIC_SECTION2;
-
-///
-/// The leaf section which constains the position-independent-code image.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_TE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_TE_SECTION2;
-
-///
-/// The leaf section which contains an array of zero or more bytes.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_RAW_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_RAW_SECTION2;
-
-///
-/// The SMM dependency expression section is a leaf section that contains a dependency expression that
-/// is used to determine the dispatch order for SMM drivers. Before the SMRAM invocation of the
-/// SMM driver's entry point, this dependency expression must evaluate to TRUE. See the Platform
-/// Initialization Specification, Volume 2, for details regarding the format of the dependency expression.
-/// The dependency expression may refer to protocols installed in either the UEFI or the SMM protocol
-/// database. EFI_SMM_DEPEX_SECTION2 must be used if the section is 16MB or larger.
-///
-typedef EFI_COMMON_SECTION_HEADER EFI_SMM_DEPEX_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2 EFI_SMM_DEPEX_SECTION2;
-
-///
-/// The leaf section which contains a unicode string that
-/// is human readable file name.
-///
-typedef struct {
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-
-  ///
-  /// Array of unicode string.
-  ///
-  CHAR16                      FileNameString[1];
-} EFI_USER_INTERFACE_SECTION;
-
-typedef struct {
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  CHAR16                        FileNameString[1];
-} EFI_USER_INTERFACE_SECTION2;
-
-///
-/// The leaf section which contains a numeric build number and
-/// an optional unicode string that represents the file revision.
-///
-typedef struct {
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  UINT16                      BuildNumber;
-
-  ///
-  /// Array of unicode string.
-  ///
-  CHAR16                      VersionString[1];
-} EFI_VERSION_SECTION;
-
-typedef struct {
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// A UINT16 that represents a particular build. Subsequent builds have monotonically
-  /// increasing build numbers relative to earlier builds.
-  ///
-  UINT16                        BuildNumber;
-  CHAR16                        VersionString[1];
-} EFI_VERSION_SECTION2;
-
-#define IS_SECTION2(SectionHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff) == 0x00ffffff)
-
-#define SECTION_SIZE(SectionHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff))
-
-#define SECTION2_SIZE(SectionHeaderPtr) \
-    (((EFI_COMMON_SECTION_HEADER2 *) (UINTN) SectionHeaderPtr)->ExtendedSize)
-
-#pragma pack()
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspfv.h b/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspfv.h
deleted file mode 100644
index 75d17fa..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspfv.h
+++ /dev/null
@@ -1,247 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef __PI_FIRMWAREVOLUME_H__
-#define __PI_FIRMWAREVOLUME_H__
-
-///
-/// EFI_FV_FILE_ATTRIBUTES
-///
-typedef UINT32  EFI_FV_FILE_ATTRIBUTES;
-
-//
-// Value of EFI_FV_FILE_ATTRIBUTES.
-//
-#define EFI_FV_FILE_ATTRIB_ALIGNMENT      0x0000001F
-#define EFI_FV_FILE_ATTRIB_FIXED          0x00000100
-#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED  0x00000200
-
-///
-/// type of EFI FVB attribute
-///
-typedef UINT32  EFI_FVB_ATTRIBUTES_2;
-
-//
-// Attributes bit definitions
-//
-#define EFI_FVB2_READ_DISABLED_CAP  0x00000001
-#define EFI_FVB2_READ_ENABLED_CAP   0x00000002
-#define EFI_FVB2_READ_STATUS        0x00000004
-#define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008
-#define EFI_FVB2_WRITE_ENABLED_CAP  0x00000010
-#define EFI_FVB2_WRITE_STATUS       0x00000020
-#define EFI_FVB2_LOCK_CAP           0x00000040
-#define EFI_FVB2_LOCK_STATUS        0x00000080
-#define EFI_FVB2_STICKY_WRITE       0x00000200
-#define EFI_FVB2_MEMORY_MAPPED      0x00000400
-#define EFI_FVB2_ERASE_POLARITY     0x00000800
-#define EFI_FVB2_READ_LOCK_CAP      0x00001000
-#define EFI_FVB2_READ_LOCK_STATUS   0x00002000
-#define EFI_FVB2_WRITE_LOCK_CAP     0x00004000
-#define EFI_FVB2_WRITE_LOCK_STATUS  0x00008000
-#define EFI_FVB2_ALIGNMENT          0x001F0000
-#define EFI_FVB2_ALIGNMENT_1        0x00000000
-#define EFI_FVB2_ALIGNMENT_2        0x00010000
-#define EFI_FVB2_ALIGNMENT_4        0x00020000
-#define EFI_FVB2_ALIGNMENT_8        0x00030000
-#define EFI_FVB2_ALIGNMENT_16       0x00040000
-#define EFI_FVB2_ALIGNMENT_32       0x00050000
-#define EFI_FVB2_ALIGNMENT_64       0x00060000
-#define EFI_FVB2_ALIGNMENT_128      0x00070000
-#define EFI_FVB2_ALIGNMENT_256      0x00080000
-#define EFI_FVB2_ALIGNMENT_512      0x00090000
-#define EFI_FVB2_ALIGNMENT_1K       0x000A0000
-#define EFI_FVB2_ALIGNMENT_2K       0x000B0000
-#define EFI_FVB2_ALIGNMENT_4K       0x000C0000
-#define EFI_FVB2_ALIGNMENT_8K       0x000D0000
-#define EFI_FVB2_ALIGNMENT_16K      0x000E0000
-#define EFI_FVB2_ALIGNMENT_32K      0x000F0000
-#define EFI_FVB2_ALIGNMENT_64K      0x00100000
-#define EFI_FVB2_ALIGNMENT_128K     0x00110000
-#define EFI_FVB2_ALIGNMENT_256K     0x00120000
-#define EFI_FVB2_ALIGNMENT_512K     0x00130000
-#define EFI_FVB2_ALIGNMENT_1M       0x00140000
-#define EFI_FVB2_ALIGNMENT_2M       0x00150000
-#define EFI_FVB2_ALIGNMENT_4M       0x00160000
-#define EFI_FVB2_ALIGNMENT_8M       0x00170000
-#define EFI_FVB2_ALIGNMENT_16M      0x00180000
-#define EFI_FVB2_ALIGNMENT_32M      0x00190000
-#define EFI_FVB2_ALIGNMENT_64M      0x001A0000
-#define EFI_FVB2_ALIGNMENT_128M     0x001B0000
-#define EFI_FVB2_ALIGNMENT_256M     0x001C0000
-#define EFI_FVB2_ALIGNMENT_512M     0x001D0000
-#define EFI_FVB2_ALIGNMENT_1G       0x001E0000
-#define EFI_FVB2_ALIGNMENT_2G       0x001F0000
-
-
-typedef struct {
-  ///
-  /// The number of sequential blocks which are of the same size.
-  ///
-  UINT32 NumBlocks;
-  ///
-  /// The size of the blocks.
-  ///
-  UINT32 Length;
-} EFI_FV_BLOCK_MAP_ENTRY;
-
-///
-/// Describes the features and layout of the firmware volume.
-///
-typedef struct {
-  ///
-  /// The first 16 bytes are reserved to allow for the reset vector of
-  /// processors whose reset vector is at address 0.
-  ///
-  UINT8                     ZeroVector[16];
-  ///
-  /// Declares the file system with which the firmware volume is formatted.
-  ///
-  EFI_GUID                  FileSystemGuid;
-  ///
-  /// Length in bytes of the complete firmware volume, including the header.
-  ///
-  UINT64                    FvLength;
-  ///
-  /// Set to EFI_FVH_SIGNATURE
-  ///
-  UINT32                    Signature;
-  ///
-  /// Declares capabilities and power-on defaults for the firmware volume.
-  ///
-  EFI_FVB_ATTRIBUTES_2      Attributes;
-  ///
-  /// Length in bytes of the complete firmware volume header.
-  ///
-  UINT16                    HeaderLength;
-  ///
-  /// A 16-bit checksum of the firmware volume header. A valid header sums to zero.
-  ///
-  UINT16                    Checksum;
-  ///
-  /// Offset, relative to the start of the header, of the extended header
-  /// (EFI_FIRMWARE_VOLUME_EXT_HEADER) or zero if there is no extended header.
-  ///
-  UINT16                    ExtHeaderOffset;
-  ///
-  /// This field must always be set to zero.
-  ///
-  UINT8                     Reserved[1];
-  ///
-  /// Set to 2. Future versions of this specification may define new header fields and will
-  /// increment the Revision field accordingly.
-  ///
-  UINT8                     Revision;
-  ///
-  /// An array of run-length encoded FvBlockMapEntry structures. The array is
-  /// terminated with an entry of {0,0}.
-  ///
-  EFI_FV_BLOCK_MAP_ENTRY    BlockMap[1];
-} EFI_FIRMWARE_VOLUME_HEADER;
-
-#define EFI_FVH_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', 'H')
-
-///
-/// Firmware Volume Header Revision definition
-///
-#define EFI_FVH_REVISION  0x02
-
-///
-/// Extension header pointed by ExtHeaderOffset of volume header.
-///
-typedef struct {
-  ///
-  /// Firmware volume name.
-  ///
-  EFI_GUID  FvName;
-  ///
-  /// Size of the rest of the extension header, including this structure.
-  ///
-  UINT32    ExtHeaderSize;
-} EFI_FIRMWARE_VOLUME_EXT_HEADER;
-
-///
-/// Entry struture for describing FV extension header
-///
-typedef struct {
-  ///
-  /// Size of this header extension.
-  ///
-  UINT16    ExtEntrySize;
-  ///
-  /// Type of the header.
-  ///
-  UINT16    ExtEntryType;
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY;
-
-#define EFI_FV_EXT_TYPE_OEM_TYPE  0x01
-///
-/// This extension header provides a mapping between a GUID and an OEM file type.
-///
-typedef struct {
-  ///
-  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
-  ///
-  EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
-  ///
-  /// A bit mask, one bit for each file type between 0xC0 (bit 0) and 0xDF (bit 31). If a bit
-  /// is '1', then the GUID entry exists in Types. If a bit is '0' then no GUID entry exists in Types.
-  ///
-  UINT32    TypeMask;
-  ///
-  /// An array of GUIDs, each GUID representing an OEM file type.
-  ///
-  /// EFI_GUID  Types[1];
-  ///
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;
-
-#define EFI_FV_EXT_TYPE_GUID_TYPE 0x0002
-
-///
-/// This extension header EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE provides a vendor specific
-/// GUID FormatType type which includes a length and a successive series of data bytes.
-///
-typedef struct {
-  ///
-  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
-  ///
-  EFI_FIRMWARE_VOLUME_EXT_ENTRY     Hdr;
-  ///
-  /// Vendor-specific GUID.
-  ///
-  EFI_GUID                          FormatType;
-  ///
-  /// An arry of bytes of length Length.
-  ///
-  /// UINT8                             Data[1];
-  ///
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE;
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fsphob.h b/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fsphob.h
deleted file mode 100644
index 5840907..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fsphob.h
+++ /dev/null
@@ -1,507 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef __PI_HOB_H__
-#define __PI_HOB_H__
-
-//
-// HobType of EFI_HOB_GENERIC_HEADER.
-//
-#define EFI_HOB_TYPE_MEMORY_ALLOCATION    0x0002
-#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR  0x0003
-#define EFI_HOB_TYPE_GUID_EXTENSION       0x0004
-#define EFI_HOB_TYPE_UNUSED               0xFFFE
-#define EFI_HOB_TYPE_END_OF_HOB_LIST      0xFFFF
-
-///
-/// Describes the format and size of the data inside the HOB.
-/// All HOBs must contain this generic HOB header.
-///
-typedef struct {
-  ///
-  /// Identifies the HOB data structure type.
-  ///
-  UINT16    HobType;
-  ///
-  /// The length in bytes of the HOB.
-  ///
-  UINT16    HobLength;
-  ///
-  /// This field must always be set to zero.
-  ///
-  UINT32    Reserved;
-} EFI_HOB_GENERIC_HEADER;
-
-///
-/// Enumeration of memory types introduced in UEFI.
-///
-typedef enum {
-  ///
-  /// Not used.
-  ///
-  EfiReservedMemoryType,
-  ///
-  /// The code portions of a loaded application.
-  /// (Note that UEFI OS loaders are UEFI applications.)
-  ///
-  EfiLoaderCode,
-  ///
-  /// The data portions of a loaded application and the default data allocation
-  /// type used by an application to allocate pool memory.
-  ///
-  EfiLoaderData,
-  ///
-  /// The code portions of a loaded Boot Services Driver.
-  ///
-  EfiBootServicesCode,
-  ///
-  /// The data portions of a loaded Boot Serves Driver, and the default data
-  /// allocation type used by a Boot Services Driver to allocate pool memory.
-  ///
-  EfiBootServicesData,
-  ///
-  /// The code portions of a loaded Runtime Services Driver.
-  ///
-  EfiRuntimeServicesCode,
-  ///
-  /// The data portions of a loaded Runtime Services Driver and the default
-  /// data allocation type used by a Runtime Services Driver to allocate pool memory.
-  ///
-  EfiRuntimeServicesData,
-  ///
-  /// Free (unallocated) memory.
-  ///
-  EfiConventionalMemory,
-  ///
-  /// Memory in which errors have been detected.
-  ///
-  EfiUnusableMemory,
-  ///
-  /// Memory that holds the ACPI tables.
-  ///
-  EfiACPIReclaimMemory,
-  ///
-  /// Address space reserved for use by the firmware.
-  ///
-  EfiACPIMemoryNVS,
-  ///
-  /// Used by system firmware to request that a memory-mapped IO region
-  /// be mapped by the OS to a virtual address so it can be accessed by EFI runtime services.
-  ///
-  EfiMemoryMappedIO,
-  ///
-  /// System memory-mapped IO region that is used to translate memory
-  /// cycles to IO cycles by the processor.
-  ///
-  EfiMemoryMappedIOPortSpace,
-  ///
-  /// Address space reserved by the firmware for code that is part of the processor.
-  ///
-  EfiPalCode,
-  EfiMaxMemoryType
-} EFI_MEMORY_TYPE;
-
-///
-/// EFI_HOB_MEMORY_ALLOCATION_HEADER describes the
-/// various attributes of the logical memory allocation. The type field will be used for
-/// subsequent inclusion in the UEFI memory map.
-///
-typedef struct {
-  ///
-  /// A GUID that defines the memory allocation region's type and purpose, as well as
-  /// other fields within the memory allocation HOB. This GUID is used to define the
-  /// additional data within the HOB that may be present for the memory allocation HOB.
-  /// Type EFI_GUID is defined in InstallProtocolInterface() in the UEFI 2.0
-  /// specification.
-  ///
-  EFI_GUID              Name;
-
-  ///
-  /// The base address of memory allocated by this HOB. Type
-  /// EFI_PHYSICAL_ADDRESS is defined in AllocatePages() in the UEFI 2.0
-  /// specification.
-  ///
-  EFI_PHYSICAL_ADDRESS  MemoryBaseAddress;
-
-  ///
-  /// The length in bytes of memory allocated by this HOB.
-  ///
-  UINT64                MemoryLength;
-
-  ///
-  /// Defines the type of memory allocated by this HOB. The memory type definition
-  /// follows the EFI_MEMORY_TYPE definition. Type EFI_MEMORY_TYPE is defined
-  /// in AllocatePages() in the UEFI 2.0 specification.
-  ///
-  EFI_MEMORY_TYPE       MemoryType;
-
-  ///
-  /// Padding for Itanium processor family
-  ///
-  UINT8                 Reserved[4];
-} EFI_HOB_MEMORY_ALLOCATION_HEADER;
-
-///
-/// Describes all memory ranges used during the HOB producer
-/// phase that exist outside the HOB list. This HOB type
-/// describes how memory is used, not the physical attributes of memory.
-///
-typedef struct {
-  ///
-  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
-  ///
-  EFI_HOB_GENERIC_HEADER            Header;
-  ///
-  /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
-  /// various attributes of the logical memory allocation.
-  ///
-  EFI_HOB_MEMORY_ALLOCATION_HEADER  AllocDescriptor;
-  //
-  // Additional data pertaining to the "Name" Guid memory
-  // may go here.
-  //
-} EFI_HOB_MEMORY_ALLOCATION;
-
-///
-/// The resource type.
-///
-typedef UINT32 EFI_RESOURCE_TYPE;
-
-//
-// Value of ResourceType in EFI_HOB_RESOURCE_DESCRIPTOR.
-//
-#define EFI_RESOURCE_SYSTEM_MEMORY          0x00000000
-#define EFI_RESOURCE_MEMORY_MAPPED_IO       0x00000001
-#define EFI_RESOURCE_IO                     0x00000002
-#define EFI_RESOURCE_FIRMWARE_DEVICE        0x00000003
-#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT  0x00000004
-#define EFI_RESOURCE_MEMORY_RESERVED        0x00000005
-#define EFI_RESOURCE_IO_RESERVED            0x00000006
-#define EFI_RESOURCE_MAX_MEMORY_TYPE        0x00000007
-
-///
-/// A type of recount attribute type.
-///
-typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE;
-
-//
-// These types can be ORed together as needed.
-//
-// The first three enumerations describe settings
-//
-#define EFI_RESOURCE_ATTRIBUTE_PRESENT              0x00000001
-#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED          0x00000002
-#define EFI_RESOURCE_ATTRIBUTE_TESTED               0x00000004
-//
-// The rest of the settings describe capabilities
-//
-#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC           0x00000008
-#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC         0x00000010
-#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1           0x00000020
-#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2           0x00000040
-#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED           0x00000080
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED          0x00000100
-#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED      0x00000200
-#define EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE              0x00000400
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE        0x00000800
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE  0x00001000
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE     0x00002000
-#define EFI_RESOURCE_ATTRIBUTE_16_BIT_IO                0x00004000
-#define EFI_RESOURCE_ATTRIBUTE_32_BIT_IO                0x00008000
-#define EFI_RESOURCE_ATTRIBUTE_64_BIT_IO                0x00010000
-#define EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED        0x00020000
-
-///
-/// Describes the resource properties of all fixed,
-/// nonrelocatable resource ranges found on the processor
-/// host bus during the HOB producer phase.
-///
-typedef struct {
-  ///
-  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_RESOURCE_DESCRIPTOR.
-  ///
-  EFI_HOB_GENERIC_HEADER      Header;
-  ///
-  /// A GUID representing the owner of the resource. This GUID is used by HOB
-  /// consumer phase components to correlate device ownership of a resource.
-  ///
-  EFI_GUID                    Owner;
-  ///
-  /// The resource type enumeration as defined by EFI_RESOURCE_TYPE.
-  ///
-  EFI_RESOURCE_TYPE           ResourceType;
-  ///
-  /// Resource attributes as defined by EFI_RESOURCE_ATTRIBUTE_TYPE.
-  ///
-  EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;
-  ///
-  /// The physical start address of the resource region.
-  ///
-  EFI_PHYSICAL_ADDRESS        PhysicalStart;
-  ///
-  /// The number of bytes of the resource region.
-  ///
-  UINT64                      ResourceLength;
-} EFI_HOB_RESOURCE_DESCRIPTOR;
-
-///
-/// Allows writers of executable content in the HOB producer phase to
-/// maintain and manage HOBs with specific GUID.
-///
-typedef struct {
-  ///
-  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_GUID_EXTENSION.
-  ///
-  EFI_HOB_GENERIC_HEADER      Header;
-  ///
-  /// A GUID that defines the contents of this HOB.
-  ///
-  EFI_GUID                    Name;
-  //
-  // Guid specific data goes here
-  //
-} EFI_HOB_GUID_TYPE;
-
-///
-/// Union of all the possible HOB Types.
-///
-typedef union {
-  EFI_HOB_GENERIC_HEADER              *Header;
-  EFI_HOB_MEMORY_ALLOCATION           *MemoryAllocation;
-  EFI_HOB_RESOURCE_DESCRIPTOR         *ResourceDescriptor;
-  EFI_HOB_GUID_TYPE                   *Guid;
-  UINT8                               *Raw;
-} EFI_PEI_HOB_POINTERS;
-
-
-/**
-  Returns the type of a HOB.
-
-  This macro returns the HobType field from the HOB header for the
-  HOB specified by HobStart.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @return HobType.
-
-**/
-#define GET_HOB_TYPE(HobStart) \
-  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobType)
-
-/**
-  Returns the length, in bytes, of a HOB.
-
-  This macro returns the HobLength field from the HOB header for the
-  HOB specified by HobStart.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @return HobLength.
-
-**/
-#define GET_HOB_LENGTH(HobStart) \
-  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobLength)
-
-/**
-  Returns a pointer to the next HOB in the HOB list.
-
-  This macro returns a pointer to HOB that follows the
-  HOB specified by HobStart in the HOB List.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @return A pointer to the next HOB in the HOB list.
-
-**/
-#define GET_NEXT_HOB(HobStart) \
-  (VOID *)(*(UINT8 **)&(HobStart) + GET_HOB_LENGTH (HobStart))
-
-/**
-  Determines if a HOB is the last HOB in the HOB list.
-
-  This macro determine if the HOB specified by HobStart is the
-  last HOB in the HOB list.  If HobStart is last HOB in the HOB list,
-  then TRUE is returned.  Otherwise, FALSE is returned.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @retval TRUE       The HOB specified by HobStart is the last HOB in the HOB list.
-  @retval FALSE      The HOB specified by HobStart is not the last HOB in the HOB list.
-
-**/
-#define END_OF_HOB_LIST(HobStart)  (GET_HOB_TYPE (HobStart) == (UINT16)EFI_HOB_TYPE_END_OF_HOB_LIST)
-
-/**
-  Returns a pointer to data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  This macro returns a pointer to the data buffer in a HOB specified by HobStart.
-  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  @param   GuidHob   A pointer to a HOB.
-
-  @return  A pointer to the data buffer in a HOB.
-
-**/
-#define GET_GUID_HOB_DATA(HobStart) \
-  (VOID *)(*(UINT8 **)&(HobStart) + sizeof (EFI_HOB_GUID_TYPE))
-
-/**
-  Returns the size of the data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  This macro returns the size, in bytes, of the data buffer in a HOB specified by HobStart.
-  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  @param   GuidHob   A pointer to a HOB.
-
-  @return  The size of the data buffer.
-**/
-#define GET_GUID_HOB_DATA_SIZE(HobStart) \
-  (UINT16)(GET_HOB_LENGTH (HobStart) - sizeof (EFI_HOB_GUID_TYPE))
-
-/**
-  Returns the pointer to the HOB list.
-
-  This function returns the pointer to first HOB in the list.
-
-  If the pointer to the HOB list is NULL, then ASSERT().
-
-  @return The pointer to the HOB list.
-
-**/
-VOID *
-EFIAPI
-GetHobList (
-  VOID
-  );
-
-/**
-  Returns the next instance of a HOB type from the starting HOB.
-
-  This function searches the first instance of a HOB type from the starting HOB pointer.
-  If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
-  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
-  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
-  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
-
-  If HobStart is NULL, then ASSERT().
-
-  @param  Type          The HOB type to return.
-  @param  HobStart      The starting HOB pointer to search from.
-
-  @return The next instance of a HOB type from the starting HOB.
-
-**/
-VOID *
-EFIAPI
-GetNextHob (
-  UINT16                 Type,
-  CONST VOID             *HobStart
-  );
-
-/**
-  Returns the first instance of a HOB type among the whole HOB list.
-
-  This function searches the first instance of a HOB type among the whole HOB list.
-  If there does not exist such HOB type in the HOB list, it will return NULL.
-
-  If the pointer to the HOB list is NULL, then ASSERT().
-
-  @param  Type          The HOB type to return.
-
-  @return The next instance of a HOB type from the starting HOB.
-
-**/
-VOID *
-EFIAPI
-GetFirstHob (
-  UINT16                 Type
-  );
-
-/**
-  Returns the next instance of the matched GUID HOB from the starting HOB.
-
-  This function searches the first instance of a HOB from the starting HOB pointer.
-  Such HOB should satisfy two conditions:
-  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
-  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
-  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
-  to extract the data section and its size info respectively.
-  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
-  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
-  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
-
-  If Guid is NULL, then ASSERT().
-  If HobStart is NULL, then ASSERT().
-
-  @param  Guid          The GUID to match with in the HOB list.
-  @param  HobStart      A pointer to a Guid.
-
-  @return The next instance of the matched GUID HOB from the starting HOB.
-
-**/
-VOID *
-EFIAPI
-GetNextGuidHob (
-  CONST EFI_GUID         *Guid,
-  CONST VOID             *HobStart
-  );
-
-/**
-  Returns the first instance of the matched GUID HOB among the whole HOB list.
-
-  This function searches the first instance of a HOB among the whole HOB list.
-  Such HOB should satisfy two conditions:
-  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
-  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
-  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
-  to extract the data section and its size info respectively.
-
-  If the pointer to the HOB list is NULL, then ASSERT().
-  If Guid is NULL, then ASSERT().
-
-  @param  Guid          The GUID to match with in the HOB list.
-
-  @return The first instance of the matched GUID HOB among the whole HOB list.
-
-**/
-VOID *
-EFIAPI
-GetFirstGuidHob (
-  CONST EFI_GUID         *Guid
-  );
-
-BOOLEAN
-EFIAPI
-CompareGuid (
-  CONST EFI_GUID  *Guid1,
-  CONST EFI_GUID  *Guid2
-  );
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspinfoheader.h b/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspinfoheader.h
deleted file mode 100644
index 0f7b3a9..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspinfoheader.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef _FSP_INFO_HEADER_H_
-#define _FSP_INFO_HEADER_H_
-
-#pragma pack(1)
-
-typedef struct  {
-
-  UINT32  Signature;       // Off 0x94
-  UINT32  HeaderLength;
-  UINT8   Reserved1[3];
-  UINT8   HeaderRevision;
-  UINT32  ImageRevision;
-
-  CHAR8   ImageId[8];      // Off 0xA4
-  UINT32  ImageSize;
-  UINT32  ImageBase;
-
-  UINT32  ImageAttribute;  // Off 0xB4
-  UINT32  CfgRegionOffset;
-  UINT32  CfgRegionSize;
-  UINT32  ApiEntryNum;
-
-  UINT32  NemInitEntry;    // Off 0xC4
-  UINT32  FspInitEntry;
-  UINT32  NotifyPhaseEntry;
-  UINT32  Reserved2;
-
-} FSP_INFO_HEADER;
-
-#pragma pack()
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspplatform.h b/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspplatform.h
deleted file mode 100644
index e78ac47..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fspplatform.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef _FSP_PLATFORM_H_
-#define _FSP_PLATFORM_H_
-
-#include "fsptypes.h"
-#include "fspapi.h"
-#include "mem_config.h"
-
-#pragma pack(1)
-
-typedef struct {
-    MEM_CONFIG  *MemoryConfig;
-} FSP_INIT_RT_PLATFORM_BUFFER;
-
-
-typedef struct {
-    FSP_INIT_RT_COMMON_BUFFER  Common;
-    FSP_INIT_RT_PLATFORM_BUFFER  Platform;
-} FSP_INIT_RT_BUFFER;
-
-#pragma pack()
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fsptypes.h b/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fsptypes.h
deleted file mode 100644
index a3a54c0..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/fsptypes.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-/** \file  fsptypes.h
- *
- *
- */
-
-#ifndef __FSP_TYPES_H__
-#define __FSP_TYPES_H__
-
-///
-/// 8-byte unsigned value.
-///
-typedef unsigned long long  UINT64;
-///
-/// 8-byte signed value.
-///
-typedef long long           INT64;
-///
-/// 4-byte unsigned value.
-///
-typedef unsigned int        UINT32;
-///
-/// 4-byte signed value.
-///
-typedef int                 INT32;
-///
-/// 2-byte unsigned value.
-///
-typedef unsigned short      UINT16;
-///
-/// 2-byte Character.  Unless otherwise specified all strings are stored in the
-/// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
-///
-typedef unsigned short      CHAR16;
-///
-/// 2-byte signed value.
-///
-typedef short               INT16;
-///
-/// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
-/// values are undefined.
-///
-typedef unsigned char       BOOLEAN;
-///
-/// 1-byte unsigned value.
-///
-typedef unsigned char       UINT8;
-///
-/// 1-byte Character
-///
-typedef char                CHAR8;
-///
-/// 1-byte signed value
-///
-typedef char                INT8;
-
-typedef void                VOID;
-
-typedef UINT64              EFI_PHYSICAL_ADDRESS;
-
-typedef struct {
-  UINT32  Data1;
-  UINT16  Data2;
-  UINT16  Data3;
-  UINT8   Data4[8];
-} EFI_GUID;
-
-#define CONST     const
-#define STATIC    static
-
-#define TRUE  ((BOOLEAN)(1==1))
-#define FALSE ((BOOLEAN)(0==1))
-
-#define FSPAPI __attribute__((cdecl))
-#define EFIAPI __attribute__((cdecl))
-
-#define ASSERT(Expression)      \
-  do {                          \
-    if (!(Expression)) {        \
-      for (;;);                 \
-    }                           \
-  } while (FALSE)
-
-typedef UINT32 FSP_STATUS;
-typedef UINT32 EFI_STATUS;
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/mem_config.h b/src/vendorcode/intel/fsp/ivybridge_i89xx/include/mem_config.h
deleted file mode 100644
index 26deb90..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/mem_config.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-//
-// mem_config.h
-//
-
-#ifndef _MEM_CONFIG_H_
-#define _MEM_CONFIG_H_
-
-typedef enum {
-  fi1067_IVB=0,
-  fi1333_IVB,
-  fi1400_IVB,
-  fi1600_IVB,
-  fi1800_IVB,
-  fi1867_IVB,
-  fi2000_IVB,
-  fi2133_IVB,
-  fi2200_IVB,
-  fi2400_IVB,
-  fi2600_IVB,
-  fi2667_IVB,
-  fi2800_IVB,
-  fiUnsupport_IVB,
-}TFrequencyIndex_IVB;
-
-#define NUM_IVB_MEM_CLK_FREQUENCIES 13
-
-// DDR3 memory SPD data
-//
-// NOTE: This only includes the SPD bytes that are relevant to the MRC
-typedef struct {                             // BYTE
-    uint8_t  SPDGeneral;                     // 0   Number of Serial PD Bytes Written / SPD Device Size / CRC Coverage 1, 2
-    uint8_t  SPDRevision;                    // 1   SPD Revision
-    uint8_t  DRAMDeviceType;                 // 2   DRAM Device Type
-    uint8_t  ModuleType;                     // 3   Module Type
-    uint8_t  SDRAMDensityAndBanks;           // 4   SDRAM Density and Banks
-    uint8_t  SDRAMAddressing;                // 5   SDRAM Addressing
-    uint8_t  VDD;                            // 6   Module Nominal Voltage
-    uint8_t  ModuleOrganization;             // 7   Module Organization
-    uint8_t  ModuleMemoryBusWidth;           // 8   Module Memory Bus Width
-    uint8_t  FineTimebase;                   // 9   Fine Timebase (FTB) Dividend / Divisor
-    uint8_t  TimebaseDividend;               // 10  Medium Timebase (MTB) Dividend
-    uint8_t  TimebaseDivisor;                // 11  Medium Timebase (MTB) Divisor
-    uint8_t  SDRAMMinimumCycleTime;          // 12  SDRAM Minimum Cycle Time (tCKmin)
-    uint8_t  Reserved0;                      // 13  Reserved0
-    uint8_t  CASLatenciesLSB;                // 14  CAS Latencies Supported, Least Significant Byte
-    uint8_t  CASLatenciesMSB;                // 15  CAS Latencies Supported, Most Significant Byte
-    uint8_t  MinimumCASLatencyTime;          // 16  Minimum CAS Latency Time (tAAmin)
-    uint8_t  MinimumWriteRecoveryTime;       // 17  Minimum Write Recovery Time (tWRmin)
-    uint8_t  MinimumRASToCASDelayTime;       // 18  Minimum RAS# to CAS# Delay Time (tRCDmin)
-    uint8_t  MinimumRowToRowDelayTime;       // 19  Minimum Row Active to Row Active Delay Time (tRRDmin)
-    uint8_t  MinimumRowPrechargeDelayTime;   // 20  Minimum Row Precharge Delay Time (tRPmin)
-    uint8_t  UpperNibblesFortRASAndtRC;      // 21  Upper Nibbles for tRAS and tRC
-    uint8_t  tRASmin;                        // 22  Minimum Active to Precharge Delay Time (tRASmin), Least Significant Byte
-    uint8_t  tRCmin;                         // 23  Minimum Active to Active/Refresh Delay Time (tRCmin), Least Significant Byte
-    uint8_t  tRFCminLeastSignificantByte;    // 24  Minimum Refresh Recovery Delay Time (tRFCmin), Least Significant Byte
-    uint8_t  tRFCminMostSignificantByte;     // 25  Minimum Refresh Recovery Delay Time (tRFCmin), Most Significant Byte
-    uint8_t  tWTRmin;                        // 26  Minimum Internal Write to Read Command Delay Time (tWTRmin)
-    uint8_t  tRTPmin;                        // 27  Minimum Internal Read to Precharge Command Delay Time (tRTPmin)
-    uint8_t  UpperNibbleFortFAW;             // 28  Upper Nibble for tFAW
-    uint8_t  tFAWmin;                        // 29  Minimum Four Activate Window Delay Time (tFAWmin)
-    uint8_t  SDRAMOptionalFeatures;          // 30  SDRAM Optional Features
-    uint8_t  SDRAMThermalAndRefreshOptions;  // 31  SDRAMThermalAndRefreshOptions
-    uint8_t  ModuleThermalSensor;            // 32  ModuleThermalSensor
-    uint8_t  SDRAMDeviceType;                // 33  SDRAM Device Type
-    int8_t   tCKminFine;                     // 34  Fine Offset for SDRAM Minimum Cycle Time (tCKmin)
-    int8_t   tAAminFine;                     // 35  Fine Offset for Minimum CAS Latency Time (tAAmin)
-    int8_t   tRCDminFine;                    // 36  Fine Offset for Minimum RAS# to CAS# Delay Time (tRCDmin)
-    int8_t   tRPminFine;                     // 37  Fine Offset for Minimum Row Precharge Delay Time (tRPmin)
-    int8_t   tRCminFine;                     // 38  Fine Offset for Minimum Active to Active/Refresh Delay Time (tRCmin)
-    uint8_t  ReferenceRawCardUsed;           // 62  Reference Raw Card Used
-    uint8_t  AddressMappingEdgeConnector;    // 63  Address Mapping from Edge Connector to DRAM
-    uint8_t  ThermalHeatSpreaderSolution;    // 64  ThermalHeatSpreaderSolution
-    uint8_t  ModuleManufacturerIdCodeLsb;    // 117 Module Manufacturer ID Code, Least Significant Byte
-    uint8_t  ModuleManufacturerIdCodeMsb;    // 118 Module Manufacturer ID Code, Most Significant Byte
-    uint8_t  ModuleManufacturingLocation;    // 119 Module Manufacturing Location
-    uint8_t  ModuleManufacturingDateYear;    // 120 Module Manufacturing Date Year
-    uint8_t  ModuleManufacturingDateWW;      // 121 Module Manufacturing Date creation work week
-    uint8_t  ModuleSerialNumberA;            // 122 Module Serial Number A
-    uint8_t  ModuleSerialNumberB;            // 123 Module Serial Number B
-    uint8_t  ModuleSerialNumberC;            // 124 Module Serial Number C
-    uint8_t  ModuleSerialNumberD;            // 125 Module Serial Number D
-    uint8_t  CRCA;                           // 126 CRC A
-    uint8_t  CRCB;                           // 127 CRC B
-} DDR3_SPD;
-
-// Configuration for each memory channel/bank
-typedef struct {
-    uint32_t  Exists;
-    DDR3_SPD  SpdData;
-    uint8_t   InitClkPiValue[NUM_IVB_MEM_CLK_FREQUENCIES];
-} MEM_BANK_CONFIG;
-
-// Memory configuration
-typedef struct {
-    MEM_BANK_CONFIG  ChannelABank0;
-    MEM_BANK_CONFIG  ChannelABank1;
-    MEM_BANK_CONFIG  ChannelBBank0;
-    MEM_BANK_CONFIG  ChannelBBank1;
-} MEM_CONFIG;
-
-#endif
diff --git a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/peifsp.h b/src/vendorcode/intel/fsp/ivybridge_i89xx/include/peifsp.h
deleted file mode 100644
index dc3e60f..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_i89xx/include/peifsp.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-/** \file  peifsp.h
- *
- *
- */
-#include <stdint.h>
-#include "fsptypes.h"
-#include "fspfv.h"
-#include "fspffs.h"
-#include "fsphob.h"
-#include "fspapi.h"
-#include "fspplatform.h"
-#include "fspinfoheader.h"
diff --git a/src/vendorcode/intel/fsp/ivybridge_i89xx/srx/fsphob.c b/src/vendorcode/intel/fsp/ivybridge_i89xx/srx/fsphob.c
deleted file mode 100644
index 4214b3a..0000000
--- a/src/vendorcode/intel/fsp/ivybridge_i89xx/srx/fsphob.c
+++ /dev/null
@@ -1,207 +0,0 @@
-/**
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-/***********************************************************************
- *
- * fsphob.c
- *
- * HOB infrastructure code.
- *
- **********************************************************************/
-#include <string.h>
-
-#include "fsptypes.h"
-#include "fsphob.h"
-
-//
-// Pointer to the HOB should be initialized with the output of FSP INIT PARAMS
-//
-extern volatile void *FspHobListPtr;
-
-//
-// Function prototype
-//
-UINT64
-EFIAPI
-ReadUnaligned64 (
-  CONST UINT64              *Buffer
-  );
-
-/**
-  Reads a 64-bit value from memory that may be unaligned.
-
-  This function returns the 64-bit value pointed to by Buffer. The function
-  guarantees that the read operation does not produce an alignment fault.
-
-  If the Buffer is NULL, then ASSERT().
-
-  @param  Buffer  Pointer to a 64-bit value that may be unaligned.
-
-  @return The 64-bit value read from Buffer.
-
-**/
-UINT64
-EFIAPI
-ReadUnaligned64 (
-  CONST UINT64              *Buffer
-  )
-{
-  ASSERT (Buffer != NULL);
-
-  return *Buffer;
-}
-
-/**
-  Compares two GUIDs.
-
-  This function compares Guid1 to Guid2.  If the GUIDs are identical then TRUE is returned.
-  If there are any bit differences in the two GUIDs, then FALSE is returned.
-
-  If Guid1 is NULL, then ASSERT().
-  If Guid2 is NULL, then ASSERT().
-
-  @param  Guid1       A pointer to a 128 bit GUID.
-  @param  Guid2       A pointer to a 128 bit GUID.
-
-  @retval TRUE        Guid1 and Guid2 are identical.
-  @retval FALSE       Guid1 and Guid2 are not identical.
-
-**/
-BOOLEAN
-EFIAPI
-CompareGuid (
-  CONST EFI_GUID  *Guid1,
-  CONST EFI_GUID  *Guid2
-  )
-{
-  UINT64  LowPartOfGuid1;
-  UINT64  LowPartOfGuid2;
-  UINT64  HighPartOfGuid1;
-  UINT64  HighPartOfGuid2;
-
-  LowPartOfGuid1  = ReadUnaligned64 ((CONST UINT64*) Guid1);
-  LowPartOfGuid2  = ReadUnaligned64 ((CONST UINT64*) Guid2);
-  HighPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1 + 1);
-  HighPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2 + 1);
-
-  return (BOOLEAN) (LowPartOfGuid1 == LowPartOfGuid2 && HighPartOfGuid1 == HighPartOfGuid2);
-}
-
-/**
-  Returns the pointer to the HOB list.
-**/
-VOID *
-EFIAPI
-GetHobList (
-  VOID
-  )
-{
-  ASSERT (FspHobListPtr != NULL);
-  return ((VOID *)FspHobListPtr);
-}
-
-/**
-  Returns the next instance of a HOB type from the starting HOB.
-**/
-VOID *
-EFIAPI
-GetNextHob (
-  UINT16                 Type,
-  CONST VOID             *HobStart
-  )
-{
-  EFI_PEI_HOB_POINTERS  Hob;
-
-  ASSERT (HobStart != NULL);
-
-  Hob.Raw = (UINT8 *) HobStart;
-  //
-  // Parse the HOB list until end of list or matching type is found.
-  //
-  while (!END_OF_HOB_LIST (Hob)) {
-    if (Hob.Header->HobType == Type) {
-      return Hob.Raw;
-    }
-    Hob.Raw = GET_NEXT_HOB (Hob);
-  }
-  return NULL;
-}
-
-/**
-  Returns the first instance of a HOB type among the whole HOB list.
-**/
-VOID *
-EFIAPI
-GetFirstHob (
-  UINT16                 Type
-  )
-{
-  VOID      *HobList;
-
-  HobList = GetHobList ();
-  return GetNextHob (Type, HobList);
-}
-
-/**
-  Returns the next instance of the matched GUID HOB from the starting HOB.
-**/
-VOID *
-EFIAPI
-GetNextGuidHob (
-  CONST EFI_GUID         *Guid,
-  CONST VOID             *HobStart
-  )
-{
-  EFI_PEI_HOB_POINTERS  GuidHob;
-
-  GuidHob.Raw = (UINT8 *) HobStart;
-  while ((GuidHob.Raw = GetNextHob (EFI_HOB_TYPE_GUID_EXTENSION, GuidHob.Raw)) != NULL) {
-    if (CompareGuid (Guid, &GuidHob.Guid->Name)) {
-      break;
-    }
-    GuidHob.Raw = GET_NEXT_HOB (GuidHob);
-  }
-  return GuidHob.Raw;
-}
-
-/**
-  Returns the first instance of the matched GUID HOB among the whole HOB list.
-**/
-VOID *
-EFIAPI
-GetFirstGuidHob (
-  CONST EFI_GUID         *Guid
-  )
-{
-  VOID      *HobList;
-
-  HobList = GetHobList ();
-  return GetNextGuidHob (Guid, HobList);
-}
diff --git a/src/vendorcode/intel/fsp/rangeley/include/fspapi.h b/src/vendorcode/intel/fsp/rangeley/include/fspapi.h
deleted file mode 100644
index 5009246..0000000
--- a/src/vendorcode/intel/fsp/rangeley/include/fspapi.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef _FSP_API_H_
-#define _FSP_API_H_
-
-#include <fsptypes.h>
-
-#pragma pack(1)
-
-typedef VOID (* CONTINUATION_PROC)(EFI_STATUS Status, VOID *HobListPtr);
-
-typedef struct {
-  VOID               *NvsBufferPtr;
-  VOID               *RtBufferPtr;
-  CONTINUATION_PROC   ContinuationFunc;
-} FSP_INIT_PARAMS;
-
-typedef struct {
-  UINT32            *StackTop;
-  UINT32             BootMode;  /* Refer to boot mode defined in MdePkg\Include\Pi\PiBootMode.h */
-  VOID              *UpdDataRgnPtr;
-  UINT32             Reserved[7];
-} FSP_INIT_RT_COMMON_BUFFER;
-
-typedef enum {
-  EnumInitPhaseAfterPciEnumeration = 0x20,
-  EnumInitPhaseReadyToBoot = 0x40
-} FSP_INIT_PHASE;
-
-typedef struct {
-  FSP_INIT_PHASE     Phase;
-} NOTIFY_PHASE_PARAMS;
-
-#pragma pack()
-
-typedef FSP_STATUS (FSPAPI *FSP_FSP_INIT)    (FSP_INIT_PARAMS     *FspInitParamPtr);
-typedef FSP_STATUS (FSPAPI *FSP_NOTFY_PHASE) (NOTIFY_PHASE_PARAMS *NotifyPhaseParamPtr);
-
-#endif /* _FSP_API_H_ */
diff --git a/src/vendorcode/intel/fsp/rangeley/include/fspbootmode.h b/src/vendorcode/intel/fsp/rangeley/include/fspbootmode.h
deleted file mode 100644
index 16cddf0..0000000
--- a/src/vendorcode/intel/fsp/rangeley/include/fspbootmode.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef __PI_BOOT_MODE_H__
-#define __PI_BOOT_MODE_H__
-
-///
-/// EFI boot mode
-///
-typedef UINT32  EFI_BOOT_MODE;
-
-//
-// 0x21 - 0xf..f are reserved.
-//
-#define BOOT_WITH_FULL_CONFIGURATION                  0x00
-#define BOOT_WITH_MINIMAL_CONFIGURATION               0x01
-#define BOOT_ASSUMING_NO_CONFIGURATION_CHANGES        0x02
-#define BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS 0x03
-#define BOOT_WITH_DEFAULT_SETTINGS                    0x04
-#define BOOT_ON_S4_RESUME                             0x05
-#define BOOT_ON_S5_RESUME                             0x06
-#define BOOT_ON_S2_RESUME                             0x10
-#define BOOT_ON_S3_RESUME                             0x11
-#define BOOT_ON_FLASH_UPDATE                          0x12
-#define BOOT_IN_RECOVERY_MODE                         0x20
-
-#endif
diff --git a/src/vendorcode/intel/fsp/rangeley/include/fspffs.h b/src/vendorcode/intel/fsp/rangeley/include/fspffs.h
deleted file mode 100644
index 9e8244d..0000000
--- a/src/vendorcode/intel/fsp/rangeley/include/fspffs.h
+++ /dev/null
@@ -1,507 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef __PI_FIRMWARE_FILE_H__
-#define __PI_FIRMWARE_FILE_H__
-
-#include <fsptypes.h>
-
-#pragma pack(1)
-///
-/// Used to verify the integrity of the file.
-///
-typedef union {
-  struct {
-    ///
-    /// The IntegrityCheck.Checksum.Header field is an 8-bit checksum of the file
-    /// header. The State and IntegrityCheck.Checksum.File fields are assumed
-    /// to be zero and the checksum is calculated such that the entire header sums to zero.
-    ///
-    UINT8   Header;
-    ///
-    /// If the FFS_ATTRIB_CHECKSUM (see definition below) bit of the Attributes
-    /// field is set to one, the IntegrityCheck.Checksum.File field is an 8-bit
-    /// checksum of the file data.
-    /// If the FFS_ATTRIB_CHECKSUM bit of the Attributes field is cleared to zero,
-    /// the IntegrityCheck.Checksum.File field must be initialized with a value of
-    /// 0xAA. The IntegrityCheck.Checksum.File field is valid any time the
-    /// EFI_FILE_DATA_VALID bit is set in the State field.
-    ///
-    UINT8   File;
-  } Checksum;
-  ///
-  /// This is the full 16 bits of the IntegrityCheck field.
-  ///
-  UINT16    Checksum16;
-} EFI_FFS_INTEGRITY_CHECK;
-
-///
-/// FFS_FIXED_CHECKSUM is the checksum value used when the
-/// FFS_ATTRIB_CHECKSUM attribute bit is clear.
-///
-#define FFS_FIXED_CHECKSUM  0xAA
-
-typedef UINT8 EFI_FV_FILETYPE;
-typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
-typedef UINT8 EFI_FFS_FILE_STATE;
-
-///
-/// File Types Definitions
-///
-#define EFI_FV_FILETYPE_ALL                   0x00
-#define EFI_FV_FILETYPE_RAW                   0x01
-#define EFI_FV_FILETYPE_FREEFORM              0x02
-#define EFI_FV_FILETYPE_SECURITY_CORE         0x03
-#define EFI_FV_FILETYPE_PEI_CORE              0x04
-#define EFI_FV_FILETYPE_DXE_CORE              0x05
-#define EFI_FV_FILETYPE_PEIM                  0x06
-#define EFI_FV_FILETYPE_DRIVER                0x07
-#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER  0x08
-#define EFI_FV_FILETYPE_APPLICATION           0x09
-#define EFI_FV_FILETYPE_SMM                   0x0A
-#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B
-#define EFI_FV_FILETYPE_COMBINED_SMM_DXE      0x0C
-#define EFI_FV_FILETYPE_SMM_CORE              0x0D
-#define EFI_FV_FILETYPE_OEM_MIN               0xc0
-#define EFI_FV_FILETYPE_OEM_MAX               0xdf
-#define EFI_FV_FILETYPE_DEBUG_MIN             0xe0
-#define EFI_FV_FILETYPE_DEBUG_MAX             0xef
-#define EFI_FV_FILETYPE_FFS_MIN               0xf0
-#define EFI_FV_FILETYPE_FFS_MAX               0xff
-#define EFI_FV_FILETYPE_FFS_PAD               0xf0
-///
-/// FFS File Attributes.
-///
-#define FFS_ATTRIB_LARGE_FILE         0x01
-#define FFS_ATTRIB_FIXED              0x04
-#define FFS_ATTRIB_DATA_ALIGNMENT     0x38
-#define FFS_ATTRIB_CHECKSUM           0x40
-
-///
-/// FFS File State Bits.
-///
-#define EFI_FILE_HEADER_CONSTRUCTION  0x01
-#define EFI_FILE_HEADER_VALID         0x02
-#define EFI_FILE_DATA_VALID           0x04
-#define EFI_FILE_MARKED_FOR_UPDATE    0x08
-#define EFI_FILE_DELETED              0x10
-#define EFI_FILE_HEADER_INVALID       0x20
-
-
-///
-/// Each file begins with the header that describe the
-/// contents and state of the files.
-///
-typedef struct {
-  ///
-  /// This GUID is the file name. It is used to uniquely identify the file.
-  ///
-  EFI_GUID                Name;
-  ///
-  /// Used to verify the integrity of the file.
-  ///
-  EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
-  ///
-  /// Identifies the type of file.
-  ///
-  EFI_FV_FILETYPE         Type;
-  ///
-  /// Declares various file attribute bits.
-  ///
-  EFI_FFS_FILE_ATTRIBUTES Attributes;
-  ///
-  /// The length of the file in bytes, including the FFS header.
-  ///
-  UINT8                   Size[3];
-  ///
-  /// Used to track the state of the file throughout the life of the file from creation to deletion.
-  ///
-  EFI_FFS_FILE_STATE      State;
-} EFI_FFS_FILE_HEADER;
-
-typedef struct {
-  ///
-  /// This GUID is the file name. It is used to uniquely identify the file. There may be only
-  /// one instance of a file with the file name GUID of Name in any given firmware
-  /// volume, except if the file type is EFI_FV_FILETYPE_FFS_PAD.
-  ///
-  EFI_GUID                  Name;
-
-  ///
-  /// Used to verify the integrity of the file.
-  ///
-  EFI_FFS_INTEGRITY_CHECK   IntegrityCheck;
-
-  ///
-  /// Identifies the type of file.
-  ///
-  EFI_FV_FILETYPE           Type;
-
-  ///
-  /// Declares various file attribute bits.
-  ///
-  EFI_FFS_FILE_ATTRIBUTES   Attributes;
-
-  ///
-  /// The length of the file in bytes, including the FFS header.
-  /// The length of the file data is either (Size - sizeof(EFI_FFS_FILE_HEADER)). This calculation means a
-  /// zero-length file has a Size of 24 bytes, which is sizeof(EFI_FFS_FILE_HEADER).
-  /// Size is not required to be a multiple of 8 bytes. Given a file F, the next file header is
-  /// located at the next 8-byte aligned firmware volume offset following the last byte of the file F.
-  ///
-  UINT8                     Size[3];
-
-  ///
-  /// Used to track the state of the file throughout the life of the file from creation to deletion.
-  ///
-  EFI_FFS_FILE_STATE        State;
-
-  ///
-  /// If FFS_ATTRIB_LARGE_FILE is set in Attributes, then ExtendedSize exists and Size must be set to zero.
-  /// If FFS_ATTRIB_LARGE_FILE is not set then EFI_FFS_FILE_HEADER is used.
-  ///
-  UINT32                    ExtendedSize;
-} EFI_FFS_FILE_HEADER2;
-
-#define IS_FFS_FILE2(FfsFileHeaderPtr) \
-    (((((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Attributes) & FFS_ATTRIB_LARGE_FILE) == FFS_ATTRIB_LARGE_FILE)
-
-#define FFS_FILE_SIZE(FfsFileHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Size) & 0x00ffffff))
-
-#define FFS_FILE2_SIZE(FfsFileHeaderPtr) \
-    (((EFI_FFS_FILE_HEADER2 *) (UINTN) FfsFileHeaderPtr)->ExtendedSize)
-
-typedef UINT8 EFI_SECTION_TYPE;
-
-///
-/// Pseudo type. It is used as a wild card when retrieving sections.
-///  The section type EFI_SECTION_ALL matches all section types.
-///
-#define EFI_SECTION_ALL                   0x00
-
-///
-/// Encapsulation section Type values.
-///
-#define EFI_SECTION_COMPRESSION           0x01
-
-#define EFI_SECTION_GUID_DEFINED          0x02
-
-#define EFI_SECTION_DISPOSABLE            0x03
-
-///
-/// Leaf section Type values.
-///
-#define EFI_SECTION_PE32                  0x10
-#define EFI_SECTION_PIC                   0x11
-#define EFI_SECTION_TE                    0x12
-#define EFI_SECTION_DXE_DEPEX             0x13
-#define EFI_SECTION_VERSION               0x14
-#define EFI_SECTION_USER_INTERFACE        0x15
-#define EFI_SECTION_COMPATIBILITY16       0x16
-#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17
-#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18
-#define EFI_SECTION_RAW                   0x19
-#define EFI_SECTION_PEI_DEPEX             0x1B
-#define EFI_SECTION_SMM_DEPEX             0x1C
-
-///
-/// Common section header.
-///
-typedef struct {
-  ///
-  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
-  /// including the EFI_COMMON_SECTION_HEADER.
-  ///
-  UINT8             Size[3];
-  EFI_SECTION_TYPE  Type;
-  ///
-  /// Declares the section type.
-  ///
-} EFI_COMMON_SECTION_HEADER;
-
-typedef struct {
-  ///
-  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
-  /// including the EFI_COMMON_SECTION_HEADER.
-  ///
-  UINT8             Size[3];
-
-  EFI_SECTION_TYPE  Type;
-
-  ///
-  /// If Size is 0xFFFFFF, then ExtendedSize contains the size of the section. If
-  /// Size is not equal to 0xFFFFFF, then this field does not exist.
-  ///
-  UINT32            ExtendedSize;
-} EFI_COMMON_SECTION_HEADER2;
-
-///
-/// Leaf section type that contains an
-/// IA-32 16-bit executable image.
-///
-typedef EFI_COMMON_SECTION_HEADER  EFI_COMPATIBILITY16_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2 EFI_COMPATIBILITY16_SECTION2;
-
-///
-/// CompressionType of EFI_COMPRESSION_SECTION.
-///
-#define EFI_NOT_COMPRESSED        0x00
-#define EFI_STANDARD_COMPRESSION  0x01
-///
-/// An encapsulation section type in which the
-/// section data is compressed.
-///
-typedef struct {
-  ///
-  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
-  ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  ///
-  /// The UINT32 that indicates the size of the section data after decompression.
-  ///
-  UINT32                      UncompressedLength;
-  ///
-  /// Indicates which compression algorithm is used.
-  ///
-  UINT8                       CompressionType;
-} EFI_COMPRESSION_SECTION;
-
-typedef struct {
-  ///
-  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
-  ///
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// UINT32 that indicates the size of the section data after decompression.
-  ///
-  UINT32                        UncompressedLength;
-  ///
-  /// Indicates which compression algorithm is used.
-  ///
-  UINT8                         CompressionType;
-} EFI_COMPRESSION_SECTION2;
-
-///
-/// An encapsulation section type in which the section data is disposable.
-/// A disposable section is an encapsulation section in which the section data may be disposed of during
-/// the process of creating or updating a firmware image without significant impact on the usefulness of
-/// the file. The Type field in the section header is set to EFI_SECTION_DISPOSABLE. This
-/// allows optional or descriptive data to be included with the firmware file which can be removed in
-/// order to conserve space. The contents of this section are implementation specific, but might contain
-/// debug data or detailed integration instructions.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_DISPOSABLE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_DISPOSABLE_SECTION2;
-
-///
-/// The leaf section which could be used to determine the dispatch order of DXEs.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_DXE_DEPEX_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_DXE_DEPEX_SECTION2;
-
-///
-/// The leaf section which contains a PI FV.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_FIRMWARE_VOLUME_IMAGE_SECTION2;
-
-///
-/// The leaf section which contains a single GUID.
-///
-typedef struct {
-  ///
-  /// Common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
-  ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  ///
-  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
-  ///
-  EFI_GUID                    SubTypeGuid;
-} EFI_FREEFORM_SUBTYPE_GUID_SECTION;
-
-typedef struct {
-  ///
-  /// The common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
-  ///
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
-  ///
-  EFI_GUID                      SubTypeGuid;
-} EFI_FREEFORM_SUBTYPE_GUID_SECTION2;
-
-///
-/// Attributes of EFI_GUID_DEFINED_SECTION.
-///
-#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED  0x01
-#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID    0x02
-///
-/// The leaf section which is encapsulation defined by specific GUID.
-///
-typedef struct {
-  ///
-  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
-  ///
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  ///
-  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
-  ///
-  EFI_GUID                    SectionDefinitionGuid;
-  ///
-  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
-  ///
-  UINT16                      DataOffset;
-  ///
-  /// The bit field that declares some specific characteristics of the section contents.
-  ///
-  UINT16                      Attributes;
-} EFI_GUID_DEFINED_SECTION;
-
-typedef struct {
-  ///
-  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
-  ///
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
-  ///
-  EFI_GUID                      SectionDefinitionGuid;
-  ///
-  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
-  ///
-  UINT16                        DataOffset;
-  ///
-  /// The bit field that declares some specific characteristics of the section contents.
-  ///
-  UINT16                        Attributes;
-} EFI_GUID_DEFINED_SECTION2;
-
-///
-/// The leaf section which contains PE32+ image.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PE32_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PE32_SECTION2;
-
-///
-/// The leaf section used to determine the dispatch order of PEIMs.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PEI_DEPEX_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PEI_DEPEX_SECTION2;
-
-///
-/// A leaf section type that contains a position-independent-code (PIC) image.
-/// A PIC image section is a leaf section that contains a position-independent-code (PIC) image.
-/// In addition to normal PE32+ images that contain relocation information, PEIM executables may be
-/// PIC and are referred to as PIC images. A PIC image is the same as a PE32+ image except that all
-/// relocation information has been stripped from the image and the image can be moved and will
-/// execute correctly without performing any relocation or other fix-ups. EFI_PIC_SECTION2 must
-/// be used if the section is 16MB or larger.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_PIC_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_PIC_SECTION2;
-
-///
-/// The leaf section which constains the position-independent-code image.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_TE_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_TE_SECTION2;
-
-///
-/// The leaf section which contains an array of zero or more bytes.
-///
-typedef EFI_COMMON_SECTION_HEADER   EFI_RAW_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2  EFI_RAW_SECTION2;
-
-///
-/// The SMM dependency expression section is a leaf section that contains a dependency expression that
-/// is used to determine the dispatch order for SMM drivers. Before the SMRAM invocation of the
-/// SMM driver's entry point, this dependency expression must evaluate to TRUE. See the Platform
-/// Initialization Specification, Volume 2, for details regarding the format of the dependency expression.
-/// The dependency expression may refer to protocols installed in either the UEFI or the SMM protocol
-/// database. EFI_SMM_DEPEX_SECTION2 must be used if the section is 16MB or larger.
-///
-typedef EFI_COMMON_SECTION_HEADER EFI_SMM_DEPEX_SECTION;
-typedef EFI_COMMON_SECTION_HEADER2 EFI_SMM_DEPEX_SECTION2;
-
-///
-/// The leaf section which contains a unicode string that
-/// is human readable file name.
-///
-typedef struct {
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-
-  ///
-  /// Array of unicode string.
-  ///
-  CHAR16                      FileNameString[1];
-} EFI_USER_INTERFACE_SECTION;
-
-typedef struct {
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  CHAR16                        FileNameString[1];
-} EFI_USER_INTERFACE_SECTION2;
-
-///
-/// The leaf section which contains a numeric build number and
-/// an optional unicode string that represents the file revision.
-///
-typedef struct {
-  EFI_COMMON_SECTION_HEADER   CommonHeader;
-  UINT16                      BuildNumber;
-
-  ///
-  /// Array of unicode string.
-  ///
-  CHAR16                      VersionString[1];
-} EFI_VERSION_SECTION;
-
-typedef struct {
-  EFI_COMMON_SECTION_HEADER2    CommonHeader;
-  ///
-  /// A UINT16 that represents a particular build. Subsequent builds have monotonically
-  /// increasing build numbers relative to earlier builds.
-  ///
-  UINT16                        BuildNumber;
-  CHAR16                        VersionString[1];
-} EFI_VERSION_SECTION2;
-
-#define IS_SECTION2(SectionHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff) == 0x00ffffff)
-
-#define SECTION_SIZE(SectionHeaderPtr) \
-    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff))
-
-#define SECTION2_SIZE(SectionHeaderPtr) \
-    (((EFI_COMMON_SECTION_HEADER2 *) (UINTN) SectionHeaderPtr)->ExtendedSize)
-
-#pragma pack()
-
-#endif
diff --git a/src/vendorcode/intel/fsp/rangeley/include/fspfv.h b/src/vendorcode/intel/fsp/rangeley/include/fspfv.h
deleted file mode 100644
index 9688cf4..0000000
--- a/src/vendorcode/intel/fsp/rangeley/include/fspfv.h
+++ /dev/null
@@ -1,249 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef __PI_FIRMWAREVOLUME_H__
-#define __PI_FIRMWAREVOLUME_H__
-
-#include <fsptypes.h>
-
-///
-/// EFI_FV_FILE_ATTRIBUTES
-///
-typedef UINT32  EFI_FV_FILE_ATTRIBUTES;
-
-//
-// Value of EFI_FV_FILE_ATTRIBUTES.
-//
-#define EFI_FV_FILE_ATTRIB_ALIGNMENT      0x0000001F
-#define EFI_FV_FILE_ATTRIB_FIXED          0x00000100
-#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED  0x00000200
-
-///
-/// type of EFI FVB attribute
-///
-typedef UINT32  EFI_FVB_ATTRIBUTES_2;
-
-//
-// Attributes bit definitions
-//
-#define EFI_FVB2_READ_DISABLED_CAP  0x00000001
-#define EFI_FVB2_READ_ENABLED_CAP   0x00000002
-#define EFI_FVB2_READ_STATUS        0x00000004
-#define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008
-#define EFI_FVB2_WRITE_ENABLED_CAP  0x00000010
-#define EFI_FVB2_WRITE_STATUS       0x00000020
-#define EFI_FVB2_LOCK_CAP           0x00000040
-#define EFI_FVB2_LOCK_STATUS        0x00000080
-#define EFI_FVB2_STICKY_WRITE       0x00000200
-#define EFI_FVB2_MEMORY_MAPPED      0x00000400
-#define EFI_FVB2_ERASE_POLARITY     0x00000800
-#define EFI_FVB2_READ_LOCK_CAP      0x00001000
-#define EFI_FVB2_READ_LOCK_STATUS   0x00002000
-#define EFI_FVB2_WRITE_LOCK_CAP     0x00004000
-#define EFI_FVB2_WRITE_LOCK_STATUS  0x00008000
-#define EFI_FVB2_ALIGNMENT          0x001F0000
-#define EFI_FVB2_ALIGNMENT_1        0x00000000
-#define EFI_FVB2_ALIGNMENT_2        0x00010000
-#define EFI_FVB2_ALIGNMENT_4        0x00020000
-#define EFI_FVB2_ALIGNMENT_8        0x00030000
-#define EFI_FVB2_ALIGNMENT_16       0x00040000
-#define EFI_FVB2_ALIGNMENT_32       0x00050000
-#define EFI_FVB2_ALIGNMENT_64       0x00060000
-#define EFI_FVB2_ALIGNMENT_128      0x00070000
-#define EFI_FVB2_ALIGNMENT_256      0x00080000
-#define EFI_FVB2_ALIGNMENT_512      0x00090000
-#define EFI_FVB2_ALIGNMENT_1K       0x000A0000
-#define EFI_FVB2_ALIGNMENT_2K       0x000B0000
-#define EFI_FVB2_ALIGNMENT_4K       0x000C0000
-#define EFI_FVB2_ALIGNMENT_8K       0x000D0000
-#define EFI_FVB2_ALIGNMENT_16K      0x000E0000
-#define EFI_FVB2_ALIGNMENT_32K      0x000F0000
-#define EFI_FVB2_ALIGNMENT_64K      0x00100000
-#define EFI_FVB2_ALIGNMENT_128K     0x00110000
-#define EFI_FVB2_ALIGNMENT_256K     0x00120000
-#define EFI_FVB2_ALIGNMENT_512K     0x00130000
-#define EFI_FVB2_ALIGNMENT_1M       0x00140000
-#define EFI_FVB2_ALIGNMENT_2M       0x00150000
-#define EFI_FVB2_ALIGNMENT_4M       0x00160000
-#define EFI_FVB2_ALIGNMENT_8M       0x00170000
-#define EFI_FVB2_ALIGNMENT_16M      0x00180000
-#define EFI_FVB2_ALIGNMENT_32M      0x00190000
-#define EFI_FVB2_ALIGNMENT_64M      0x001A0000
-#define EFI_FVB2_ALIGNMENT_128M     0x001B0000
-#define EFI_FVB2_ALIGNMENT_256M     0x001C0000
-#define EFI_FVB2_ALIGNMENT_512M     0x001D0000
-#define EFI_FVB2_ALIGNMENT_1G       0x001E0000
-#define EFI_FVB2_ALIGNMENT_2G       0x001F0000
-
-
-typedef struct {
-  ///
-  /// The number of sequential blocks which are of the same size.
-  ///
-  UINT32 NumBlocks;
-  ///
-  /// The size of the blocks.
-  ///
-  UINT32 Length;
-} EFI_FV_BLOCK_MAP_ENTRY;
-
-///
-/// Describes the features and layout of the firmware volume.
-///
-typedef struct {
-  ///
-  /// The first 16 bytes are reserved to allow for the reset vector of
-  /// processors whose reset vector is at address 0.
-  ///
-  UINT8                     ZeroVector[16];
-  ///
-  /// Declares the file system with which the firmware volume is formatted.
-  ///
-  EFI_GUID                  FileSystemGuid;
-  ///
-  /// Length in bytes of the complete firmware volume, including the header.
-  ///
-  UINT64                    FvLength;
-  ///
-  /// Set to EFI_FVH_SIGNATURE
-  ///
-  UINT32                    Signature;
-  ///
-  /// Declares capabilities and power-on defaults for the firmware volume.
-  ///
-  EFI_FVB_ATTRIBUTES_2      Attributes;
-  ///
-  /// Length in bytes of the complete firmware volume header.
-  ///
-  UINT16                    HeaderLength;
-  ///
-  /// A 16-bit checksum of the firmware volume header. A valid header sums to zero.
-  ///
-  UINT16                    Checksum;
-  ///
-  /// Offset, relative to the start of the header, of the extended header
-  /// (EFI_FIRMWARE_VOLUME_EXT_HEADER) or zero if there is no extended header.
-  ///
-  UINT16                    ExtHeaderOffset;
-  ///
-  /// This field must always be set to zero.
-  ///
-  UINT8                     Reserved[1];
-  ///
-  /// Set to 2. Future versions of this specification may define new header fields and will
-  /// increment the Revision field accordingly.
-  ///
-  UINT8                     Revision;
-  ///
-  /// An array of run-length encoded FvBlockMapEntry structures. The array is
-  /// terminated with an entry of {0,0}.
-  ///
-  EFI_FV_BLOCK_MAP_ENTRY    BlockMap[1];
-} EFI_FIRMWARE_VOLUME_HEADER;
-
-#define EFI_FVH_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', 'H')
-
-///
-/// Firmware Volume Header Revision definition
-///
-#define EFI_FVH_REVISION  0x02
-
-///
-/// Extension header pointed by ExtHeaderOffset of volume header.
-///
-typedef struct {
-  ///
-  /// Firmware volume name.
-  ///
-  EFI_GUID  FvName;
-  ///
-  /// Size of the rest of the extension header, including this structure.
-  ///
-  UINT32    ExtHeaderSize;
-} EFI_FIRMWARE_VOLUME_EXT_HEADER;
-
-///
-/// Entry struture for describing FV extension header
-///
-typedef struct {
-  ///
-  /// Size of this header extension.
-  ///
-  UINT16    ExtEntrySize;
-  ///
-  /// Type of the header.
-  ///
-  UINT16    ExtEntryType;
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY;
-
-#define EFI_FV_EXT_TYPE_OEM_TYPE  0x01
-///
-/// This extension header provides a mapping between a GUID and an OEM file type.
-///
-typedef struct {
-  ///
-  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
-  ///
-  EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
-  ///
-  /// A bit mask, one bit for each file type between 0xC0 (bit 0) and 0xDF (bit 31). If a bit
-  /// is '1', then the GUID entry exists in Types. If a bit is '0' then no GUID entry exists in Types.
-  ///
-  UINT32    TypeMask;
-  ///
-  /// An array of GUIDs, each GUID representing an OEM file type.
-  ///
-  /// EFI_GUID  Types[1];
-  ///
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;
-
-#define EFI_FV_EXT_TYPE_GUID_TYPE 0x0002
-
-///
-/// This extension header EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE provides a vendor specific
-/// GUID FormatType type which includes a length and a successive series of data bytes.
-///
-typedef struct {
-  ///
-  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
-  ///
-  EFI_FIRMWARE_VOLUME_EXT_ENTRY     Hdr;
-  ///
-  /// Vendor-specific GUID.
-  ///
-  EFI_GUID                          FormatType;
-  ///
-  /// An arry of bytes of length Length.
-  ///
-  /// UINT8                             Data[1];
-  ///
-} EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE;
-
-#endif
diff --git a/src/vendorcode/intel/fsp/rangeley/include/fsphob.h b/src/vendorcode/intel/fsp/rangeley/include/fsphob.h
deleted file mode 100644
index 0f743b5..0000000
--- a/src/vendorcode/intel/fsp/rangeley/include/fsphob.h
+++ /dev/null
@@ -1,544 +0,0 @@
-/** @file
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef __PI_HOB_H__
-#define __PI_HOB_H__
-
-#include <fsptypes.h>
-
-//
-// HobType of EFI_HOB_GENERIC_HEADER.
-//
-#define EFI_HOB_TYPE_MEMORY_ALLOCATION    0x0002
-#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR  0x0003
-#define EFI_HOB_TYPE_GUID_EXTENSION       0x0004
-#define EFI_HOB_TYPE_UNUSED               0xFFFE
-#define EFI_HOB_TYPE_END_OF_HOB_LIST      0xFFFF
-
-///
-/// Describes the format and size of the data inside the HOB.
-/// All HOBs must contain this generic HOB header.
-///
-typedef struct {
-  ///
-  /// Identifies the HOB data structure type.
-  ///
-  UINT16    HobType;
-  ///
-  /// The length in bytes of the HOB.
-  ///
-  UINT16    HobLength;
-  ///
-  /// This field must always be set to zero.
-  ///
-  UINT32    Reserved;
-} EFI_HOB_GENERIC_HEADER;
-
-///
-/// Enumeration of memory types introduced in UEFI.
-///
-typedef enum {
-  ///
-  /// Not used.
-  ///
-  EfiReservedMemoryType,
-  ///
-  /// The code portions of a loaded application.
-  /// (Note that UEFI OS loaders are UEFI applications.)
-  ///
-  EfiLoaderCode,
-  ///
-  /// The data portions of a loaded application and the default data allocation
-  /// type used by an application to allocate pool memory.
-  ///
-  EfiLoaderData,
-  ///
-  /// The code portions of a loaded Boot Services Driver.
-  ///
-  EfiBootServicesCode,
-  ///
-  /// The data portions of a loaded Boot Serves Driver, and the default data
-  /// allocation type used by a Boot Services Driver to allocate pool memory.
-  ///
-  EfiBootServicesData,
-  ///
-  /// The code portions of a loaded Runtime Services Driver.
-  ///
-  EfiRuntimeServicesCode,
-  ///
-  /// The data portions of a loaded Runtime Services Driver and the default
-  /// data allocation type used by a Runtime Services Driver to allocate pool memory.
-  ///
-  EfiRuntimeServicesData,
-  ///
-  /// Free (unallocated) memory.
-  ///
-  EfiConventionalMemory,
-  ///
-  /// Memory in which errors have been detected.
-  ///
-  EfiUnusableMemory,
-  ///
-  /// Memory that holds the ACPI tables.
-  ///
-  EfiACPIReclaimMemory,
-  ///
-  /// Address space reserved for use by the firmware.
-  ///
-  EfiACPIMemoryNVS,
-  ///
-  /// Used by system firmware to request that a memory-mapped IO region
-  /// be mapped by the OS to a virtual address so it can be accessed by EFI runtime services.
-  ///
-  EfiMemoryMappedIO,
-  ///
-  /// System memory-mapped IO region that is used to translate memory
-  /// cycles to IO cycles by the processor.
-  ///
-  EfiMemoryMappedIOPortSpace,
-  ///
-  /// Address space reserved by the firmware for code that is part of the processor.
-  ///
-  EfiPalCode,
-  EfiMaxMemoryType
-} EFI_MEMORY_TYPE;
-
-///
-/// EFI_HOB_MEMORY_ALLOCATION_HEADER describes the
-/// various attributes of the logical memory allocation. The type field will be used for
-/// subsequent inclusion in the UEFI memory map.
-///
-typedef struct {
-  ///
-  /// A GUID that defines the memory allocation region's type and purpose, as well as
-  /// other fields within the memory allocation HOB. This GUID is used to define the
-  /// additional data within the HOB that may be present for the memory allocation HOB.
-  /// Type EFI_GUID is defined in InstallProtocolInterface() in the UEFI 2.0
-  /// specification.
-  ///
-  EFI_GUID              Name;
-
-  ///
-  /// The base address of memory allocated by this HOB. Type
-  /// EFI_PHYSICAL_ADDRESS is defined in AllocatePages() in the UEFI 2.0
-  /// specification.
-  ///
-  EFI_PHYSICAL_ADDRESS  MemoryBaseAddress;
-
-  ///
-  /// The length in bytes of memory allocated by this HOB.
-  ///
-  UINT64                MemoryLength;
-
-  ///
-  /// Defines the type of memory allocated by this HOB. The memory type definition
-  /// follows the EFI_MEMORY_TYPE definition. Type EFI_MEMORY_TYPE is defined
-  /// in AllocatePages() in the UEFI 2.0 specification.
-  ///
-  EFI_MEMORY_TYPE       MemoryType;
-
-  ///
-  /// Padding for Itanium processor family
-  ///
-  UINT8                 Reserved[4];
-} EFI_HOB_MEMORY_ALLOCATION_HEADER;
-
-///
-/// Describes all memory ranges used during the HOB producer
-/// phase that exist outside the HOB list. This HOB type
-/// describes how memory is used, not the physical attributes of memory.
-///
-typedef struct {
-  ///
-  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
-  ///
-  EFI_HOB_GENERIC_HEADER            Header;
-  ///
-  /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
-  /// various attributes of the logical memory allocation.
-  ///
-  EFI_HOB_MEMORY_ALLOCATION_HEADER  AllocDescriptor;
-  //
-  // Additional data pertaining to the "Name" Guid memory
-  // may go here.
-  //
-} EFI_HOB_MEMORY_ALLOCATION;
-
-///
-/// The resource type.
-///
-typedef UINT32 EFI_RESOURCE_TYPE;
-
-//
-// Value of ResourceType in EFI_HOB_RESOURCE_DESCRIPTOR.
-//
-#define EFI_RESOURCE_SYSTEM_MEMORY          0x00000000
-#define EFI_RESOURCE_MEMORY_MAPPED_IO       0x00000001
-#define EFI_RESOURCE_IO                     0x00000002
-#define EFI_RESOURCE_FIRMWARE_DEVICE        0x00000003
-#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT  0x00000004
-#define EFI_RESOURCE_MEMORY_RESERVED        0x00000005
-#define EFI_RESOURCE_IO_RESERVED            0x00000006
-#define EFI_RESOURCE_MAX_MEMORY_TYPE        0x00000007
-
-///
-/// A type of recount attribute type.
-///
-typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE;
-
-//
-// These types can be ORed together as needed.
-//
-// The first three enumerations describe settings
-//
-#define EFI_RESOURCE_ATTRIBUTE_PRESENT              0x00000001
-#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED          0x00000002
-#define EFI_RESOURCE_ATTRIBUTE_TESTED               0x00000004
-//
-// The rest of the settings describe capabilities
-//
-#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC           0x00000008
-#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC         0x00000010
-#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1           0x00000020
-#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2           0x00000040
-#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED           0x00000080
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED          0x00000100
-#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED      0x00000200
-#define EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE              0x00000400
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE        0x00000800
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE  0x00001000
-#define EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE     0x00002000
-#define EFI_RESOURCE_ATTRIBUTE_16_BIT_IO                0x00004000
-#define EFI_RESOURCE_ATTRIBUTE_32_BIT_IO                0x00008000
-#define EFI_RESOURCE_ATTRIBUTE_64_BIT_IO                0x00010000
-#define EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED        0x00020000
-
-///
-/// Describes the resource properties of all fixed,
-/// nonrelocatable resource ranges found on the processor
-/// host bus during the HOB producer phase.
-///
-typedef struct {
-  ///
-  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_RESOURCE_DESCRIPTOR.
-  ///
-  EFI_HOB_GENERIC_HEADER      Header;
-  ///
-  /// A GUID representing the owner of the resource. This GUID is used by HOB
-  /// consumer phase components to correlate device ownership of a resource.
-  ///
-  EFI_GUID                    Owner;
-  ///
-  /// The resource type enumeration as defined by EFI_RESOURCE_TYPE.
-  ///
-  EFI_RESOURCE_TYPE           ResourceType;
-  ///
-  /// Resource attributes as defined by EFI_RESOURCE_ATTRIBUTE_TYPE.
-  ///
-  EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;
-  ///
-  /// The physical start address of the resource region.
-  ///
-  EFI_PHYSICAL_ADDRESS        PhysicalStart;
-  ///
-  /// The number of bytes of the resource region.
-  ///
-  UINT64                      ResourceLength;
-} EFI_HOB_RESOURCE_DESCRIPTOR;
-
-///
-/// Allows writers of executable content in the HOB producer phase to
-/// maintain and manage HOBs with specific GUID.
-///
-typedef struct {
-  ///
-  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_GUID_EXTENSION.
-  ///
-  EFI_HOB_GENERIC_HEADER      Header;
-  ///
-  /// A GUID that defines the contents of this HOB.
-  ///
-  EFI_GUID                    Name;
-  //
-  // Guid specific data goes here
-  //
-} EFI_HOB_GUID_TYPE;
-
-///
-/// Union of all the possible HOB Types.
-///
-typedef union {
-  EFI_HOB_GENERIC_HEADER              *Header;
-  EFI_HOB_MEMORY_ALLOCATION           *MemoryAllocation;
-  EFI_HOB_RESOURCE_DESCRIPTOR         *ResourceDescriptor;
-  EFI_HOB_GUID_TYPE                   *Guid;
-  UINT8                               *Raw;
-} EFI_PEI_HOB_POINTERS;
-
-
-/**
-  Returns the type of a HOB.
-
-  This macro returns the HobType field from the HOB header for the
-  HOB specified by HobStart.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @return HobType.
-
-**/
-#define GET_HOB_TYPE(HobStart) \
-  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobType)
-
-/**
-  Returns the length, in bytes, of a HOB.
-
-  This macro returns the HobLength field from the HOB header for the
-  HOB specified by HobStart.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @return HobLength.
-
-**/
-#define GET_HOB_LENGTH(HobStart) \
-  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobLength)
-
-/**
-  Returns a pointer to the next HOB in the HOB list.
-
-  This macro returns a pointer to HOB that follows the
-  HOB specified by HobStart in the HOB List.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @return A pointer to the next HOB in the HOB list.
-
-**/
-#define GET_NEXT_HOB(HobStart) \
-  (VOID *)(*(UINT8 **)&(HobStart) + GET_HOB_LENGTH (HobStart))
-
-/**
-  Determines if a HOB is the last HOB in the HOB list.
-
-  This macro determine if the HOB specified by HobStart is the
-  last HOB in the HOB list.  If HobStart is last HOB in the HOB list,
-  then TRUE is returned.  Otherwise, FALSE is returned.
-
-  @param  HobStart   A pointer to a HOB.
-
-  @retval TRUE       The HOB specified by HobStart is the last HOB in the HOB list.
-  @retval FALSE      The HOB specified by HobStart is not the last HOB in the HOB list.
-
-**/
-#define END_OF_HOB_LIST(HobStart)  (GET_HOB_TYPE (HobStart) == (UINT16)EFI_HOB_TYPE_END_OF_HOB_LIST)
-
-/**
-  Returns a pointer to data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  This macro returns a pointer to the data buffer in a HOB specified by HobStart.
-  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  @param   GuidHob   A pointer to a HOB.
-
-  @return  A pointer to the data buffer in a HOB.
-
-**/
-#define GET_GUID_HOB_DATA(HobStart) \
-  (VOID *)(*(UINT8 **)&(HobStart) + sizeof (EFI_HOB_GUID_TYPE))
-
-/**
-  Returns the size of the data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  This macro returns the size, in bytes, of the data buffer in a HOB specified by HobStart.
-  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
-
-  @param   GuidHob   A pointer to a HOB.
-
-  @return  The size of the data buffer.
-**/
-#define GET_GUID_HOB_DATA_SIZE(HobStart) \
-  (UINT16)(GET_HOB_LENGTH (HobStart) - sizeof (EFI_HOB_GUID_TYPE))
-
-/**
-  Returns the pointer to the HOB list.
-
-  This function returns the pointer to first HOB in the list.
-
-  If the pointer to the HOB list is NULL, then ASSERT().
-
-  @return The pointer to the HOB list.
-
-**/
-VOID *
-EFIAPI
-GetHobList (
-  VOID
-  );
-
-/**
-  Returns the next instance of a HOB type from the starting HOB.
-
-  This function searches the first instance of a HOB type from the starting HOB pointer.
-  If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
-  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
-  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
-  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
-
-  If HobStart is NULL, then ASSERT().
-
-  @param  Type          The HOB type to return.
-  @param  HobStart      The starting HOB pointer to search from.
-
-  @return The next instance of a HOB type from the starting HOB.
-
-**/
-VOID *
-EFIAPI
-GetNextHob (
-  UINT16                 Type,
-  CONST VOID             *HobStart
-  );
-
-/**
-  Returns the first instance of a HOB type among the whole HOB list.
-
-  This function searches the first instance of a HOB type among the whole HOB list.
-  If there does not exist such HOB type in the HOB list, it will return NULL.
-
-  If the pointer to the HOB list is NULL, then ASSERT().
-
-  @param  Type          The HOB type to return.
-
-  @return The next instance of a HOB type from the starting HOB.
-
-**/
-VOID *
-EFIAPI
-GetFirstHob (
-  UINT16                 Type
-  );
-
-/**
-  Returns the next instance of the matched GUID HOB from the starting HOB.
-
-  This function searches the first instance of a HOB from the starting HOB pointer.
-  Such HOB should satisfy two conditions:
-  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
-  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
-  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
-  to extract the data section and its size info respectively.
-  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
-  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
-  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
-
-  If Guid is NULL, then ASSERT().
-  If HobStart is NULL, then ASSERT().
-
-  @param  Guid          The GUID to match with in the HOB list.
-  @param  HobStart      A pointer to a Guid.
-
-  @return The next instance of the matched GUID HOB from the starting HOB.
-
-**/
-VOID *
-EFIAPI
-GetNextGuidHob (
-  CONST EFI_GUID         *Guid,
-  CONST VOID             *HobStart
-  );
-
-/**
-  Returns the first instance of the matched GUID HOB among the whole HOB list.
-
-  This function searches the first instance of a HOB among the whole HOB list.
-  Such HOB should satisfy two conditions:
-  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
-  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
-  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
-  to extract the data section and its size info respectively.
-
-  If the pointer to the HOB list is NULL, then ASSERT().
-  If Guid is NULL, then ASSERT().
-
-  @param  Guid          The GUID to match with in the HOB list.
-
-  @return The first instance of the matched GUID HOB among the whole HOB list.
-
-**/
-VOID *
-EFIAPI
-GetFirstGuidHob (
-  CONST EFI_GUID         *Guid
-  );
-
-/**
-  Compares two GUIDs.
-
-  This function compares Guid1 to Guid2.  If the GUIDs are identical then TRUE is returned.
-  If there are any bit differences in the two GUIDs, then FALSE is returned.
-
-  If Guid1 is NULL, then ASSERT().
-  If Guid2 is NULL, then ASSERT().
-
-  @param  Guid1       A pointer to a 128 bit GUID.
-  @param  Guid2       A pointer to a 128 bit GUID.
-
-  @retval TRUE        Guid1 and Guid2 are identical.
-  @retval FALSE       Guid1 and Guid2 are not identical.
-
-**/
-BOOLEAN
-EFIAPI
-CompareGuid (
-  CONST EFI_GUID  *Guid1,
-  CONST EFI_GUID  *Guid2
-  );
-
-/**
-  Reads a 64-bit value from memory that may be unaligned.
-
-  This function returns the 64-bit value pointed to by Buffer. The function
-  guarantees that the read operation does not produce an alignment fault.
-
-  If the Buffer is NULL, then ASSERT().
-
-  @param  Buffer  Pointer to a 64-bit value that may be unaligned.
-
-  @return The 64-bit value read from Buffer.
-
-**/
-UINT64
-EFIAPI
-ReadUnaligned64 (
-  CONST UINT64              *Buffer
-  );
-
-#endif
diff --git a/src/vendorcode/intel/fsp/rangeley/include/fspinfoheader.h b/src/vendorcode/intel/fsp/rangeley/include/fspinfoheader.h
deleted file mode 100644
index 28382cf..0000000
--- a/src/vendorcode/intel/fsp/rangeley/include/fspinfoheader.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*++
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef _FSP_INFO_HEADER_H_
-#define _FSP_INFO_HEADER_H_
-
-#pragma pack(1)
-
-typedef struct  {
-
-  UINT32  Signature;       // Off 0x94
-  UINT32  HeaderLength;
-  UINT8   Reserved1[3];
-  UINT8   HeaderRevision;
-  UINT32  ImageRevision;
-
-  CHAR8   ImageId[8];      // Off 0xA4
-  UINT32  ImageSize;
-  UINT32  ImageBase;
-
-  UINT32  ImageAttribute;  // Off 0xB4
-  UINT32  CfgRegionOffset;
-  UINT32  CfgRegionSize;
-  UINT32  ApiEntryNum;
-
-  UINT32  NemInitEntry;    // Off 0xC4
-  UINT32  FspInitEntry;
-  UINT32  NotifyPhaseEntry;
-  UINT32  Reserved2;
-
-} FSP_INFO_HEADER;
-
-#pragma pack()
-
-#endif
diff --git a/src/vendorcode/intel/fsp/rangeley/include/fspplatform.h b/src/vendorcode/intel/fsp/rangeley/include/fspplatform.h
deleted file mode 100644
index ce479bf..0000000
--- a/src/vendorcode/intel/fsp/rangeley/include/fspplatform.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-**/
-
-#ifndef _FSP_PLATFORM_H_
-#define _FSP_PLATFORM_H_
-
-#include "fsptypes.h"
-#include "fspapi.h"
-
-//
-// Maximum number of SDRAM channels supported by each CPU
-//
-#define MAX_CHANNELS                 2
-//
-// Maximum number of DIMM sockets supported by each channel
-//
-#define MAX_DIMMS                    2
-
-#pragma pack(1)
-//
-// SPD DDR3 structure
-//
-typedef struct {
-  UINT8  DRAMDeviceType;                 // 2   DRAM Device Type
-  UINT8  ModuleType;                     // 3   Module Type
-  UINT8  SDRAMDensityAndBanks;           // 4   SDRAM Density and Banks
-  UINT8  SDRAMAddressing;                // 5   SDRAM Addressing
-  UINT8  VDD;                            // 6   Module Nominal Voltage
-  UINT8  ModuleOrganization;             // 7   Module Organization
-  UINT8  ModuleMemoryBusWidth;           // 8   Module Memory Bus Width
-  UINT8  TimebaseDividend;               // 10  Medium Timebase (MTB) Dividend
-  UINT8  TimebaseDivisor;                // 11  Medium Timebase (MTB) Divisor
-  UINT8  SDRAMMinimumCycleTime;          // 12  SDRAM Minimum Cycle Time (tCKmin)
-  UINT8  CASLatenciesLSB;                // 14  CAS Latencies Supported, Least Significant Byte
-  UINT8  CASLatenciesMSB;                // 15  CAS Latencies Supported, Most Significant Byte
-  UINT8  MinimumCASLatencyTime;          // 16  Minimum CAS Latency Time (tAAmin)
-  UINT8  MinimumWriteRecoveryTime;       // 17  Minimum Write Recovery Time (tWRmin)
-  UINT8  MinimumRASToCASDelayTime;       // 18  Minimum RAS# to CAS# Delay Time (tRCDmin)
-  UINT8  MinimumRowToRowDelayTime;       // 19  Minimum Row Active to Row Active Delay Time (tRRDmin)
-  UINT8  MinimumRowPrechargeDelayTime;   // 20  Minimum Row Precharge Delay Time (tRPmin)
-  UINT8  UpperNibblesFortRASAndtRC;      // 21  Upper Nibbles for tRAS and tRC
-  UINT8  tRASmin;                        // 22  Minimum Active to Precharge Delay Time (tRASmin), Least Significant Byte
-  UINT8  tRCmin;                         // 23  Minimum Active to Active/Refresh Delay Time (tRCmin), Least Significant Byte
-  UINT8  tRFCminLeastSignificantByte;    // 24  Minimum Refresh Recovery Delay Time (tRFCmin), Least Significant Byte
-  UINT8  tRFCminMostSignificantByte;     // 25  Minimum Refresh Recovery Delay Time (tRFCmin), Most Significant Byte
-  UINT8  tWTRmin;                        // 26  Minimum Internal Write to Read Command Delay Time (tWTRmin)
-  UINT8  tRTPmin;                        // 27  Minimum Internal Read to Precharge Command Delay Time (tRTPmin)
-  UINT8  UpperNibbleFortFAW;             // 28  Upper Nibble for tFAW
-  UINT8  tFAWmin;                        // 29  Minimum Four Activate Window Delay Time (tFAWmin)
-  UINT8  ModuleThermalSensor;            // 32  ModuleThermalSensor
-  UINT8  SDRAMDeviceType;                // 33  SDRAM Device Type
-  UINT8  tCKminFine;                     // 34  Fine Offset for SDRAM Minimum Cycle Time (tCKmin)
-  UINT8  tAAminFine;                     // 35  Fine Offset for Minimum CAS Latency Time (tAAmin)
-  UINT8  MACCount;                       // 41  Maximum Activate Count
-  UINT8  ReferenceRawCardUsed;           // 62  Reference Raw Card Used
-  UINT8  AddressMappingEdgeConnector;    // 63  Address Mapping from Edge Connector to DRAM
-  UINT8  ModuleManufacturerIdCodeLsb;    // 117 Module Manufacturer ID Code, Least Significant Byte
-  UINT8  ModuleManufacturerIdCodeMsb;    // 118 Module Manufacturer ID Code, Most Significant Byte
-  UINT8  ModuleManufacturingLocation;    // 119 Module Manufacturing Location
-  UINT8  ModuleManufacturingDateYear;    // 120 Module Manufacturing Date Year
-  UINT8  ModuleManufacturingDateWW;      // 121 Module Manufacturing Date creation work week
-  UINT8  ModuleSerialNumberA;            // 122 Module Serial Number A
-  UINT8  ModuleSerialNumberB;            // 123 Module Serial Number B
-  UINT8  ModuleSerialNumberC;            // 124 Module Serial Number C
-  UINT8  ModuleSerialNumberD;            // 125 Module Serial Number D
-  UINT8  DramManufacturerIdLsb;          // 148 DRAM Manufacturer ID Code, LSB
-  UINT8  DramManufacturerIdMsb;          // 149 DRAM Manufacturer ID Code, MSB
-} MEM_DOWN_DIMM_SPD_DATA;
-
-typedef struct {
-  UINT32   MemoryDownDimmPopulation;  // 0 - Empty, 1 - DIMM populated
-  MEM_DOWN_DIMM_SPD_DATA   MemoryDownDimmSpdData;
-} MEM_DOWN_DIMM_CONFIG;
-
-typedef struct {
-  CONST MEM_DOWN_DIMM_CONFIG  *MemDownDimmConfig[MAX_CHANNELS][MAX_DIMMS];
-} FSP_INIT_RT_PLATFORM_BUFFER;
-
-typedef struct {
-  FSP_INIT_RT_COMMON_BUFFER  Common;
-  FSP_INIT_RT_PLATFORM_BUFFER Platform;
-} FSP_INIT_RT_BUFFER;
-
-#pragma pack()
-
-#endif
\ No newline at end of file
diff --git a/src/vendorcode/intel/fsp/rangeley/include/fsptypes.h b/src/vendorcode/intel/fsp/rangeley/include/fsptypes.h
deleted file mode 100644
index 5912e01..0000000
--- a/src/vendorcode/intel/fsp/rangeley/include/fsptypes.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/******************************************************************************
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
- *****************************************************************************/
-
-/** \file  fsptypes.h
- *
- *
- */
-
-#ifndef __FSP_TYPES_H__
-#define __FSP_TYPES_H__
-
-///
-/// 8-byte unsigned value.
-///
-typedef unsigned long long  UINT64;
-///
-/// 8-byte signed value.
-///
-typedef long long           INT64;
-///
-/// 4-byte unsigned value.
-///
-typedef unsigned int        UINT32;
-///
-/// 4-byte signed value.
-///
-typedef int                 INT32;
-///
-/// 2-byte unsigned value.
-///
-typedef unsigned short      UINT16;
-///
-/// 2-byte Character.  Unless otherwise specified all strings are stored in the
-/// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
-///
-typedef unsigned short      CHAR16;
-///
-/// 2-byte signed value.
-///
-typedef short               INT16;
-///
-/// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
-/// values are undefined.
-///
-typedef unsigned char       BOOLEAN;
-///
-/// 1-byte unsigned value.
-///
-typedef unsigned char       UINT8;
-///
-/// 1-byte Character
-///
-typedef char                CHAR8;
-///
-/// 1-byte signed value
-///
-typedef char                INT8;
-
-typedef void                VOID;
-
-typedef UINT64              EFI_PHYSICAL_ADDRESS;
-
-typedef struct {
-  UINT32  Data1;
-  UINT16  Data2;
-  UINT16  Data3;
-  UINT8   Data4[8];
-} EFI_GUID;
-
-#define CONST     const
-#define STATIC    static
-
-#define TRUE  ((BOOLEAN)(1==1))
-#define FALSE ((BOOLEAN)(0==1))
-
-#define FSPAPI __attribute__((cdecl))
-#define EFIAPI __attribute__((cdecl))
-
-#define ASSERT(Expression)      \
-  do {                          \
-    if (!(Expression)) {        \
-      for (;;);                 \
-    }                           \
-  } while (FALSE)
-
-typedef UINT32 FSP_STATUS;
-typedef UINT32 EFI_STATUS;
-
-///
-/// Compatiable with EFI_STATUS defined in PI Spec.
-#define FSP_SUCCESS               0
-#define FSP_INVALID_PARAMETER     0x80000002
-#define FSP_UNSUPPORTED           0x80000003
-#define FSP_DEVICE_ERROR          0x80000007
-#define FSP_NOT_FOUND             0x8000000E
-#define FSP_ALREADY_STARTED       0x80000014
-
-/**
-  Returns a 16-bit signature built from 2 ASCII characters.
-
-  This macro returns a 16-bit value built from the two ASCII characters specified
-  by A and B.
-
-  @param  A    The first ASCII character.
-  @param  B    The second ASCII character.
-
-  @return A 16-bit value built from the two ASCII characters specified by A and B.
-
-**/
-#define SIGNATURE_16(A, B)        ((A) | (B << 8))
-
-/**
-  Returns a 32-bit signature built from 4 ASCII characters.
-
-  This macro returns a 32-bit value built from the four ASCII characters specified
-  by A, B, C, and D.
-
-  @param  A    The first ASCII character.
-  @param  B    The second ASCII character.
-  @param  C    The third ASCII character.
-  @param  D    The fourth ASCII character.
-
-  @return A 32-bit value built from the two ASCII characters specified by A, B,
-          C and D.
-
-**/
-#define SIGNATURE_32(A, B, C, D)  (SIGNATURE_16 (A, B) | (SIGNATURE_16 (C, D) << 16))
-
-/**
-  Returns a 64-bit signature built from 8 ASCII characters.
-
-  This macro returns a 64-bit value built from the eight ASCII characters specified
-  by A, B, C, D, E, F, G,and H.
-
-  @param  A    The first ASCII character.
-  @param  B    The second ASCII character.
-  @param  C    The third ASCII character.
-  @param  D    The fourth ASCII character.
-  @param  E    The fifth ASCII character.
-  @param  F    The sixth ASCII character.
-  @param  G    The seventh ASCII character.
-  @param  H    The eighth ASCII character.
-
-  @return A 64-bit value built from the two ASCII characters specified by A, B,
-          C, D, E, F, G and H.
-
-**/
-#define SIGNATURE_64(A, B, C, D, E, F, G, H) \
-    (SIGNATURE_32 (A, B, C, D) | ((UINT64) (SIGNATURE_32 (E, F, G, H)) << 32))
-
-#endif
diff --git a/src/vendorcode/intel/fsp/rangeley/include/fspvpd.h b/src/vendorcode/intel/fsp/rangeley/include/fspvpd.h
deleted file mode 100644
index fba38a0..0000000
--- a/src/vendorcode/intel/fsp/rangeley/include/fspvpd.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/** @file
-
-Copyright (C) 2013-2014 Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
-  This file is automatically generated. Please do NOT modify !!!
-
-**/
-
-#ifndef __FSP_VPD_H__
-#define __FSP_VPD_H__
-
-#pragma pack(1)
-
-
-
-typedef struct _UPD_DATA_REGION {
-  UINT64                      Signature;                     /* Offset 0x0000 */
-  UINT64                      Reserved;                      /* Offset 0x0008 */
-  UINT8                       UnusedUpdSpace0[16];           /* Offset 0x0010 */
-  UINT8                       PcdMrcInitTsegSize;            /* Offset 0x0020 */
-  UINT8                       PcdMemoryDown;                 /* Offset 0x0021 */
-  UINT8                       PcdMrcRmtSupport;              /* Offset 0x0022 */
-  UINT8                       PcdMrcRmtCpgcExpLoopCntValue;  /* Offset 0x0023 */
-  UINT8                       PcdMrcRmtCpgcNumBursts;        /* Offset 0x0024 */
-  UINT8                       PcdSpdBaseAddress_0_0;         /* Offset 0x0025 */
-  UINT8                       PcdSpdBaseAddress_0_1;         /* Offset 0x0026 */
-  UINT8                       PcdSpdBaseAddress_1_0;         /* Offset 0x0027 */
-  UINT8                       PcdSpdBaseAddress_1_1;         /* Offset 0x0028 */
-  UINT8                       UnusedUpdSpace1[7];            /* Offset 0x0029 */
-  UINT8                       PcdEnableLan;                  /* Offset 0x0030 */
-  UINT8                       PcdEnableSata2;                /* Offset 0x0031 */
-  UINT8                       PcdEnableSata3;                /* Offset 0x0032 */
-  UINT8                       PcdEnableIQAT;                 /* Offset 0x0033 */
-  UINT8                       PcdEnableUsb20;                /* Offset 0x0034 */
-  UINT8                       PcdBifurcation;                /* Offset 0x0035 */
-  UINT8                       PcdPcieRootPort1DeEmphasis;    /* Offset 0x0036 */
-  UINT8                       PcdPcieRootPort2DeEmphasis;    /* Offset 0x0037 */
-  UINT8                       PcdPcieRootPort3DeEmphasis;    /* Offset 0x0038 */
-  UINT8                       PcdPcieRootPort4DeEmphasis;    /* Offset 0x0039 */
-  UINT8                       UnusedUpdSpace2[6];            /* Offset 0x003A */
-  UINT8                       PcdPrintDebugMessages;         /* Offset 0x0040 */
-  UINT8                       PcdFastboot;                   /* Offset 0x0041 */
-  UINT8                       PcdEccSupport;                 /* Offset 0x0042 */
-  UINT8                       PcdCustomerRevision[32];       /* Offset 0x0043 */
-  UINT8                       UnusedUpdSpace3[13];           /* Offset 0x0063 */
-  UINT16                      PcdRegionTerminator;           /* Offset 0x0070 */
-} UPD_DATA_REGION;
-
-#define VPD_IMAGE_ID    0x562D474E524E5641        /* 'AVNRNG-V' */
-#define VPD_IMAGE_REV   0x00000102
-
-typedef struct _VPD_DATA_REGION {
-  UINT64                      PcdVpdRegionSign;              /* Offset 0x0000 */
-  UINT32                      PcdImageRevision;              /* Offset 0x0008 */
-  UINT32                      PcdUpdRegionOffset;            /* Offset 0x000C */
-  UINT8                       UnusedVpdSpace0[16];           /* Offset 0x0010 */
-  UINT32                      PcdFspReservedMemoryLength;    /* Offset 0x0020 */
-  UINT8                       PcdSpdWriteProtect;            /* Offset 0x0024 */
-} VPD_DATA_REGION;
-
-#pragma pack()
-
-#endif
diff --git a/src/vendorcode/intel/fsp/rangeley/srx/fsphob.c b/src/vendorcode/intel/fsp/rangeley/srx/fsphob.c
deleted file mode 100644
index 4986d52..0000000
--- a/src/vendorcode/intel/fsp/rangeley/srx/fsphob.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/******************************************************************************
-
-Copyright (C) 2013, Intel Corporation
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-* Redistributions in binary form must reproduce the above copyright notice, this
-  list of conditions and the following disclaimer in the documentation and/or
-  other materials provided with the distribution.
-* Neither the name of Intel Corporation nor the names of its contributors may
-  be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-  THE POSSIBILITY OF SUCH DAMAGE.
-
- ******************************************************************************/
-
-/***********************************************************************
- *
- * fsphob.c
- *
- * HOB infrastructure code.
- *
- **********************************************************************/
-#include <string.h>
-
-#include "fsptypes.h"
-#include "fsphob.h"
-
-//
-// Pointer to the HOB should be initialized with the output of FSP INIT PARAMS
-//
-#ifndef __PRE_RAM__
-extern volatile void *FspHobListPtr;
-#endif
-
-/**
-  Reads a 64-bit value from memory that may be unaligned.
-
-  This function returns the 64-bit value pointed to by Buffer. The function
-  guarantees that the read operation does not produce an alignment fault.
-
-  If the Buffer is NULL, then ASSERT().
-
-  @param  Buffer  Pointer to a 64-bit value that may be unaligned.
-
-  @return The 64-bit value read from Buffer.
-
-**/
-UINT64
-EFIAPI
-ReadUnaligned64 (
-  CONST UINT64              *Buffer
-  )
-{
-  ASSERT (Buffer != NULL);
-
-  return *Buffer;
-}
-
-/**
-  Compares two GUIDs.
-
-  This function compares Guid1 to Guid2.  If the GUIDs are identical then TRUE is returned.
-  If there are any bit differences in the two GUIDs, then FALSE is returned.
-
-  If Guid1 is NULL, then ASSERT().
-  If Guid2 is NULL, then ASSERT().
-
-  @param  Guid1       A pointer to a 128 bit GUID.
-  @param  Guid2       A pointer to a 128 bit GUID.
-
-  @retval TRUE        Guid1 and Guid2 are identical.
-  @retval FALSE       Guid1 and Guid2 are not identical.
-
-**/
-BOOLEAN
-EFIAPI
-CompareGuid (
-  CONST EFI_GUID  *Guid1,
-  CONST EFI_GUID  *Guid2
-  )
-{
-  UINT64  LowPartOfGuid1;
-  UINT64  LowPartOfGuid2;
-  UINT64  HighPartOfGuid1;
-  UINT64  HighPartOfGuid2;
-
-  LowPartOfGuid1  = ReadUnaligned64 ((CONST UINT64*) Guid1);
-  LowPartOfGuid2  = ReadUnaligned64 ((CONST UINT64*) Guid2);
-  HighPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1 + 1);
-  HighPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2 + 1);
-
-  return (BOOLEAN) (LowPartOfGuid1 == LowPartOfGuid2 && HighPartOfGuid1 == HighPartOfGuid2);
-}
-
-/**
-  Returns the pointer to the HOB list.
-**/
-VOID *
-EFIAPI
-GetHobList (
-  VOID
-  )
-{
-#ifndef __PRE_RAM__
-  ASSERT (FspHobListPtr != NULL);
-  return ((VOID *)FspHobListPtr);
-#else
-  return ((VOID *)NULL);
-#endif
-}
-
-/**
-  Returns the next instance of a HOB type from the starting HOB.
-**/
-VOID *
-EFIAPI
-GetNextHob (
-  UINT16                 Type,
-  CONST VOID             *HobStart
-  )
-{
-  EFI_PEI_HOB_POINTERS  Hob;
-
-  ASSERT (HobStart != NULL);
-
-  Hob.Raw = (UINT8 *) HobStart;
-  //
-  // Parse the HOB list until end of list or matching type is found.
-  //
-  while (!END_OF_HOB_LIST (Hob)) {
-    if (Hob.Header->HobType == Type) {
-      return Hob.Raw;
-    }
-    Hob.Raw = GET_NEXT_HOB (Hob);
-  }
-  return NULL;
-}
-
-/**
-  Returns the first instance of a HOB type among the whole HOB list.
-**/
-VOID *
-EFIAPI
-GetFirstHob (
-  UINT16                 Type
-  )
-{
-  VOID      *HobList;
-
-  HobList = GetHobList ();
-  return GetNextHob (Type, HobList);
-}
-
-/**
-  Returns the next instance of the matched GUID HOB from the starting HOB.
-**/
-VOID *
-EFIAPI
-GetNextGuidHob (
-  CONST EFI_GUID         *Guid,
-  CONST VOID             *HobStart
-  )
-{
-  EFI_PEI_HOB_POINTERS  GuidHob;
-
-  GuidHob.Raw = (UINT8 *) HobStart;
-  while ((GuidHob.Raw = GetNextHob (EFI_HOB_TYPE_GUID_EXTENSION, GuidHob.Raw)) != NULL) {
-    if (CompareGuid (Guid, &GuidHob.Guid->Name)) {
-      break;
-    }
-    GuidHob.Raw = GET_NEXT_HOB (GuidHob);
-  }
-  return GuidHob.Raw;
-}
-
-/**
-  Returns the first instance of the matched GUID HOB among the whole HOB list.
-**/
-VOID *
-EFIAPI
-GetFirstGuidHob (
-  CONST EFI_GUID         *Guid
-  )
-{
-  VOID      *HobList;
-
-  HobList = GetHobList ();
-  return GetNextGuidHob (Guid, HobList);
-}
diff --git a/src/vendorcode/intel/fsp1_0/baytrail/absf/minnowmax_1gb.absf b/src/vendorcode/intel/fsp1_0/baytrail/absf/minnowmax_1gb.absf
new file mode 100644
index 0000000..66ab0d7
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/baytrail/absf/minnowmax_1gb.absf
@@ -0,0 +1,328 @@
+//
+// This file contains an 'Intel Peripheral Driver' and is
+// licensed for Intel CPUs and chipsets under the terms of your
+// license agreement with Intel or your vendor.  This file must not
+// be modified by end users or could render the generated boot loader
+// inoperable.
+//
+// @file
+// Boot Setting File for Platform: Bayley Bay Platform
+//
+// Copyright (c) 2010-2013 Intel Corporation. All rights reserved
+// This software and associated documentation (if any) is furnished
+// under a license and may only be used or copied in accordance
+// with the terms of the license. Except as permitted by such
+// license, no part of this software or documentation may be
+// reproduced, stored in a retrieval system, or transmitted in any
+// form or by any means without the express written consent of
+// Intel Corporation.
+//
+//
+
+
+GlobalDataDef
+  SKUID = 0 $_AS_BUILT_ = 0x01 , "DEFAULT"
+EndGlobalData
+
+StructDef
+
+    Find "VLV2UPDR"
+    Skip 24 bytes
+    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitTsegSize        2 bytes $_AS_BUILT_ = 0x1, 0x0 $_DEFAULT_ = 0x0001
+    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitMmioSize        2 bytes $_AS_BUILT_ = 0x0, 0x8 $_DEFAULT_ = 0x0800
+    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr1        1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0xA0
+    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr2        1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0xA2
+    $gPlatformFspPkgTokenSpaceGuid_PcdeMMCBootMode           1 byte $_AS_BUILT_ = 0x3 $_DEFAULT_  = 2
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdio             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdcard           1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart0          1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart1          1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSpi              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableLan              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSata             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdSataMode               1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableAzalia           1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0
+    $gPlatformFspPkgTokenSpaceGuid_AzaliaConfigPtr           4 bytes $_AS_BUILT_ = 0x0, 0x0, 0x0, 0x0 $_DEFAULT_  = 0
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableXhci             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableLpe              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdLpssSioEnablePciMode   1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma0             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma1             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C0             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C1             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C2             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C3             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C4             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C5             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C6             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm0             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm1             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsi              1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0
+    $gPlatformFspPkgTokenSpaceGuid_PcdIgdDvmt50PreAlloc      1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
+    $gPlatformFspPkgTokenSpaceGuid_PcdApertureSize           1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
+    $gPlatformFspPkgTokenSpaceGuid_PcdGttSize                1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
+    $gPlatformFspPkgTokenSpaceGuid_ISPEnable                 1 bytes $_AS_BUILT_ = 0x0 $_DEFAULT_ = 0
+
+    Find "VLYVIEW1"
+    $gPlatformFspPkgTokenSpaceGuid_PcdImageRevision          4 bytes $_AS_BUILT_ = 0x2, 0x3, 0x0, 0x0 $_DEFAULT_ = 0x00000302
+    Skip 24 bytes
+    $gPlatformFspPkgTokenSpaceGuid_PcdPlatformType           1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSecureBoot       1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 2
+
+    $DIMM_MemDown             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 0
+    $DRAM_Speed               1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 2
+    $DRAM_Type                1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 1
+    $Rank_En_0_0              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 1
+    $Rank_En_1_0              1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_ = 0
+    $DIMM_DWidth_0_0          1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 0
+    $DIMM_Density_0_0         1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 1
+    $DIMM_BusWidth_0_0        1 byte $_AS_BUILT_ = 0x3 $_DEFAULT_ = 3
+    $DIMM_Sides_0_0           1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_ = 0
+    $tCL                      1 byte $_AS_BUILT_ = 0x7 $_DEFAULT_ = 9
+    $tRP_tRCD                 1 byte $_AS_BUILT_ = 0x7 $_DEFAULT_ = 9
+    $tWR                      1 byte $_AS_BUILT_ = 0x8 $_DEFAULT_ = 10
+    $tWTR                     1 byte $_AS_BUILT_ = 0x4 $_DEFAULT_ = 5
+    $tRRD                     1 byte $_AS_BUILT_ = 0x6 $_DEFAULT_ = 4
+    $tRTP                     1 byte $_AS_BUILT_ = 0x4 $_DEFAULT_ = 5
+    $tFAW                     1 byte $_AS_BUILT_ = 0x14 $_DEFAULT_ = 20
+
+EndStruct
+
+List &DRAMSPEED
+    Selection 0x0 , "800 MHz"
+    Selection 0x1 , "1066 MHz"
+    Selection 0x2 , "1333 MHz"
+    Selection 0x3 , "1600 MHz"
+EndList
+
+List &DRAMTYPE
+    Selection 0x0 , "DDR3"
+    Selection 0x1 , "DDR3L"
+    Selection 0x2 , "DDR3U"
+    //Selection 0x3 , "LPDDR2"
+    Selection 0x4 , "LPDDR2"
+    Selection 0x5 , "LPDDR3"
+    Selection 0x6 , "DDR4"
+EndList
+
+List &DIMMDWIDTH
+    Selection 0x0 , "x8"
+    Selection 0x1 , "x16"
+    Selection 0x2 , "x32"
+EndList
+
+List &DIMMDENSITY
+    Selection 0x0 , "1 Gbit"
+    Selection 0x1 , "2 Gbit"
+    Selection 0x2 , "4 Gbit"
+    Selection 0x3 , "8 Gbit"
+EndList
+
+List &DIMMBUSWIDTH
+    Selection 0x0 , "8 bits"
+    Selection 0x1 , "16 bits"
+    Selection 0x2 , "32 bits"
+    Selection 0x3 , "64 bits"
+EndList
+
+List &RANKPERDIMM
+    Selection 0x1 , "2 Ranks"
+    Selection 0x0 , "1 Rank"
+EndList
+
+List &SATA_MODE
+    Selection 0x1 , "AHCI"
+    Selection 0x0 , "IDE"
+EndList
+
+List &EMMC_MODES
+    Selection 0x0 , "Disabled"
+    Selection 0x1 , "Auto"
+    Selection 0x2 , "eMMC 4.1"
+    Selection 0x3 , "eMMC 4.5"
+EndList
+
+List &EN_DIS
+    Selection 0x1 , "Enabled"
+    Selection 0x0 , "Disabled"
+EndList
+
+List &EN_DIS_AUTO
+    Selection 0x2 , "Auto"
+    Selection 0x1 , "Enabled"
+    Selection 0x0 , "Disabled"
+EndList
+
+List &MMIO_SIZES
+    Selection 0x400, "1.0 GB"
+    Selection 0x600, "1.5 GB"
+    Selection 0x800, "2.0 GB"
+EndList
+
+List &TSEG_SIZES
+    Selection 0x01, "1 MB"
+    Selection 0x02, "2 MB"
+    Selection 0x04, "4 MB"
+    Selection 0x08, "8 MB"
+EndList
+
+List &IGDPREALLOC_SIZES
+    Selection 0x01, "32 MB"
+    Selection 0x02, "64 MB"
+    Selection 0x03, "96 MB"
+    Selection 0x04, "128 MB"
+    Selection 0x05, "160 MB"
+    Selection 0x06, "192 MB"
+    Selection 0x07, "224 MB"
+    Selection 0x08, "256 MB"
+    Selection 0x09, "288 MB"
+    Selection 0x0A, "320 MB"
+    Selection 0x0B, "352 MB"
+    Selection 0x0C, "384 MB"
+    Selection 0x0D, "416 MB"
+    Selection 0x0E, "448 MB"
+    Selection 0x0F, "480 MB"
+    Selection 0x10, "512 MB"
+EndList
+
+List &APERTURE_SIZES
+    Selection 0x1 , "128 MB"
+    Selection 0x2 , "256 MB"
+    Selection 0x3 , "512 MB"
+EndList
+
+List &GTT_SIZES
+    Selection 0x1 , "1 MB"
+    Selection 0x2 , "2 MB"
+EndList
+
+List &PCI_ACPI
+    Selection 0x2 , "ACPI Mode"
+    Selection 0x1 , "PCI Mode"
+    Selection 0x0 , "Disabled"
+EndList
+
+List &PLATFORM_TYPE
+    Selection 0x2 , "BayleyBay Platform Type"
+    Selection 0x3 , "BakerSport Platform (ECC) Type"
+EndList
+
+BeginInfoBlock
+  PPVer "1.0"
+  Description "MinnowMax"
+
+EndInfoBlock
+
+Page "Platform"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdPlatformType, "Platform Type", &PLATFORM_TYPE,
+                Help "Select Platform Type."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSecureBoot, "Enable Secure Boot", &EN_DIS_AUTO,
+                Help "Enable/disable secure boot. Auto by default."
+EndPage
+
+Page "North Complex"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitTsegSize, "Tseg Size", &TSEG_SIZES,
+				Help "Size of memory reserved for SMRAM, in MB."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitMmioSize, "Mmio Size", &MMIO_SIZES,
+                Help "Size of memory address space reserved for MMIO (Memory Mapped I/O), in GB."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdIgdDvmt50PreAlloc, "Internal Graphics Pre-allocated Memory ", &IGDPREALLOC_SIZES,
+                Help "Size of memory preallocated for internal graphics"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdApertureSize, "Aperture Size", &APERTURE_SIZES,
+                Help "Select the Aperture Size"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdGttSize, "GTT Size", &GTT_SIZES,
+                Help "Select the GTT Size"
+    EditNum $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr1, "DIMM 0 SPD SMBus Address", HEX,
+                Help "Address of DIMM 0. 8 bits"
+    EditNum $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr2, "DIMM 1 SPD SMBus Address", HEX,
+                Help "Address of DIMM 1. 8 bits"
+EndPage
+
+Page "Memory Down"
+    Combo $DIMM_MemDown, "Enable Memory Down", &EN_DIS,
+                Help "Enable = Memory Down, Disable = DIMM"
+    Combo $DRAM_Speed, "DRAM Speed", &DRAMSPEED,
+                Help "DRAM Speed"
+    Combo $DRAM_Type, "DRAM Type", &DRAMTYPE,
+                Help "DRAM Type"
+    Combo $Rank_En_0_0, "DIMM 0 Enable", &EN_DIS,
+                Help "Please populate DIMM slot 0 if only one DIMM is supported."
+    Combo $Rank_En_1_0, "DIMM 1 Enable", &EN_DIS,
+                Help "DIMM 1 has to be identical to DIMM 0."
+    Combo $DIMM_DWidth_0_0, "DIMM_DWidth", &DIMMDWIDTH,
+                Help "DRAM device data width."
+    Combo $DIMM_Density_0_0, "DIMM_Density", &DIMMDENSITY,
+                Help "DRAM device data density."
+    Combo $DIMM_BusWidth_0_0, "DIMM_BusWidth", &DIMMBUSWIDTH,
+                Help "DIMM Bus Width."
+    Combo $DIMM_Sides_0_0, "DIMM_Sides", &RANKPERDIMM,
+                Help "Ranks Per DIMM. "
+    EditNum $tCL, "tCL", DEC,
+                Help "tCL"
+    EditNum $tRP_tRCD, "tRP_tRCD", DEC,
+                Help "tRP and tRCD in DRAM clk - 5:12.5ns, 6:15ns, etc."
+    EditNum $tWR, "tWR", DEC,
+                Help "tWR in DRAM clk"
+    EditNum $tWTR, "tWTR", DEC,
+                Help "tWTR in DRAM clk"
+    EditNum $tRRD, "tRRD", DEC,
+                Help "tRRD in DRAM clk"
+    EditNum $tRTP, "tRTP", DEC,
+                Help "tRTP in DRAM clk"
+    EditNum $tFAW, "tFAW", DEC,
+                Help "tFAW in DRAM clk"
+EndPage
+
+Page "South Complex"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdSataMode, "Select SATA Mode", &SATA_MODE,
+                Help "Select SATA boot mode. AHCI by default."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableXhci, "Enable XHCI", &EN_DIS,
+                Help "Enable/disable XHCI. If enabled, all EHCI ports will be routed to XHCI and EHCI will be disabled."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdeMMCBootMode, "eMMC Boot Mode", &EMMC_MODES,
+                Help "Select EMMC Mode."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdio, "Enable SDIO", &EN_DIS,
+                Help "Enable/disable SDIO."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdcard, "Enable SD Card", &EN_DIS,
+                Help "Enable/disable the SD Card."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart0, "Enable HSUART0", &EN_DIS,
+                Help "Enable/disable HSUART0."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart1, "Enable HSUART1", &EN_DIS,
+                Help "Enable/disable HSUART1."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSpi, "Enable SPI", &EN_DIS,
+                Help "Enable/disable SPI."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableLan, "Enable LAN", &EN_DIS,
+                Help "Enable/disable LAN."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableAzalia, "Enable Azalia", &EN_DIS_AUTO,
+                Help "Enable/disable Azalia. Auto by default."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSata, "Enable SATA", &EN_DIS,
+                Help "Enable/disable SATA."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableLpe, "Enable LPE", &PCI_ACPI,
+                Help "Choose LPE Mode"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdLpssSioEnablePciMode, "Enable PCI mode for LPSS SIO devices", &EN_DIS,
+                Help "Enable PCI Mode for LPSS SIO devices. If disabled, LPSS SIO devices will run in ACPI mode."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma0, "Enable DMA0", &EN_DIS,
+                Help "Enable/disable DMA0"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma1, "Enable DMA1", &EN_DIS,
+                Help "Enable/disable DMA1"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C0, "Enable I2C0", &EN_DIS,
+                Help "Enable/disable I2C0"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C1, "Enable I2C1", &EN_DIS,
+                Help "Enable/disable I2C1"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C2, "Enable I2C2", &EN_DIS,
+                Help "Enable/disable I2C2"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C3, "Enable I2C3", &EN_DIS,
+                Help "Enable/disable I2C3"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C4, "Enable I2C4", &EN_DIS,
+                Help "Enable/disable I2C4"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C5, "Enable I2C5", &EN_DIS,
+                Help "Enable/disable I2C5"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C6, "Enable I2C6", &EN_DIS,
+                Help "Enable/disable I2C6"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm0, "Enable PWM0", &EN_DIS,
+                Help "Enable/disable PWM0"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm1, "Enable PWM1", &EN_DIS,
+                Help "Enable/disable PWM1"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsi, "Enable HSI", &EN_DIS,
+                Help "Enable/disable HSI"
+    Combo $gPlatformFspPkgTokenSpaceGuid_ISPEnable, "Enable ISP", &EN_DIS,
+                Help "Enable/disable ISP."
+EndPage
diff --git a/src/vendorcode/intel/fsp1_0/baytrail/absf/minnowmax_2gb.absf b/src/vendorcode/intel/fsp1_0/baytrail/absf/minnowmax_2gb.absf
new file mode 100644
index 0000000..6992fe7
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/baytrail/absf/minnowmax_2gb.absf
@@ -0,0 +1,328 @@
+//
+// This file contains an 'Intel Peripheral Driver' and is
+// licensed for Intel CPUs and chipsets under the terms of your
+// license agreement with Intel or your vendor.  This file must not
+// be modified by end users or could render the generated boot loader
+// inoperable.
+//
+// @file
+// Boot Setting File for Platform: Bayley Bay Platform
+//
+// Copyright (c) 2010-2013 Intel Corporation. All rights reserved
+// This software and associated documentation (if any) is furnished
+// under a license and may only be used or copied in accordance
+// with the terms of the license. Except as permitted by such
+// license, no part of this software or documentation may be
+// reproduced, stored in a retrieval system, or transmitted in any
+// form or by any means without the express written consent of
+// Intel Corporation.
+//
+//
+
+
+GlobalDataDef
+  SKUID = 0 $_AS_BUILT_ = 0x01 , "DEFAULT"
+EndGlobalData
+
+StructDef
+
+    Find "VLV2UPDR"
+    Skip 24 bytes
+    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitTsegSize        2 bytes $_AS_BUILT_ = 0x1, 0x0 $_DEFAULT_ = 0x0001
+    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitMmioSize        2 bytes $_AS_BUILT_ = 0x0, 0x8 $_DEFAULT_ = 0x0800
+    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr1        1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0xA0
+    $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr2        1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0xA2
+    $gPlatformFspPkgTokenSpaceGuid_PcdeMMCBootMode           1 byte $_AS_BUILT_ = 0x3 $_DEFAULT_  = 2
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdio             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdcard           1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart0          1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart1          1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSpi              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableLan              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSata             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdSataMode               1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableAzalia           1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0
+    $gPlatformFspPkgTokenSpaceGuid_AzaliaConfigPtr           4 bytes $_AS_BUILT_ = 0x0, 0x0, 0x0, 0x0 $_DEFAULT_  = 0
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableXhci             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableLpe              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdLpssSioEnablePciMode   1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma0             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma1             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C0             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C1             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C2             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C3             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C4             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C5             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C6             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm0             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm1             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_  = 1
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsi              1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 0
+    $gPlatformFspPkgTokenSpaceGuid_PcdIgdDvmt50PreAlloc      1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
+    $gPlatformFspPkgTokenSpaceGuid_PcdApertureSize           1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
+    $gPlatformFspPkgTokenSpaceGuid_PcdGttSize                1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
+    $gPlatformFspPkgTokenSpaceGuid_ISPEnable                 1 bytes $_AS_BUILT_ = 0x0 $_DEFAULT_ = 0
+
+    Find "VLYVIEW1"
+    $gPlatformFspPkgTokenSpaceGuid_PcdImageRevision          4 bytes $_AS_BUILT_ = 0x2, 0x3, 0x0, 0x0 $_DEFAULT_ = 0x00000302
+    Skip 24 bytes
+    $gPlatformFspPkgTokenSpaceGuid_PcdPlatformType           1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_  = 2
+    $gPlatformFspPkgTokenSpaceGuid_PcdEnableSecureBoot       1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_  = 2
+
+    $DIMM_MemDown             1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 0
+    $DRAM_Speed               1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 2
+    $DRAM_Type                1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 1
+    $Rank_En_0_0              1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 1
+    $Rank_En_1_0              1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_ = 0
+    $DIMM_DWidth_0_0          1 byte $_AS_BUILT_ = 0x1 $_DEFAULT_ = 0
+    $DIMM_Density_0_0         1 byte $_AS_BUILT_ = 0x2 $_DEFAULT_ = 1
+    $DIMM_BusWidth_0_0        1 byte $_AS_BUILT_ = 0x3 $_DEFAULT_ = 3
+    $DIMM_Sides_0_0           1 byte $_AS_BUILT_ = 0x0 $_DEFAULT_ = 0
+    $tCL                      1 byte $_AS_BUILT_ = 0x7 $_DEFAULT_ = 9
+    $tRP_tRCD                 1 byte $_AS_BUILT_ = 0x7 $_DEFAULT_ = 9
+    $tWR                      1 byte $_AS_BUILT_ = 0x8 $_DEFAULT_ = 10
+    $tWTR                     1 byte $_AS_BUILT_ = 0x4 $_DEFAULT_ = 5
+    $tRRD                     1 byte $_AS_BUILT_ = 0x6 $_DEFAULT_ = 4
+    $tRTP                     1 byte $_AS_BUILT_ = 0x4 $_DEFAULT_ = 5
+    $tFAW                     1 byte $_AS_BUILT_ = 0x14 $_DEFAULT_ = 20
+
+EndStruct
+
+List &DRAMSPEED
+    Selection 0x0 , "800 MHz"
+    Selection 0x1 , "1066 MHz"
+    Selection 0x2 , "1333 MHz"
+    Selection 0x3 , "1600 MHz"
+EndList
+
+List &DRAMTYPE
+    Selection 0x0 , "DDR3"
+    Selection 0x1 , "DDR3L"
+    Selection 0x2 , "DDR3U"
+    //Selection 0x3 , "LPDDR2"
+    Selection 0x4 , "LPDDR2"
+    Selection 0x5 , "LPDDR3"
+    Selection 0x6 , "DDR4"
+EndList
+
+List &DIMMDWIDTH
+    Selection 0x0 , "x8"
+    Selection 0x1 , "x16"
+    Selection 0x2 , "x32"
+EndList
+
+List &DIMMDENSITY
+    Selection 0x0 , "1 Gbit"
+    Selection 0x1 , "2 Gbit"
+    Selection 0x2 , "4 Gbit"
+    Selection 0x3 , "8 Gbit"
+EndList
+
+List &DIMMBUSWIDTH
+    Selection 0x0 , "8 bits"
+    Selection 0x1 , "16 bits"
+    Selection 0x2 , "32 bits"
+    Selection 0x3 , "64 bits"
+EndList
+
+List &RANKPERDIMM
+    Selection 0x1 , "2 Ranks"
+    Selection 0x0 , "1 Rank"
+EndList
+
+List &SATA_MODE
+    Selection 0x1 , "AHCI"
+    Selection 0x0 , "IDE"
+EndList
+
+List &EMMC_MODES
+    Selection 0x0 , "Disabled"
+    Selection 0x1 , "Auto"
+    Selection 0x2 , "eMMC 4.1"
+    Selection 0x3 , "eMMC 4.5"
+EndList
+
+List &EN_DIS
+    Selection 0x1 , "Enabled"
+    Selection 0x0 , "Disabled"
+EndList
+
+List &EN_DIS_AUTO
+    Selection 0x2 , "Auto"
+    Selection 0x1 , "Enabled"
+    Selection 0x0 , "Disabled"
+EndList
+
+List &MMIO_SIZES
+    Selection 0x400, "1.0 GB"
+    Selection 0x600, "1.5 GB"
+    Selection 0x800, "2.0 GB"
+EndList
+
+List &TSEG_SIZES
+    Selection 0x01, "1 MB"
+    Selection 0x02, "2 MB"
+    Selection 0x04, "4 MB"
+    Selection 0x08, "8 MB"
+EndList
+
+List &IGDPREALLOC_SIZES
+    Selection 0x01, "32 MB"
+    Selection 0x02, "64 MB"
+    Selection 0x03, "96 MB"
+    Selection 0x04, "128 MB"
+    Selection 0x05, "160 MB"
+    Selection 0x06, "192 MB"
+    Selection 0x07, "224 MB"
+    Selection 0x08, "256 MB"
+    Selection 0x09, "288 MB"
+    Selection 0x0A, "320 MB"
+    Selection 0x0B, "352 MB"
+    Selection 0x0C, "384 MB"
+    Selection 0x0D, "416 MB"
+    Selection 0x0E, "448 MB"
+    Selection 0x0F, "480 MB"
+    Selection 0x10, "512 MB"
+EndList
+
+List &APERTURE_SIZES
+    Selection 0x1 , "128 MB"
+    Selection 0x2 , "256 MB"
+    Selection 0x3 , "512 MB"
+EndList
+
+List &GTT_SIZES
+    Selection 0x1 , "1 MB"
+    Selection 0x2 , "2 MB"
+EndList
+
+List &PCI_ACPI
+    Selection 0x2 , "ACPI Mode"
+    Selection 0x1 , "PCI Mode"
+    Selection 0x0 , "Disabled"
+EndList
+
+List &PLATFORM_TYPE
+    Selection 0x2 , "BayleyBay Platform Type"
+    Selection 0x3 , "BakerSport Platform (ECC) Type"
+EndList
+
+BeginInfoBlock
+  PPVer "1.0"
+  Description "MinnowMax"
+
+EndInfoBlock
+
+Page "Platform"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdPlatformType, "Platform Type", &PLATFORM_TYPE,
+                Help "Select Platform Type."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSecureBoot, "Enable Secure Boot", &EN_DIS_AUTO,
+                Help "Enable/disable secure boot. Auto by default."
+EndPage
+
+Page "North Complex"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitTsegSize, "Tseg Size", &TSEG_SIZES,
+				Help "Size of memory reserved for SMRAM, in MB."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitMmioSize, "Mmio Size", &MMIO_SIZES,
+                Help "Size of memory address space reserved for MMIO (Memory Mapped I/O), in GB."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdIgdDvmt50PreAlloc, "Internal Graphics Pre-allocated Memory ", &IGDPREALLOC_SIZES,
+                Help "Size of memory preallocated for internal graphics"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdApertureSize, "Aperture Size", &APERTURE_SIZES,
+                Help "Select the Aperture Size"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdGttSize, "GTT Size", &GTT_SIZES,
+                Help "Select the GTT Size"
+    EditNum $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr1, "DIMM 0 SPD SMBus Address", HEX,
+                Help "Address of DIMM 0. 8 bits"
+    EditNum $gPlatformFspPkgTokenSpaceGuid_PcdMrcInitSPDAddr2, "DIMM 1 SPD SMBus Address", HEX,
+                Help "Address of DIMM 1. 8 bits"
+EndPage
+
+Page "Memory Down"
+    Combo $DIMM_MemDown, "Enable Memory Down", &EN_DIS,
+                Help "Enable = Memory Down, Disable = DIMM"
+    Combo $DRAM_Speed, "DRAM Speed", &DRAMSPEED,
+                Help "DRAM Speed"
+    Combo $DRAM_Type, "DRAM Type", &DRAMTYPE,
+                Help "DRAM Type"
+    Combo $Rank_En_0_0, "DIMM 0 Enable", &EN_DIS,
+                Help "Please populate DIMM slot 0 if only one DIMM is supported."
+    Combo $Rank_En_1_0, "DIMM 1 Enable", &EN_DIS,
+                Help "DIMM 1 has to be identical to DIMM 0."
+    Combo $DIMM_DWidth_0_0, "DIMM_DWidth", &DIMMDWIDTH,
+                Help "DRAM device data width."
+    Combo $DIMM_Density_0_0, "DIMM_Density", &DIMMDENSITY,
+                Help "DRAM device data density."
+    Combo $DIMM_BusWidth_0_0, "DIMM_BusWidth", &DIMMBUSWIDTH,
+                Help "DIMM Bus Width."
+    Combo $DIMM_Sides_0_0, "DIMM_Sides", &RANKPERDIMM,
+                Help "Ranks Per DIMM. "
+    EditNum $tCL, "tCL", DEC,
+                Help "tCL"
+    EditNum $tRP_tRCD, "tRP_tRCD", DEC,
+                Help "tRP and tRCD in DRAM clk - 5:12.5ns, 6:15ns, etc."
+    EditNum $tWR, "tWR", DEC,
+                Help "tWR in DRAM clk"
+    EditNum $tWTR, "tWTR", DEC,
+                Help "tWTR in DRAM clk"
+    EditNum $tRRD, "tRRD", DEC,
+                Help "tRRD in DRAM clk"
+    EditNum $tRTP, "tRTP", DEC,
+                Help "tRTP in DRAM clk"
+    EditNum $tFAW, "tFAW", DEC,
+                Help "tFAW in DRAM clk"
+EndPage
+
+Page "South Complex"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdSataMode, "Select SATA Mode", &SATA_MODE,
+                Help "Select SATA boot mode. AHCI by default."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableXhci, "Enable XHCI", &EN_DIS,
+                Help "Enable/disable XHCI. If enabled, all EHCI ports will be routed to XHCI and EHCI will be disabled."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdeMMCBootMode, "eMMC Boot Mode", &EMMC_MODES,
+                Help "Select EMMC Mode."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdio, "Enable SDIO", &EN_DIS,
+                Help "Enable/disable SDIO."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSdcard, "Enable SD Card", &EN_DIS,
+                Help "Enable/disable the SD Card."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart0, "Enable HSUART0", &EN_DIS,
+                Help "Enable/disable HSUART0."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsuart1, "Enable HSUART1", &EN_DIS,
+                Help "Enable/disable HSUART1."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSpi, "Enable SPI", &EN_DIS,
+                Help "Enable/disable SPI."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableLan, "Enable LAN", &EN_DIS,
+                Help "Enable/disable LAN."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableAzalia, "Enable Azalia", &EN_DIS_AUTO,
+                Help "Enable/disable Azalia. Auto by default."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableSata, "Enable SATA", &EN_DIS,
+                Help "Enable/disable SATA."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableLpe, "Enable LPE", &PCI_ACPI,
+                Help "Choose LPE Mode"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdLpssSioEnablePciMode, "Enable PCI mode for LPSS SIO devices", &EN_DIS,
+                Help "Enable PCI Mode for LPSS SIO devices. If disabled, LPSS SIO devices will run in ACPI mode."
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma0, "Enable DMA0", &EN_DIS,
+                Help "Enable/disable DMA0"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableDma1, "Enable DMA1", &EN_DIS,
+                Help "Enable/disable DMA1"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C0, "Enable I2C0", &EN_DIS,
+                Help "Enable/disable I2C0"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C1, "Enable I2C1", &EN_DIS,
+                Help "Enable/disable I2C1"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C2, "Enable I2C2", &EN_DIS,
+                Help "Enable/disable I2C2"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C3, "Enable I2C3", &EN_DIS,
+                Help "Enable/disable I2C3"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C4, "Enable I2C4", &EN_DIS,
+                Help "Enable/disable I2C4"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C5, "Enable I2C5", &EN_DIS,
+                Help "Enable/disable I2C5"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableI2C6, "Enable I2C6", &EN_DIS,
+                Help "Enable/disable I2C6"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm0, "Enable PWM0", &EN_DIS,
+                Help "Enable/disable PWM0"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnablePwm1, "Enable PWM1", &EN_DIS,
+                Help "Enable/disable PWM1"
+    Combo $gPlatformFspPkgTokenSpaceGuid_PcdEnableHsi, "Enable HSI", &EN_DIS,
+                Help "Enable/disable HSI"
+    Combo $gPlatformFspPkgTokenSpaceGuid_ISPEnable, "Enable ISP", &EN_DIS,
+                Help "Enable/disable ISP."
+EndPage
diff --git a/src/vendorcode/intel/fsp1_0/baytrail/include/azalia.h b/src/vendorcode/intel/fsp1_0/baytrail/include/azalia.h
new file mode 100644
index 0000000..c58cf4c
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/baytrail/include/azalia.h
@@ -0,0 +1,66 @@
+/**@file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef _AZALIA_H_
+#define _AZALIA_H_
+
+#include <stdint.h>
+
+#pragma pack(1)
+
+typedef struct {
+  uint32_t  VendorDeviceId;
+  uint16_t  SubSystemId;
+  uint8_t   RevisionId;                       /// 0xFF applies to all steppings
+  uint8_t   FrontPanelSupport;
+  uint16_t  NumberOfRearJacks;
+  uint16_t  NumberOfFrontJacks;
+} PCH_AZALIA_VERB_TABLE_HEADER;
+
+typedef struct {
+  PCH_AZALIA_VERB_TABLE_HEADER  VerbTableHeader;
+  uint32_t                        *VerbTableData;
+} PCH_AZALIA_VERB_TABLE;
+
+typedef struct {
+  uint8_t                 Pme       : 1;      /// 0: Disable; 1: Enable
+  uint8_t                 DS        : 1;      /// 0: Docking is not supported; 1:Docking is supported
+  uint8_t                 DA        : 1;      /// 0: Docking is not attached; 1:Docking is attached
+  uint8_t                 HdmiCodec : 1;      /// 0: Disable; 1: Enable
+  uint8_t                 AzaliaVCi : 1;      /// 0: Disable; 1: Enable
+  uint8_t                 Rsvdbits  : 3;
+  uint8_t                 AzaliaVerbTableNum; /// Number of verb tables provided by platform
+  PCH_AZALIA_VERB_TABLE  *AzaliaVerbTable;   /// Pointer to the actual verb table(s)
+  uint16_t                ResetWaitTimer;     /// The delay timer after Azalia reset, the value is number of microseconds
+} PCH_AZALIA_CONFIG;
+
+#pragma pack()
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/baytrail/include/fsp.h b/src/vendorcode/intel/fsp1_0/baytrail/include/fsp.h
new file mode 100644
index 0000000..f2e1d8f
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/baytrail/include/fsp.h
@@ -0,0 +1,69 @@
+/**
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+/** \file  fsp.h
+ *
+ *
+ */
+#include <stdint.h>
+#include "fsptypes.h"
+#include "fspfv.h"
+#include "fspffs.h"
+#include "fsphob.h"
+#include "fspapi.h"
+#include "fspplatform.h"
+#include "fspinfoheader.h"
+#include "fspvpd.h"
+
+#define FSP_HOB_RESOURCE_OWNER_FSP_GUID \
+{ 0x69a79759, 0x1373, 0x4367, { 0xa6, 0xc4, 0xc7, 0xf5, 0x9e, 0xfd, 0x98, 0x6e } }
+#define FSP_NON_VOLATILE_STORAGE_HOB_GUID \
+{ 0x721acf02, 0x4d77, 0x4c2a, { 0xb3, 0xdc, 0x27, 0xb, 0x7b, 0xa9, 0xe4, 0xb0 } }
+#define FSP_HOB_RESOURCE_OWNER_TSEG_GUID \
+{ 0xd038747c, 0xd00c, 0x4980, { 0xb3, 0x19, 0x49, 0x01, 0x99, 0xa4, 0x7d, 0x55 } }
+#define FSP_HOB_RESOURCE_OWNER_GRAPHICS_GUID \
+{ 0x9c7c3aa7, 0x5332, 0x4917, { 0x82, 0xb9, 0x56, 0xa5, 0xf3, 0xe6, 0x2a, 0x07 } }
+#define FSP_BOOTLOADER_TEMPORARY_MEMORY_HOB_GUID \
+{ 0xbbcff46c, 0xc8d3, 0x4113, { 0x89, 0x85, 0xb9, 0xd4, 0xf3, 0xb3, 0xf6, 0x4e } }
+
+//
+// 0x21 - 0xf..f are reserved.
+//
+#define BOOT_WITH_FULL_CONFIGURATION                  0x00
+#define BOOT_WITH_MINIMAL_CONFIGURATION               0x01
+#define BOOT_ASSUMING_NO_CONFIGURATION_CHANGES        0x02
+#define BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS 0x03
+#define BOOT_WITH_DEFAULT_SETTINGS                    0x04
+#define BOOT_ON_S4_RESUME                             0x05
+#define BOOT_ON_S5_RESUME                             0x06
+#define BOOT_ON_S2_RESUME                             0x10
+#define BOOT_ON_S3_RESUME                             0x11
+#define BOOT_ON_FLASH_UPDATE                          0x12
+#define BOOT_IN_RECOVERY_MODE                         0x20
diff --git a/src/vendorcode/intel/fsp1_0/baytrail/include/fspapi.h b/src/vendorcode/intel/fsp1_0/baytrail/include/fspapi.h
new file mode 100644
index 0000000..26afc0e
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/baytrail/include/fspapi.h
@@ -0,0 +1,65 @@
+/**
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef _FSP_API_H_
+#define _FSP_API_H_
+
+#pragma pack(1)
+
+typedef VOID (* CONTINUATION_PROC)(EFI_STATUS Status, VOID *HobListPtr);
+
+typedef struct {
+  VOID               *NvsBufferPtr;
+  VOID               *RtBufferPtr;
+  CONTINUATION_PROC   ContinuationFunc;
+} FSP_INIT_PARAMS;
+
+typedef struct {
+  UINT32            *StackTop;
+  UINT32             BootMode;
+  VOID              *UpdDataRgnPtr;
+  UINT32             Reserved[7];
+} FSP_INIT_RT_COMMON_BUFFER;
+
+typedef enum {
+  EnumInitPhaseAfterPciEnumeration = 0x20,
+  EnumInitPhaseReadyToBoot = 0x40
+} FSP_INIT_PHASE;
+
+typedef struct {
+  FSP_INIT_PHASE     Phase;
+} NOTIFY_PHASE_PARAMS;
+
+#pragma pack()
+
+typedef FSP_STATUS (FSPAPI *FSP_FSP_INIT)    (FSP_INIT_PARAMS     *FspInitParamPtr);
+typedef FSP_STATUS (FSPAPI *FSP_NOTFY_PHASE) (NOTIFY_PHASE_PARAMS *NotifyPhaseParamPtr);
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/baytrail/include/fspffs.h b/src/vendorcode/intel/fsp1_0/baytrail/include/fspffs.h
new file mode 100644
index 0000000..f3b83b2
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/baytrail/include/fspffs.h
@@ -0,0 +1,506 @@
+/**
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+
+#ifndef __PI_FIRMWARE_FILE_H__
+#define __PI_FIRMWARE_FILE_H__
+
+#pragma pack(1)
+///
+/// Used to verify the integrity of the file.
+///
+typedef union {
+  struct {
+    ///
+    /// The IntegrityCheck.Checksum.Header field is an 8-bit checksum of the file
+    /// header. The State and IntegrityCheck.Checksum.File fields are assumed
+    /// to be zero and the checksum is calculated such that the entire header sums to zero.
+    ///
+    UINT8   Header;
+    ///
+    /// If the FFS_ATTRIB_CHECKSUM (see definition below) bit of the Attributes
+    /// field is set to one, the IntegrityCheck.Checksum.File field is an 8-bit
+    /// checksum of the file data.
+    /// If the FFS_ATTRIB_CHECKSUM bit of the Attributes field is cleared to zero,
+    /// the IntegrityCheck.Checksum.File field must be initialized with a value of
+    /// 0xAA. The IntegrityCheck.Checksum.File field is valid any time the
+    /// EFI_FILE_DATA_VALID bit is set in the State field.
+    ///
+    UINT8   File;
+  } Checksum;
+  ///
+  /// This is the full 16 bits of the IntegrityCheck field.
+  ///
+  UINT16    Checksum16;
+} EFI_FFS_INTEGRITY_CHECK;
+
+///
+/// FFS_FIXED_CHECKSUM is the checksum value used when the
+/// FFS_ATTRIB_CHECKSUM attribute bit is clear.
+///
+#define FFS_FIXED_CHECKSUM  0xAA
+
+typedef UINT8 EFI_FV_FILETYPE;
+typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
+typedef UINT8 EFI_FFS_FILE_STATE;
+
+///
+/// File Types Definitions
+///
+#define EFI_FV_FILETYPE_ALL                   0x00
+#define EFI_FV_FILETYPE_RAW                   0x01
+#define EFI_FV_FILETYPE_FREEFORM              0x02
+#define EFI_FV_FILETYPE_SECURITY_CORE         0x03
+#define EFI_FV_FILETYPE_PEI_CORE              0x04
+#define EFI_FV_FILETYPE_DXE_CORE              0x05
+#define EFI_FV_FILETYPE_PEIM                  0x06
+#define EFI_FV_FILETYPE_DRIVER                0x07
+#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER  0x08
+#define EFI_FV_FILETYPE_APPLICATION           0x09
+#define EFI_FV_FILETYPE_SMM                   0x0A
+#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B
+#define EFI_FV_FILETYPE_COMBINED_SMM_DXE      0x0C
+#define EFI_FV_FILETYPE_SMM_CORE              0x0D
+#define EFI_FV_FILETYPE_OEM_MIN               0xc0
+#define EFI_FV_FILETYPE_OEM_MAX               0xdf
+#define EFI_FV_FILETYPE_DEBUG_MIN             0xe0
+#define EFI_FV_FILETYPE_DEBUG_MAX             0xef
+#define EFI_FV_FILETYPE_FFS_MIN               0xf0
+#define EFI_FV_FILETYPE_FFS_MAX               0xff
+#define EFI_FV_FILETYPE_FFS_PAD               0xf0
+///
+/// FFS File Attributes.
+///
+#define FFS_ATTRIB_LARGE_FILE         0x01
+#define FFS_ATTRIB_FIXED              0x04
+#define FFS_ATTRIB_DATA_ALIGNMENT     0x38
+#define FFS_ATTRIB_CHECKSUM           0x40
+
+///
+/// FFS File State Bits.
+///
+#define EFI_FILE_HEADER_CONSTRUCTION  0x01
+#define EFI_FILE_HEADER_VALID         0x02
+#define EFI_FILE_DATA_VALID           0x04
+#define EFI_FILE_MARKED_FOR_UPDATE    0x08
+#define EFI_FILE_DELETED              0x10
+#define EFI_FILE_HEADER_INVALID       0x20
+
+
+///
+/// Each file begins with the header that describe the
+/// contents and state of the files.
+///
+typedef struct {
+  ///
+  /// This GUID is the file name. It is used to uniquely identify the file.
+  ///
+  EFI_GUID                Name;
+  ///
+  /// Used to verify the integrity of the file.
+  ///
+  EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
+  ///
+  /// Identifies the type of file.
+  ///
+  EFI_FV_FILETYPE         Type;
+  ///
+  /// Declares various file attribute bits.
+  ///
+  EFI_FFS_FILE_ATTRIBUTES Attributes;
+  ///
+  /// The length of the file in bytes, including the FFS header.
+  ///
+  UINT8                   Size[3];
+  ///
+  /// Used to track the state of the file throughout the life of the file from creation to deletion.
+  ///
+  EFI_FFS_FILE_STATE      State;
+} EFI_FFS_FILE_HEADER;
+
+typedef struct {
+  ///
+  /// This GUID is the file name. It is used to uniquely identify the file. There may be only
+  /// one instance of a file with the file name GUID of Name in any given firmware
+  /// volume, except if the file type is EFI_FV_FILETYPE_FFS_PAD.
+  ///
+  EFI_GUID                  Name;
+
+  ///
+  /// Used to verify the integrity of the file.
+  ///
+  EFI_FFS_INTEGRITY_CHECK   IntegrityCheck;
+
+  ///
+  /// Identifies the type of file.
+  ///
+  EFI_FV_FILETYPE           Type;
+
+  ///
+  /// Declares various file attribute bits.
+  ///
+  EFI_FFS_FILE_ATTRIBUTES   Attributes;
+
+  ///
+  /// The length of the file in bytes, including the FFS header.
+  /// The length of the file data is either (Size - sizeof(EFI_FFS_FILE_HEADER)). This calculation means a
+  /// zero-length file has a Size of 24 bytes, which is sizeof(EFI_FFS_FILE_HEADER).
+  /// Size is not required to be a multiple of 8 bytes. Given a file F, the next file header is
+  /// located at the next 8-byte aligned firmware volume offset following the last byte of the file F.
+  ///
+  UINT8                     Size[3];
+
+  ///
+  /// Used to track the state of the file throughout the life of the file from creation to deletion.
+  ///
+  EFI_FFS_FILE_STATE        State;
+
+  ///
+  /// If FFS_ATTRIB_LARGE_FILE is set in Attributes, then ExtendedSize exists and Size must be set to zero.
+  /// If FFS_ATTRIB_LARGE_FILE is not set then EFI_FFS_FILE_HEADER is used.
+  ///
+  UINT32                    ExtendedSize;
+} EFI_FFS_FILE_HEADER2;
+
+#define IS_FFS_FILE2(FfsFileHeaderPtr) \
+    (((((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Attributes) & FFS_ATTRIB_LARGE_FILE) == FFS_ATTRIB_LARGE_FILE)
+
+#define FFS_FILE_SIZE(FfsFileHeaderPtr) \
+    ((UINT32) (*((UINT32 *) ((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Size) & 0x00ffffff))
+
+#define FFS_FILE2_SIZE(FfsFileHeaderPtr) \
+    (((EFI_FFS_FILE_HEADER2 *) (UINTN) FfsFileHeaderPtr)->ExtendedSize)
+
+typedef UINT8 EFI_SECTION_TYPE;
+
+///
+/// Pseudo type. It is used as a wild card when retrieving sections.
+///  The section type EFI_SECTION_ALL matches all section types.
+///
+#define EFI_SECTION_ALL                   0x00
+
+///
+/// Encapsulation section Type values.
+///
+#define EFI_SECTION_COMPRESSION           0x01
+
+#define EFI_SECTION_GUID_DEFINED          0x02
+
+#define EFI_SECTION_DISPOSABLE            0x03
+
+///
+/// Leaf section Type values.
+///
+#define EFI_SECTION_PE32                  0x10
+#define EFI_SECTION_PIC                   0x11
+#define EFI_SECTION_TE                    0x12
+#define EFI_SECTION_DXE_DEPEX             0x13
+#define EFI_SECTION_VERSION               0x14
+#define EFI_SECTION_USER_INTERFACE        0x15
+#define EFI_SECTION_COMPATIBILITY16       0x16
+#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17
+#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18
+#define EFI_SECTION_RAW                   0x19
+#define EFI_SECTION_PEI_DEPEX             0x1B
+#define EFI_SECTION_SMM_DEPEX             0x1C
+
+///
+/// Common section header.
+///
+typedef struct {
+  ///
+  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
+  /// including the EFI_COMMON_SECTION_HEADER.
+  ///
+  UINT8             Size[3];
+  EFI_SECTION_TYPE  Type;
+  ///
+  /// Declares the section type.
+  ///
+} EFI_COMMON_SECTION_HEADER;
+
+typedef struct {
+  ///
+  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
+  /// including the EFI_COMMON_SECTION_HEADER.
+  ///
+  UINT8             Size[3];
+
+  EFI_SECTION_TYPE  Type;
+
+  ///
+  /// If Size is 0xFFFFFF, then ExtendedSize contains the size of the section. If
+  /// Size is not equal to 0xFFFFFF, then this field does not exist.
+  ///
+  UINT32            ExtendedSize;
+} EFI_COMMON_SECTION_HEADER2;
+
+///
+/// Leaf section type that contains an
+/// IA-32 16-bit executable image.
+///
+typedef EFI_COMMON_SECTION_HEADER  EFI_COMPATIBILITY16_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_COMPATIBILITY16_SECTION2;
+
+///
+/// CompressionType of EFI_COMPRESSION_SECTION.
+///
+#define EFI_NOT_COMPRESSED        0x00
+#define EFI_STANDARD_COMPRESSION  0x01
+///
+/// An encapsulation section type in which the
+/// section data is compressed.
+///
+typedef struct {
+  ///
+  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
+  ///
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  ///
+  /// The UINT32 that indicates the size of the section data after decompression.
+  ///
+  UINT32                      UncompressedLength;
+  ///
+  /// Indicates which compression algorithm is used.
+  ///
+  UINT8                       CompressionType;
+} EFI_COMPRESSION_SECTION;
+
+typedef struct {
+  ///
+  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
+  ///
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// UINT32 that indicates the size of the section data after decompression.
+  ///
+  UINT32                        UncompressedLength;
+  ///
+  /// Indicates which compression algorithm is used.
+  ///
+  UINT8                         CompressionType;
+} EFI_COMPRESSION_SECTION2;
+
+///
+/// An encapsulation section type in which the section data is disposable.
+/// A disposable section is an encapsulation section in which the section data may be disposed of during
+/// the process of creating or updating a firmware image without significant impact on the usefulness of
+/// the file. The Type field in the section header is set to EFI_SECTION_DISPOSABLE. This
+/// allows optional or descriptive data to be included with the firmware file which can be removed in
+/// order to conserve space. The contents of this section are implementation specific, but might contain
+/// debug data or detailed integration instructions.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_DISPOSABLE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_DISPOSABLE_SECTION2;
+
+///
+/// The leaf section which could be used to determine the dispatch order of DXEs.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_DXE_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_DXE_DEPEX_SECTION2;
+
+///
+/// The leaf section which contains a PI FV.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_FIRMWARE_VOLUME_IMAGE_SECTION2;
+
+///
+/// The leaf section which contains a single GUID.
+///
+typedef struct {
+  ///
+  /// Common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
+  ///
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  ///
+  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
+  ///
+  EFI_GUID                    SubTypeGuid;
+} EFI_FREEFORM_SUBTYPE_GUID_SECTION;
+
+typedef struct {
+  ///
+  /// The common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
+  ///
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
+  ///
+  EFI_GUID                      SubTypeGuid;
+} EFI_FREEFORM_SUBTYPE_GUID_SECTION2;
+
+///
+/// Attributes of EFI_GUID_DEFINED_SECTION.
+///
+#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED  0x01
+#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID    0x02
+///
+/// The leaf section which is encapsulation defined by specific GUID.
+///
+typedef struct {
+  ///
+  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
+  ///
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  ///
+  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
+  ///
+  EFI_GUID                    SectionDefinitionGuid;
+  ///
+  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
+  ///
+  UINT16                      DataOffset;
+  ///
+  /// The bit field that declares some specific characteristics of the section contents.
+  ///
+  UINT16                      Attributes;
+} EFI_GUID_DEFINED_SECTION;
+
+typedef struct {
+  ///
+  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
+  ///
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
+  ///
+  EFI_GUID                      SectionDefinitionGuid;
+  ///
+  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
+  ///
+  UINT16                        DataOffset;
+  ///
+  /// The bit field that declares some specific characteristics of the section contents.
+  ///
+  UINT16                        Attributes;
+} EFI_GUID_DEFINED_SECTION2;
+
+///
+/// The leaf section which contains PE32+ image.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_PE32_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_PE32_SECTION2;
+
+///
+/// The leaf section used to determine the dispatch order of PEIMs.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_PEI_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_PEI_DEPEX_SECTION2;
+
+///
+/// A leaf section type that contains a position-independent-code (PIC) image.
+/// A PIC image section is a leaf section that contains a position-independent-code (PIC) image.
+/// In addition to normal PE32+ images that contain relocation information, PEIM executables may be
+/// PIC and are referred to as PIC images. A PIC image is the same as a PE32+ image except that all
+/// relocation information has been stripped from the image and the image can be moved and will
+/// execute correctly without performing any relocation or other fix-ups. EFI_PIC_SECTION2 must
+/// be used if the section is 16MB or larger.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_PIC_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_PIC_SECTION2;
+
+///
+/// The leaf section which constains the position-independent-code image.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_TE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_TE_SECTION2;
+
+///
+/// The leaf section which contains an array of zero or more bytes.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_RAW_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_RAW_SECTION2;
+
+///
+/// The SMM dependency expression section is a leaf section that contains a dependency expression that
+/// is used to determine the dispatch order for SMM drivers. Before the SMRAM invocation of the
+/// SMM driver's entry point, this dependency expression must evaluate to TRUE. See the Platform
+/// Initialization Specification, Volume 2, for details regarding the format of the dependency expression.
+/// The dependency expression may refer to protocols installed in either the UEFI or the SMM protocol
+/// database. EFI_SMM_DEPEX_SECTION2 must be used if the section is 16MB or larger.
+///
+typedef EFI_COMMON_SECTION_HEADER EFI_SMM_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_SMM_DEPEX_SECTION2;
+
+///
+/// The leaf section which contains a unicode string that
+/// is human readable file name.
+///
+typedef struct {
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+
+  ///
+  /// Array of unicode string.
+  ///
+  CHAR16                      FileNameString[1];
+} EFI_USER_INTERFACE_SECTION;
+
+typedef struct {
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  CHAR16                        FileNameString[1];
+} EFI_USER_INTERFACE_SECTION2;
+
+///
+/// The leaf section which contains a numeric build number and
+/// an optional unicode string that represents the file revision.
+///
+typedef struct {
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  UINT16                      BuildNumber;
+
+  ///
+  /// Array of unicode string.
+  ///
+  CHAR16                      VersionString[1];
+} EFI_VERSION_SECTION;
+
+typedef struct {
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// A UINT16 that represents a particular build. Subsequent builds have monotonically
+  /// increasing build numbers relative to earlier builds.
+  ///
+  UINT16                        BuildNumber;
+  CHAR16                        VersionString[1];
+} EFI_VERSION_SECTION2;
+
+#define IS_SECTION2(SectionHeaderPtr) \
+    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff) == 0x00ffffff)
+
+#define SECTION_SIZE(SectionHeaderPtr) \
+    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff))
+
+#define SECTION2_SIZE(SectionHeaderPtr) \
+    (((EFI_COMMON_SECTION_HEADER2 *) (UINTN) SectionHeaderPtr)->ExtendedSize)
+
+#pragma pack()
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/baytrail/include/fspfv.h b/src/vendorcode/intel/fsp1_0/baytrail/include/fspfv.h
new file mode 100644
index 0000000..26c00f2
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/baytrail/include/fspfv.h
@@ -0,0 +1,247 @@
+/**
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef __PI_FIRMWAREVOLUME_H__
+#define __PI_FIRMWAREVOLUME_H__
+
+///
+/// EFI_FV_FILE_ATTRIBUTES
+///
+typedef UINT32  EFI_FV_FILE_ATTRIBUTES;
+
+//
+// Value of EFI_FV_FILE_ATTRIBUTES.
+//
+#define EFI_FV_FILE_ATTRIB_ALIGNMENT      0x0000001F
+#define EFI_FV_FILE_ATTRIB_FIXED          0x00000100
+#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED  0x00000200
+
+///
+/// type of EFI FVB attribute
+///
+typedef UINT32  EFI_FVB_ATTRIBUTES_2;
+
+//
+// Attributes bit definitions
+//
+#define EFI_FVB2_READ_DISABLED_CAP  0x00000001
+#define EFI_FVB2_READ_ENABLED_CAP   0x00000002
+#define EFI_FVB2_READ_STATUS        0x00000004
+#define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008
+#define EFI_FVB2_WRITE_ENABLED_CAP  0x00000010
+#define EFI_FVB2_WRITE_STATUS       0x00000020
+#define EFI_FVB2_LOCK_CAP           0x00000040
+#define EFI_FVB2_LOCK_STATUS        0x00000080
+#define EFI_FVB2_STICKY_WRITE       0x00000200
+#define EFI_FVB2_MEMORY_MAPPED      0x00000400
+#define EFI_FVB2_ERASE_POLARITY     0x00000800
+#define EFI_FVB2_READ_LOCK_CAP      0x00001000
+#define EFI_FVB2_READ_LOCK_STATUS   0x00002000
+#define EFI_FVB2_WRITE_LOCK_CAP     0x00004000
+#define EFI_FVB2_WRITE_LOCK_STATUS  0x00008000
+#define EFI_FVB2_ALIGNMENT          0x001F0000
+#define EFI_FVB2_ALIGNMENT_1        0x00000000
+#define EFI_FVB2_ALIGNMENT_2        0x00010000
+#define EFI_FVB2_ALIGNMENT_4        0x00020000
+#define EFI_FVB2_ALIGNMENT_8        0x00030000
+#define EFI_FVB2_ALIGNMENT_16       0x00040000
+#define EFI_FVB2_ALIGNMENT_32       0x00050000
+#define EFI_FVB2_ALIGNMENT_64       0x00060000
+#define EFI_FVB2_ALIGNMENT_128      0x00070000
+#define EFI_FVB2_ALIGNMENT_256      0x00080000
+#define EFI_FVB2_ALIGNMENT_512      0x00090000
+#define EFI_FVB2_ALIGNMENT_1K       0x000A0000
+#define EFI_FVB2_ALIGNMENT_2K       0x000B0000
+#define EFI_FVB2_ALIGNMENT_4K       0x000C0000
+#define EFI_FVB2_ALIGNMENT_8K       0x000D0000
+#define EFI_FVB2_ALIGNMENT_16K      0x000E0000
+#define EFI_FVB2_ALIGNMENT_32K      0x000F0000
+#define EFI_FVB2_ALIGNMENT_64K      0x00100000
+#define EFI_FVB2_ALIGNMENT_128K     0x00110000
+#define EFI_FVB2_ALIGNMENT_256K     0x00120000
+#define EFI_FVB2_ALIGNMENT_512K     0x00130000
+#define EFI_FVB2_ALIGNMENT_1M       0x00140000
+#define EFI_FVB2_ALIGNMENT_2M       0x00150000
+#define EFI_FVB2_ALIGNMENT_4M       0x00160000
+#define EFI_FVB2_ALIGNMENT_8M       0x00170000
+#define EFI_FVB2_ALIGNMENT_16M      0x00180000
+#define EFI_FVB2_ALIGNMENT_32M      0x00190000
+#define EFI_FVB2_ALIGNMENT_64M      0x001A0000
+#define EFI_FVB2_ALIGNMENT_128M     0x001B0000
+#define EFI_FVB2_ALIGNMENT_256M     0x001C0000
+#define EFI_FVB2_ALIGNMENT_512M     0x001D0000
+#define EFI_FVB2_ALIGNMENT_1G       0x001E0000
+#define EFI_FVB2_ALIGNMENT_2G       0x001F0000
+
+
+typedef struct {
+  ///
+  /// The number of sequential blocks which are of the same size.
+  ///
+  UINT32 NumBlocks;
+  ///
+  /// The size of the blocks.
+  ///
+  UINT32 Length;
+} EFI_FV_BLOCK_MAP_ENTRY;
+
+///
+/// Describes the features and layout of the firmware volume.
+///
+typedef struct {
+  ///
+  /// The first 16 bytes are reserved to allow for the reset vector of
+  /// processors whose reset vector is at address 0.
+  ///
+  UINT8                     ZeroVector[16];
+  ///
+  /// Declares the file system with which the firmware volume is formatted.
+  ///
+  EFI_GUID                  FileSystemGuid;
+  ///
+  /// Length in bytes of the complete firmware volume, including the header.
+  ///
+  UINT64                    FvLength;
+  ///
+  /// Set to EFI_FVH_SIGNATURE
+  ///
+  UINT32                    Signature;
+  ///
+  /// Declares capabilities and power-on defaults for the firmware volume.
+  ///
+  EFI_FVB_ATTRIBUTES_2      Attributes;
+  ///
+  /// Length in bytes of the complete firmware volume header.
+  ///
+  UINT16                    HeaderLength;
+  ///
+  /// A 16-bit checksum of the firmware volume header. A valid header sums to zero.
+  ///
+  UINT16                    Checksum;
+  ///
+  /// Offset, relative to the start of the header, of the extended header
+  /// (EFI_FIRMWARE_VOLUME_EXT_HEADER) or zero if there is no extended header.
+  ///
+  UINT16                    ExtHeaderOffset;
+  ///
+  /// This field must always be set to zero.
+  ///
+  UINT8                     Reserved[1];
+  ///
+  /// Set to 2. Future versions of this specification may define new header fields and will
+  /// increment the Revision field accordingly.
+  ///
+  UINT8                     Revision;
+  ///
+  /// An array of run-length encoded FvBlockMapEntry structures. The array is
+  /// terminated with an entry of {0,0}.
+  ///
+  EFI_FV_BLOCK_MAP_ENTRY    BlockMap[1];
+} EFI_FIRMWARE_VOLUME_HEADER;
+
+#define EFI_FVH_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', 'H')
+
+///
+/// Firmware Volume Header Revision definition
+///
+#define EFI_FVH_REVISION  0x02
+
+///
+/// Extension header pointed by ExtHeaderOffset of volume header.
+///
+typedef struct {
+  ///
+  /// Firmware volume name.
+  ///
+  EFI_GUID  FvName;
+  ///
+  /// Size of the rest of the extension header, including this structure.
+  ///
+  UINT32    ExtHeaderSize;
+} EFI_FIRMWARE_VOLUME_EXT_HEADER;
+
+///
+/// Entry struture for describing FV extension header
+///
+typedef struct {
+  ///
+  /// Size of this header extension.
+  ///
+  UINT16    ExtEntrySize;
+  ///
+  /// Type of the header.
+  ///
+  UINT16    ExtEntryType;
+} EFI_FIRMWARE_VOLUME_EXT_ENTRY;
+
+#define EFI_FV_EXT_TYPE_OEM_TYPE  0x01
+///
+/// This extension header provides a mapping between a GUID and an OEM file type.
+///
+typedef struct {
+  ///
+  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
+  ///
+  EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
+  ///
+  /// A bit mask, one bit for each file type between 0xC0 (bit 0) and 0xDF (bit 31). If a bit
+  /// is '1', then the GUID entry exists in Types. If a bit is '0' then no GUID entry exists in Types.
+  ///
+  UINT32    TypeMask;
+  ///
+  /// An array of GUIDs, each GUID representing an OEM file type.
+  ///
+  /// EFI_GUID  Types[1];
+  ///
+} EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;
+
+#define EFI_FV_EXT_TYPE_GUID_TYPE 0x0002
+
+///
+/// This extension header EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE provides a vendor specific
+/// GUID FormatType type which includes a length and a successive series of data bytes.
+///
+typedef struct {
+  ///
+  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
+  ///
+  EFI_FIRMWARE_VOLUME_EXT_ENTRY     Hdr;
+  ///
+  /// Vendor-specific GUID.
+  ///
+  EFI_GUID                          FormatType;
+  ///
+  /// An arry of bytes of length Length.
+  ///
+  /// UINT8                             Data[1];
+  ///
+} EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE;
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/baytrail/include/fsphob.h b/src/vendorcode/intel/fsp1_0/baytrail/include/fsphob.h
new file mode 100644
index 0000000..7edef0d
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/baytrail/include/fsphob.h
@@ -0,0 +1,542 @@
+/**
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef __PI_HOB_H__
+#define __PI_HOB_H__
+
+//
+// HobType of EFI_HOB_GENERIC_HEADER.
+//
+#define EFI_HOB_TYPE_MEMORY_ALLOCATION    0x0002
+#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR  0x0003
+#define EFI_HOB_TYPE_GUID_EXTENSION       0x0004
+#define EFI_HOB_TYPE_UNUSED               0xFFFE
+#define EFI_HOB_TYPE_END_OF_HOB_LIST      0xFFFF
+
+///
+/// Describes the format and size of the data inside the HOB.
+/// All HOBs must contain this generic HOB header.
+///
+typedef struct {
+  ///
+  /// Identifies the HOB data structure type.
+  ///
+  UINT16    HobType;
+  ///
+  /// The length in bytes of the HOB.
+  ///
+  UINT16    HobLength;
+  ///
+  /// This field must always be set to zero.
+  ///
+  UINT32    Reserved;
+} EFI_HOB_GENERIC_HEADER;
+
+///
+/// Enumeration of memory types introduced in UEFI.
+///
+typedef enum {
+  ///
+  /// Not used.
+  ///
+  EfiReservedMemoryType,
+  ///
+  /// The code portions of a loaded application.
+  /// (Note that UEFI OS loaders are UEFI applications.)
+  ///
+  EfiLoaderCode,
+  ///
+  /// The data portions of a loaded application and the default data allocation
+  /// type used by an application to allocate pool memory.
+  ///
+  EfiLoaderData,
+  ///
+  /// The code portions of a loaded Boot Services Driver.
+  ///
+  EfiBootServicesCode,
+  ///
+  /// The data portions of a loaded Boot Serves Driver, and the default data
+  /// allocation type used by a Boot Services Driver to allocate pool memory.
+  ///
+  EfiBootServicesData,
+  ///
+  /// The code portions of a loaded Runtime Services Driver.
+  ///
+  EfiRuntimeServicesCode,
+  ///
+  /// The data portions of a loaded Runtime Services Driver and the default
+  /// data allocation type used by a Runtime Services Driver to allocate pool memory.
+  ///
+  EfiRuntimeServicesData,
+  ///
+  /// Free (unallocated) memory.
+  ///
+  EfiConventionalMemory,
+  ///
+  /// Memory in which errors have been detected.
+  ///
+  EfiUnusableMemory,
+  ///
+  /// Memory that holds the ACPI tables.
+  ///
+  EfiACPIReclaimMemory,
+  ///
+  /// Address space reserved for use by the firmware.
+  ///
+  EfiACPIMemoryNVS,
+  ///
+  /// Used by system firmware to request that a memory-mapped IO region
+  /// be mapped by the OS to a virtual address so it can be accessed by EFI runtime services.
+  ///
+  EfiMemoryMappedIO,
+  ///
+  /// System memory-mapped IO region that is used to translate memory
+  /// cycles to IO cycles by the processor.
+  ///
+  EfiMemoryMappedIOPortSpace,
+  ///
+  /// Address space reserved by the firmware for code that is part of the processor.
+  ///
+  EfiPalCode,
+  EfiMaxMemoryType
+} EFI_MEMORY_TYPE;
+
+///
+/// EFI_HOB_MEMORY_ALLOCATION_HEADER describes the
+/// various attributes of the logical memory allocation. The type field will be used for
+/// subsequent inclusion in the UEFI memory map.
+///
+typedef struct {
+  ///
+  /// A GUID that defines the memory allocation region's type and purpose, as well as
+  /// other fields within the memory allocation HOB. This GUID is used to define the
+  /// additional data within the HOB that may be present for the memory allocation HOB.
+  /// Type EFI_GUID is defined in InstallProtocolInterface() in the UEFI 2.0
+  /// specification.
+  ///
+  EFI_GUID              Name;
+
+  ///
+  /// The base address of memory allocated by this HOB. Type
+  /// EFI_PHYSICAL_ADDRESS is defined in AllocatePages() in the UEFI 2.0
+  /// specification.
+  ///
+  EFI_PHYSICAL_ADDRESS  MemoryBaseAddress;
+
+  ///
+  /// The length in bytes of memory allocated by this HOB.
+  ///
+  UINT64                MemoryLength;
+
+  ///
+  /// Defines the type of memory allocated by this HOB. The memory type definition
+  /// follows the EFI_MEMORY_TYPE definition. Type EFI_MEMORY_TYPE is defined
+  /// in AllocatePages() in the UEFI 2.0 specification.
+  ///
+  EFI_MEMORY_TYPE       MemoryType;
+
+  ///
+  /// Padding for Itanium processor family
+  ///
+  UINT8                 Reserved[4];
+} EFI_HOB_MEMORY_ALLOCATION_HEADER;
+
+///
+/// Describes all memory ranges used during the HOB producer
+/// phase that exist outside the HOB list. This HOB type
+/// describes how memory is used, not the physical attributes of memory.
+///
+typedef struct {
+  ///
+  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
+  ///
+  EFI_HOB_GENERIC_HEADER            Header;
+  ///
+  /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
+  /// various attributes of the logical memory allocation.
+  ///
+  EFI_HOB_MEMORY_ALLOCATION_HEADER  AllocDescriptor;
+  //
+  // Additional data pertaining to the "Name" Guid memory
+  // may go here.
+  //
+} EFI_HOB_MEMORY_ALLOCATION;
+
+///
+/// The resource type.
+///
+typedef UINT32 EFI_RESOURCE_TYPE;
+
+//
+// Value of ResourceType in EFI_HOB_RESOURCE_DESCRIPTOR.
+//
+#define EFI_RESOURCE_SYSTEM_MEMORY          0x00000000
+#define EFI_RESOURCE_MEMORY_MAPPED_IO       0x00000001
+#define EFI_RESOURCE_IO                     0x00000002
+#define EFI_RESOURCE_FIRMWARE_DEVICE        0x00000003
+#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT  0x00000004
+#define EFI_RESOURCE_MEMORY_RESERVED        0x00000005
+#define EFI_RESOURCE_IO_RESERVED            0x00000006
+#define EFI_RESOURCE_MAX_MEMORY_TYPE        0x00000007
+
+///
+/// A type of recount attribute type.
+///
+typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE;
+
+//
+// These types can be ORed together as needed.
+//
+// The first three enumerations describe settings
+//
+#define EFI_RESOURCE_ATTRIBUTE_PRESENT              0x00000001
+#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED          0x00000002
+#define EFI_RESOURCE_ATTRIBUTE_TESTED               0x00000004
+//
+// The rest of the settings describe capabilities
+//
+#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC           0x00000008
+#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC         0x00000010
+#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1           0x00000020
+#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2           0x00000040
+#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED           0x00000080
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED          0x00000100
+#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED      0x00000200
+#define EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE              0x00000400
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE        0x00000800
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE  0x00001000
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE     0x00002000
+#define EFI_RESOURCE_ATTRIBUTE_16_BIT_IO                0x00004000
+#define EFI_RESOURCE_ATTRIBUTE_32_BIT_IO                0x00008000
+#define EFI_RESOURCE_ATTRIBUTE_64_BIT_IO                0x00010000
+#define EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED        0x00020000
+
+///
+/// Describes the resource properties of all fixed,
+/// nonrelocatable resource ranges found on the processor
+/// host bus during the HOB producer phase.
+///
+typedef struct {
+  ///
+  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_RESOURCE_DESCRIPTOR.
+  ///
+  EFI_HOB_GENERIC_HEADER      Header;
+  ///
+  /// A GUID representing the owner of the resource. This GUID is used by HOB
+  /// consumer phase components to correlate device ownership of a resource.
+  ///
+  EFI_GUID                    Owner;
+  ///
+  /// The resource type enumeration as defined by EFI_RESOURCE_TYPE.
+  ///
+  EFI_RESOURCE_TYPE           ResourceType;
+  ///
+  /// Resource attributes as defined by EFI_RESOURCE_ATTRIBUTE_TYPE.
+  ///
+  EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;
+  ///
+  /// The physical start address of the resource region.
+  ///
+  EFI_PHYSICAL_ADDRESS        PhysicalStart;
+  ///
+  /// The number of bytes of the resource region.
+  ///
+  UINT64                      ResourceLength;
+} EFI_HOB_RESOURCE_DESCRIPTOR;
+
+///
+/// Allows writers of executable content in the HOB producer phase to
+/// maintain and manage HOBs with specific GUID.
+///
+typedef struct {
+  ///
+  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_GUID_EXTENSION.
+  ///
+  EFI_HOB_GENERIC_HEADER      Header;
+  ///
+  /// A GUID that defines the contents of this HOB.
+  ///
+  EFI_GUID                    Name;
+  //
+  // Guid specific data goes here
+  //
+} EFI_HOB_GUID_TYPE;
+
+///
+/// Union of all the possible HOB Types.
+///
+typedef union {
+  EFI_HOB_GENERIC_HEADER              *Header;
+  EFI_HOB_MEMORY_ALLOCATION           *MemoryAllocation;
+  EFI_HOB_RESOURCE_DESCRIPTOR         *ResourceDescriptor;
+  EFI_HOB_GUID_TYPE                   *Guid;
+  UINT8                               *Raw;
+} EFI_PEI_HOB_POINTERS;
+
+
+/**
+  Returns the type of a HOB.
+
+  This macro returns the HobType field from the HOB header for the
+  HOB specified by HobStart.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @return HobType.
+
+**/
+#define GET_HOB_TYPE(HobStart) \
+  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobType)
+
+/**
+  Returns the length, in bytes, of a HOB.
+
+  This macro returns the HobLength field from the HOB header for the
+  HOB specified by HobStart.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @return HobLength.
+
+**/
+#define GET_HOB_LENGTH(HobStart) \
+  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobLength)
+
+/**
+  Returns a pointer to the next HOB in the HOB list.
+
+  This macro returns a pointer to HOB that follows the
+  HOB specified by HobStart in the HOB List.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @return A pointer to the next HOB in the HOB list.
+
+**/
+#define GET_NEXT_HOB(HobStart) \
+  (VOID *)(*(UINT8 **)&(HobStart) + GET_HOB_LENGTH (HobStart))
+
+/**
+  Determines if a HOB is the last HOB in the HOB list.
+
+  This macro determine if the HOB specified by HobStart is the
+  last HOB in the HOB list.  If HobStart is last HOB in the HOB list,
+  then TRUE is returned.  Otherwise, FALSE is returned.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @retval TRUE       The HOB specified by HobStart is the last HOB in the HOB list.
+  @retval FALSE      The HOB specified by HobStart is not the last HOB in the HOB list.
+
+**/
+#define END_OF_HOB_LIST(HobStart)  (GET_HOB_TYPE (HobStart) == (UINT16)EFI_HOB_TYPE_END_OF_HOB_LIST)
+
+/**
+  Returns a pointer to data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  This macro returns a pointer to the data buffer in a HOB specified by HobStart.
+  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  @param   GuidHob   A pointer to a HOB.
+
+  @return  A pointer to the data buffer in a HOB.
+
+**/
+#define GET_GUID_HOB_DATA(HobStart) \
+  (VOID *)(*(UINT8 **)&(HobStart) + sizeof (EFI_HOB_GUID_TYPE))
+
+/**
+  Returns the size of the data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  This macro returns the size, in bytes, of the data buffer in a HOB specified by HobStart.
+  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  @param   GuidHob   A pointer to a HOB.
+
+  @return  The size of the data buffer.
+**/
+#define GET_GUID_HOB_DATA_SIZE(HobStart) \
+  (UINT16)(GET_HOB_LENGTH (HobStart) - sizeof (EFI_HOB_GUID_TYPE))
+
+/**
+  Returns the pointer to the HOB list.
+
+  This function returns the pointer to first HOB in the list.
+
+  If the pointer to the HOB list is NULL, then ASSERT().
+
+  @return The pointer to the HOB list.
+
+**/
+VOID *
+EFIAPI
+GetHobList (
+  VOID
+  );
+
+/**
+  Returns the next instance of a HOB type from the starting HOB.
+
+  This function searches the first instance of a HOB type from the starting HOB pointer.
+  If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
+  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
+  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
+  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
+
+  If HobStart is NULL, then ASSERT().
+
+  @param  Type          The HOB type to return.
+  @param  HobStart      The starting HOB pointer to search from.
+
+  @return The next instance of a HOB type from the starting HOB.
+
+**/
+VOID *
+EFIAPI
+GetNextHob (
+  UINT16                 Type,
+  CONST VOID             *HobStart
+  );
+
+/**
+  Returns the first instance of a HOB type among the whole HOB list.
+
+  This function searches the first instance of a HOB type among the whole HOB list.
+  If there does not exist such HOB type in the HOB list, it will return NULL.
+
+  If the pointer to the HOB list is NULL, then ASSERT().
+
+  @param  Type          The HOB type to return.
+
+  @return The next instance of a HOB type from the starting HOB.
+
+**/
+VOID *
+EFIAPI
+GetFirstHob (
+  UINT16                 Type
+  );
+
+/**
+  Returns the next instance of the matched GUID HOB from the starting HOB.
+
+  This function searches the first instance of a HOB from the starting HOB pointer.
+  Such HOB should satisfy two conditions:
+  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
+  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
+  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
+  to extract the data section and its size info respectively.
+  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
+  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
+  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
+
+  If Guid is NULL, then ASSERT().
+  If HobStart is NULL, then ASSERT().
+
+  @param  Guid          The GUID to match with in the HOB list.
+  @param  HobStart      A pointer to a Guid.
+
+  @return The next instance of the matched GUID HOB from the starting HOB.
+
+**/
+VOID *
+EFIAPI
+GetNextGuidHob (
+  CONST EFI_GUID         *Guid,
+  CONST VOID             *HobStart
+  );
+
+/**
+  Returns the first instance of the matched GUID HOB among the whole HOB list.
+
+  This function searches the first instance of a HOB among the whole HOB list.
+  Such HOB should satisfy two conditions:
+  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
+  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
+  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
+  to extract the data section and its size info respectively.
+
+  If the pointer to the HOB list is NULL, then ASSERT().
+  If Guid is NULL, then ASSERT().
+
+  @param  Guid          The GUID to match with in the HOB list.
+
+  @return The first instance of the matched GUID HOB among the whole HOB list.
+
+**/
+VOID *
+EFIAPI
+GetFirstGuidHob (
+  CONST EFI_GUID         *Guid
+  );
+
+/**
+  Compares two GUIDs.
+
+  This function compares Guid1 to Guid2.  If the GUIDs are identical then TRUE is returned.
+  If there are any bit differences in the two GUIDs, then FALSE is returned.
+
+  If Guid1 is NULL, then ASSERT().
+  If Guid2 is NULL, then ASSERT().
+
+  @param  Guid1       A pointer to a 128 bit GUID.
+  @param  Guid2       A pointer to a 128 bit GUID.
+
+  @retval TRUE        Guid1 and Guid2 are identical.
+  @retval FALSE       Guid1 and Guid2 are not identical.
+
+**/
+BOOLEAN
+EFIAPI
+CompareGuid (
+  CONST EFI_GUID  *Guid1,
+  CONST EFI_GUID  *Guid2
+  );
+
+/**
+  Reads a 64-bit value from memory that may be unaligned.
+
+  This function returns the 64-bit value pointed to by Buffer. The function
+  guarantees that the read operation does not produce an alignment fault.
+
+  If the Buffer is NULL, then ASSERT().
+
+  @param  Buffer  Pointer to a 64-bit value that may be unaligned.
+
+  @return The 64-bit value read from Buffer.
+
+**/
+UINT64
+EFIAPI
+ReadUnaligned64 (
+  CONST UINT64              *Buffer
+  );
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/baytrail/include/fspinfoheader.h b/src/vendorcode/intel/fsp1_0/baytrail/include/fspinfoheader.h
new file mode 100644
index 0000000..b277bcd
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/baytrail/include/fspinfoheader.h
@@ -0,0 +1,62 @@
+/**
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef _FSP_INFO_HEADER_H_
+#define _FSP_INFO_HEADER_H_
+
+#pragma pack(1)
+
+typedef struct  {
+
+  UINT32  Signature;       // Off 0x94
+  UINT32  HeaderLength;
+  UINT8   Reserved1[3];
+  UINT8   HeaderRevision;
+  UINT32  ImageRevision;
+
+  CHAR8   ImageId[8];      // Off 0xA4
+  UINT32  ImageSize;
+  UINT32  ImageBase;
+
+  UINT32  ImageAttribute;  // Off 0xB4
+  UINT32  CfgRegionOffset;
+  UINT32  CfgRegionSize;
+  UINT32  ApiEntryNum;
+
+  UINT32  NemInitEntry;    // Off 0xC4
+  UINT32  FspInitEntry;
+  UINT32  NotifyPhaseEntry;
+  UINT32  Reserved2;
+
+} FSP_INFO_HEADER;
+
+#pragma pack()
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/baytrail/include/fspplatform.h b/src/vendorcode/intel/fsp1_0/baytrail/include/fspplatform.h
new file mode 100644
index 0000000..81f7b66
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/baytrail/include/fspplatform.h
@@ -0,0 +1,78 @@
+/**
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef _FSP_PLATFORM_H_
+#define _FSP_PLATFORM_H_
+
+#include "fsptypes.h"
+#include "fspapi.h"
+#include "azalia.h"
+
+#pragma pack(1)
+
+typedef struct {
+  FSP_INIT_RT_COMMON_BUFFER   Common;
+} FSP_INIT_RT_BUFFER;
+
+#pragma pack()
+
+//
+// Function prototypes for board_fsp.c
+//
+void
+GetFspReservedMemoryFromGuid (
+  uint32_t         *FspMemoryBase,
+  uint32_t         *FspMemoryLength,
+  EFI_GUID          FspReservedMemoryGuid
+  );
+
+void
+GetFspNVStorageMemory (
+  void         **FspNVStorageHob,
+  uint16_t     *DataSize
+  );
+
+void
+GetTempRamStack (
+  void         **TempRamStackPtr,
+  uint16_t     *DataSize
+  );
+
+void
+GetHighMemorySize (
+  uint64_t         *HighMemoryLength
+  );
+
+void
+GetLowMemorySize (
+  uint32_t         *LowMemoryLength
+  );
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/baytrail/include/fsptypes.h b/src/vendorcode/intel/fsp1_0/baytrail/include/fsptypes.h
new file mode 100644
index 0000000..4a313ad
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/baytrail/include/fsptypes.h
@@ -0,0 +1,116 @@
+/**
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+/** \file  fsptypes.h
+ *
+ *
+ */
+
+#ifndef __FSP_TYPES_H__
+#define __FSP_TYPES_H__
+
+///
+/// 8-byte unsigned value.
+///
+typedef unsigned long long  UINT64;
+///
+/// 8-byte signed value.
+///
+typedef long long           INT64;
+///
+/// 4-byte unsigned value.
+///
+typedef unsigned int        UINT32;
+///
+/// 4-byte signed value.
+///
+typedef int                 INT32;
+///
+/// 2-byte unsigned value.
+///
+typedef unsigned short      UINT16;
+///
+/// 2-byte Character.  Unless otherwise specified all strings are stored in the
+/// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
+///
+typedef unsigned short      CHAR16;
+///
+/// 2-byte signed value.
+///
+typedef short               INT16;
+///
+/// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
+/// values are undefined.
+///
+typedef unsigned char       BOOLEAN;
+///
+/// 1-byte unsigned value.
+///
+typedef unsigned char       UINT8;
+///
+/// 1-byte Character
+///
+typedef char                CHAR8;
+///
+/// 1-byte signed value
+///
+typedef char                INT8;
+
+typedef void                VOID;
+
+typedef UINT64              EFI_PHYSICAL_ADDRESS;
+
+typedef struct {
+  UINT32  Data1;
+  UINT16  Data2;
+  UINT16  Data3;
+  UINT8   Data4[8];
+} EFI_GUID;
+
+#define CONST     const
+#define STATIC    static
+
+#define TRUE  ((BOOLEAN)(1==1))
+#define FALSE ((BOOLEAN)(0==1))
+
+#define FSPAPI __attribute__((cdecl))
+#define EFIAPI __attribute__((cdecl))
+
+#define ASSERT(Expression)      \
+  do {                          \
+    if (!(Expression)) {        \
+      for (;;);                 \
+    }                           \
+  } while (FALSE)
+
+typedef UINT32 FSP_STATUS;
+typedef UINT32 EFI_STATUS;
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/baytrail/include/fspvpd.h b/src/vendorcode/intel/fsp1_0/baytrail/include/fspvpd.h
new file mode 100644
index 0000000..b001cdb
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/baytrail/include/fspvpd.h
@@ -0,0 +1,119 @@
+/**
+
+Copyright (C) 2013-2014 Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef __FSPVPD_H__
+#define __FSPVPD_H__
+
+#pragma pack(1)
+
+typedef struct {
+  UINT8    EnableMemoryDown;
+  UINT8    DRAMSpeed;      /* DRAM Speed  */
+  UINT8    DRAMType;       /* DRAM Type */
+  UINT8    DIMM0Enable;    /* DIMM 0 Enable */
+  UINT8    DIMM1Enable;    /* DIMM 1 Enable */
+  UINT8    DIMMDWidth;     /* DRAM device data width */
+  UINT8    DIMMDensity;    /* DRAM device data density */
+  UINT8    DIMMBusWidth;   /* DIMM Bus Width */
+  UINT8    DIMMSides;      /* Ranks Per DIMM */
+  UINT8    DIMMtCL;        /* tCL */
+  UINT8    DIMMtRPtRCD;    /* tRP and tRCD in DRAM clk - 5:12.5ns, 6:15ns, etc. */
+  UINT8    DIMMtWR;        /* tWR in DRAM clk  */
+  UINT8    DIMMtWTR;       /* tWTR in DRAM clk */
+  UINT8    DIMMtRRD;       /* tRRD in DRAM clk */
+  UINT8    DIMMtRTP;       /* tRTP in DRAM clk */
+  UINT8    DIMMtFAW;       /* tFAW in DRAM clk */
+} MEMORY_DOWN_DATA;
+
+
+typedef struct _UPD_DATA_REGION {
+  UINT64                      Signature;                     /* Offset 0x0000 */
+  UINT32                      RESERVED1;                     /* Offset 0x0008 */
+  UINT8                       Padding0[20];                  /* Offset 0x000C */
+  UINT16                      PcdMrcInitTsegSize;            /* Offset 0x0020 */
+  UINT16                      PcdMrcInitMmioSize;            /* Offset 0x0022 */
+  UINT8                       PcdMrcInitSPDAddr1;            /* Offset 0x0024 */
+  UINT8                       PcdMrcInitSPDAddr2;            /* Offset 0x0025 */
+  UINT8                       PcdeMMCBootMode;               /* Offset 0x0026 */
+  UINT8                       PcdEnableSdio;                 /* Offset 0x0027 */
+  UINT8                       PcdEnableSdcard;               /* Offset 0x0028 */
+  UINT8                       PcdEnableHsuart0;              /* Offset 0x0029 */
+  UINT8                       PcdEnableHsuart1;              /* Offset 0x002A */
+  UINT8                       PcdEnableSpi;                  /* Offset 0x002B */
+  UINT8                       PcdEnableLan;                  /* Offset 0x002C */
+  UINT8                       PcdEnableSata;                 /* Offset 0x002D */
+  UINT8                       PcdSataMode;                   /* Offset 0x002E */
+  UINT8                       PcdEnableAzalia;               /* Offset 0x002F */
+  UINT32                      AzaliaConfigPtr;               /* Offset 0x0030 */
+  UINT8                       PcdEnableXhci;                 /* Offset 0x0034 */
+  UINT8                       PcdEnableLpe;                  /* Offset 0x0035 */
+  UINT8                       PcdLpssSioEnablePciMode;       /* Offset 0x0036 */
+  UINT8                       PcdEnableDma0;                 /* Offset 0x0037 */
+  UINT8                       PcdEnableDma1;                 /* Offset 0x0038 */
+  UINT8                       PcdEnableI2C0;                 /* Offset 0x0039 */
+  UINT8                       PcdEnableI2C1;                 /* Offset 0x003A */
+  UINT8                       PcdEnableI2C2;                 /* Offset 0x003B */
+  UINT8                       PcdEnableI2C3;                 /* Offset 0x003C */
+  UINT8                       PcdEnableI2C4;                 /* Offset 0x003D */
+  UINT8                       PcdEnableI2C5;                 /* Offset 0x003E */
+  UINT8                       PcdEnableI2C6;                 /* Offset 0x003F */
+  UINT8                       PcdEnablePwm0;                 /* Offset 0x0040 */
+  UINT8                       PcdEnablePwm1;                 /* Offset 0x0041 */
+  UINT8                       PcdEnableHsi;                  /* Offset 0x0042 */
+  UINT8                       PcdIgdDvmt50PreAlloc;          /* Offset 0x0043 */
+  UINT8                       PcdApertureSize;               /* Offset 0x0044 */
+  UINT8                       PcdGttSize;                    /* Offset 0x0045 */
+  UINT32                      SerialDebugPortAddress;        /* Offset 0x0046 */
+  UINT8                       SerialDebugPortType;           /* Offset 0x004A */
+  UINT8                       PcdMrcDebugMsg;                /* Offset 0x004B */
+  UINT8                       ISPEnable;                     /* Offset 0x004C */
+  UINT8                       PcdSccEnablePciMode;           /* Offset 0x004D */
+  UINT8                       IgdRenderStandby;              /* Offset 0x004E */
+  UINT8                       TxeUmaEnable;                  /* Offset 0x004F */
+  UINT8                       UnusedUpdSpace1[160];          /* Offset 0x0050 */
+  MEMORY_DOWN_DATA            PcdMemoryParameters;           /* Offset 0x00F0 */
+  UINT16                      PcdRegionTerminator;           /* Offset 0x0100 */
+} UPD_DATA_REGION;
+
+
+typedef struct _VPD_DATA_REGION {
+  UINT64   PcdVpdRegionSign;                      /* Offset 0x0000 */
+  UINT32   PcdImageRevision;                      /* Offset 0x0008 */
+  UINT32   PcdUpdRegionOffset;                    /* Offset 0x000C */
+  UINT8    Padding0[16];                          /* Offset 0x0010 */
+  UINT32   PcdFspReservedMemoryLength;            /* Offset 0x0020 */
+  UINT8    PcdPlatformType;                       /* Offset 0x0024 */
+  UINT8    PcdEnableSecureBoot;                   /* Offset 0x0025 */
+  UINT8    PcdMemoryParameters[16];               /* Offset 0x0026 */
+} VPD_DATA_REGION;
+
+#pragma pack()
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/baytrail/srx/board_fsp.c b/src/vendorcode/intel/fsp1_0/baytrail/srx/board_fsp.c
new file mode 100644
index 0000000..2cb3492
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/baytrail/srx/board_fsp.c
@@ -0,0 +1,186 @@
+/**
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+/***********************************************************************
+ *
+ * board_fsp.c
+ *
+ * Parse HOB to get system data.
+ *
+ **********************************************************************/
+#include "fsp.h"
+
+void
+GetLowMemorySize (
+  uint32_t         *LowMemoryLength
+  )
+{
+  EFI_PEI_HOB_POINTERS    Hob;
+
+  *LowMemoryLength = 0x100000;
+
+  //
+  // Get the HOB list for processing
+  //
+  Hob.Raw = GetHobList();
+
+  //
+  // Collect memory ranges
+  //
+  while (!END_OF_HOB_LIST (Hob)) {
+    if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) {
+      if (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) {
+        //
+        // Need memory above 1MB to be collected here
+        //
+        if (Hob.ResourceDescriptor->PhysicalStart >= 0x100000 &&
+            Hob.ResourceDescriptor->PhysicalStart < (EFI_PHYSICAL_ADDRESS) 0x100000000) {
+          *LowMemoryLength += (uint32_t) (Hob.ResourceDescriptor->ResourceLength);
+        }
+      }
+    }
+    Hob.Raw = GET_NEXT_HOB (Hob);
+  }
+
+  return;
+}
+
+void
+GetHighMemorySize (
+  uint64_t         *HighMemoryLength
+  )
+{
+  EFI_PEI_HOB_POINTERS    Hob;
+
+  *HighMemoryLength = 0x0;
+
+  //
+  // Get the HOB list for processing
+  //
+  Hob.Raw = GetHobList();
+
+  //
+  // Collect memory ranges
+  //
+  while (!END_OF_HOB_LIST (Hob)) {
+    if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) {
+      if (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) {
+        //
+        // Need memory above 4GB to be collected here
+        //
+        if (Hob.ResourceDescriptor->PhysicalStart >= (EFI_PHYSICAL_ADDRESS) 0x100000000) {
+          *HighMemoryLength += (uint64_t) (Hob.ResourceDescriptor->ResourceLength);
+        }
+      }
+    }
+    Hob.Raw = GET_NEXT_HOB (Hob);
+  }
+
+  return;
+}
+
+void
+GetFspReservedMemoryFromGuid (
+  uint32_t         *FspMemoryBase,
+  uint32_t         *FspMemoryLength,
+  EFI_GUID          FspReservedMemoryGuid
+  )
+{
+  EFI_PEI_HOB_POINTERS    Hob;
+
+  //
+  // Get the HOB list for processing
+  //
+  Hob.Raw = GetHobList();
+  *FspMemoryBase = 0;
+  *FspMemoryLength = 0;
+
+  //
+  // Collect memory ranges
+  //
+  while (!END_OF_HOB_LIST (Hob)) {
+    if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) {
+      if (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED) {
+        if (CompareGuid(&Hob.ResourceDescriptor->Owner, &FspReservedMemoryGuid)) {
+          *FspMemoryBase = (uint32_t) (Hob.ResourceDescriptor->PhysicalStart);
+          *FspMemoryLength = (uint32_t) (Hob.ResourceDescriptor->ResourceLength);
+		      break;
+        }
+      }
+    }
+    Hob.Raw = GET_NEXT_HOB (Hob);
+  }
+
+  return;
+}
+
+void
+GetFspNVStorageMemory (
+  VOID         **FspNVStorageHob,
+  uint16_t     *DataSize
+  )
+{
+
+  EFI_GUID                FspNVStorageHobGuid = FSP_NON_VOLATILE_STORAGE_HOB_GUID;
+  uint8_t                 *GuidHob;
+  EFI_HOB_GENERIC_HEADER  *GuidHobHdr;
+
+  GuidHob = GetFirstGuidHob(&FspNVStorageHobGuid);
+  if (!GuidHob) {
+    *FspNVStorageHob = 0;
+    *DataSize = 0;
+  } else {
+    *FspNVStorageHob = GET_GUID_HOB_DATA (GuidHob);
+    GuidHobHdr = (EFI_HOB_GENERIC_HEADER *)GuidHob;
+    *DataSize =  GET_GUID_HOB_DATA_SIZE (GuidHobHdr);
+  }
+}
+
+void
+GetTempRamStack (
+  VOID         **TempRamStackPtr,
+  uint16_t     *DataSize
+  )
+{
+
+  EFI_GUID                FspBootloaderTemporaryMemoryHobGuid = FSP_BOOTLOADER_TEMPORARY_MEMORY_HOB_GUID;
+  uint8_t                 *GuidHob;
+  EFI_HOB_GENERIC_HEADER  *GuidHobHdr;
+
+  GuidHob = GetFirstGuidHob(&FspBootloaderTemporaryMemoryHobGuid);
+  if (!GuidHob) {
+    *TempRamStackPtr = 0;
+    *DataSize = 0;
+  } else {
+    *TempRamStackPtr = GET_GUID_HOB_DATA (GuidHob);
+    GuidHobHdr = (EFI_HOB_GENERIC_HEADER *)GuidHob;
+    *DataSize =  GET_GUID_HOB_DATA_SIZE (GuidHobHdr);
+  }
+}
diff --git a/src/vendorcode/intel/fsp1_0/baytrail/srx/fsphob.c b/src/vendorcode/intel/fsp1_0/baytrail/srx/fsphob.c
new file mode 100644
index 0000000..5d6e890
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/baytrail/srx/fsphob.c
@@ -0,0 +1,198 @@
+/**
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+/***********************************************************************
+ *
+ * fsphob.c
+ *
+ * HOB infrastructure code.
+ *
+ **********************************************************************/
+#include <string.h>
+
+#include "fsptypes.h"
+#include "fsphob.h"
+
+//
+// Pointer to the HOB should be initialized with the output of FSP INIT PARAMS
+//
+extern volatile void *FspHobListPtr;
+
+/**
+  Reads a 64-bit value from memory that may be unaligned.
+
+  This function returns the 64-bit value pointed to by Buffer. The function
+  guarantees that the read operation does not produce an alignment fault.
+
+  If the Buffer is NULL, then ASSERT().
+
+  @param  Buffer  Pointer to a 64-bit value that may be unaligned.
+
+  @return The 64-bit value read from Buffer.
+
+**/
+UINT64
+EFIAPI
+ReadUnaligned64 (
+  CONST UINT64              *Buffer
+  )
+{
+  ASSERT (Buffer != NULL);
+
+  return *Buffer;
+}
+
+/**
+  Compares two GUIDs.
+
+  This function compares Guid1 to Guid2.  If the GUIDs are identical then TRUE is returned.
+  If there are any bit differences in the two GUIDs, then FALSE is returned.
+
+  If Guid1 is NULL, then ASSERT().
+  If Guid2 is NULL, then ASSERT().
+
+  @param  Guid1       A pointer to a 128 bit GUID.
+  @param  Guid2       A pointer to a 128 bit GUID.
+
+  @retval TRUE        Guid1 and Guid2 are identical.
+  @retval FALSE       Guid1 and Guid2 are not identical.
+
+**/
+BOOLEAN
+EFIAPI
+CompareGuid (
+  CONST EFI_GUID  *Guid1,
+  CONST EFI_GUID  *Guid2
+  )
+{
+  UINT64  LowPartOfGuid1;
+  UINT64  LowPartOfGuid2;
+  UINT64  HighPartOfGuid1;
+  UINT64  HighPartOfGuid2;
+
+  LowPartOfGuid1  = ReadUnaligned64 ((CONST UINT64*) Guid1);
+  LowPartOfGuid2  = ReadUnaligned64 ((CONST UINT64*) Guid2);
+  HighPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1 + 1);
+  HighPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2 + 1);
+
+  return (BOOLEAN) (LowPartOfGuid1 == LowPartOfGuid2 && HighPartOfGuid1 == HighPartOfGuid2);
+}
+
+/**
+  Returns the pointer to the HOB list.
+**/
+VOID *
+EFIAPI
+GetHobList (
+  VOID
+  )
+{
+  ASSERT (FspHobListPtr != NULL);
+  return ((VOID *)FspHobListPtr);
+}
+
+/**
+  Returns the next instance of a HOB type from the starting HOB.
+**/
+VOID *
+EFIAPI
+GetNextHob (
+  UINT16                 Type,
+  CONST VOID             *HobStart
+  )
+{
+  EFI_PEI_HOB_POINTERS  Hob;
+
+  ASSERT (HobStart != NULL);
+
+  Hob.Raw = (UINT8 *) HobStart;
+  //
+  // Parse the HOB list until end of list or matching type is found.
+  //
+  while (!END_OF_HOB_LIST (Hob)) {
+    if (Hob.Header->HobType == Type) {
+      return Hob.Raw;
+    }
+    Hob.Raw = GET_NEXT_HOB (Hob);
+  }
+  return NULL;
+}
+
+/**
+  Returns the first instance of a HOB type among the whole HOB list.
+**/
+VOID *
+EFIAPI
+GetFirstHob (
+  UINT16                 Type
+  )
+{
+  VOID      *HobList;
+
+  HobList = GetHobList ();
+  return GetNextHob (Type, HobList);
+}
+
+/**
+  Returns the next instance of the matched GUID HOB from the starting HOB.
+**/
+VOID *
+EFIAPI
+GetNextGuidHob (
+  CONST EFI_GUID         *Guid,
+  CONST VOID             *HobStart
+  )
+{
+  EFI_PEI_HOB_POINTERS  GuidHob;
+
+  GuidHob.Raw = (UINT8 *) HobStart;
+  while ((GuidHob.Raw = GetNextHob (EFI_HOB_TYPE_GUID_EXTENSION, GuidHob.Raw)) != NULL) {
+    if (CompareGuid (Guid, &GuidHob.Guid->Name)) {
+      break;
+    }
+    GuidHob.Raw = GET_NEXT_HOB (GuidHob);
+  }
+  return GuidHob.Raw;
+}
+
+/**
+  Returns the first instance of the matched GUID HOB among the whole HOB list.
+**/
+VOID *
+EFIAPI
+GetFirstGuidHob (
+  CONST EFI_GUID         *Guid
+  )
+{
+  VOID      *HobList;
+
+  HobList = GetHobList ();
+  return GetNextGuidHob (Guid, HobList);
+}
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspapi.h b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspapi.h
new file mode 100644
index 0000000..9520736
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspapi.h
@@ -0,0 +1,63 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef _FSP_API_H_
+#define _FSP_API_H_
+
+#pragma pack(1)
+
+typedef VOID (* CONTINUATION_PROC)(EFI_STATUS Status, VOID *HobListPtr);
+
+typedef struct {
+  VOID              *NvsBufferPtr;
+  VOID              *RtBufferPtr;
+  CONTINUATION_PROC   ContinuationFunc;
+} FSP_INIT_PARAMS;
+
+typedef struct {
+  UINT32            *StackTop;
+  UINT32             BootMode;
+} FSP_INIT_RT_COMMON_BUFFER;
+
+typedef enum {
+  EnumInitPhaseAfterPciEnumeration = 0x20,
+  EnumInitPhaseReadyToBoot = 0x40
+} FSP_INIT_PHASE;
+
+typedef struct {
+  FSP_INIT_PHASE     Phase;
+} NOTIFY_PHASE_PARAMS;
+
+#pragma pack()
+
+typedef FSP_STATUS (FSPAPI *FSP_FSP_INIT)    (FSP_INIT_PARAMS     *FspInitParamPtr);
+typedef FSP_STATUS (FSPAPI *FSP_NOTFY_PHASE) (NOTIFY_PHASE_PARAMS *NotifyPhaseParamPtr);
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspffs.h b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspffs.h
new file mode 100644
index 0000000..7a7c367
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspffs.h
@@ -0,0 +1,506 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+
+#ifndef __PI_FIRMWARE_FILE_H__
+#define __PI_FIRMWARE_FILE_H__
+
+#pragma pack(1)
+///
+/// Used to verify the integrity of the file.
+///
+typedef union {
+  struct {
+    ///
+    /// The IntegrityCheck.Checksum.Header field is an 8-bit checksum of the file
+    /// header. The State and IntegrityCheck.Checksum.File fields are assumed
+    /// to be zero and the checksum is calculated such that the entire header sums to zero.
+    ///
+    UINT8   Header;
+    ///
+    /// If the FFS_ATTRIB_CHECKSUM (see definition below) bit of the Attributes
+    /// field is set to one, the IntegrityCheck.Checksum.File field is an 8-bit
+    /// checksum of the file data.
+    /// If the FFS_ATTRIB_CHECKSUM bit of the Attributes field is cleared to zero,
+    /// the IntegrityCheck.Checksum.File field must be initialized with a value of
+    /// 0xAA. The IntegrityCheck.Checksum.File field is valid any time the
+    /// EFI_FILE_DATA_VALID bit is set in the State field.
+    ///
+    UINT8   File;
+  } Checksum;
+  ///
+  /// This is the full 16 bits of the IntegrityCheck field.
+  ///
+  UINT16    Checksum16;
+} EFI_FFS_INTEGRITY_CHECK;
+
+///
+/// FFS_FIXED_CHECKSUM is the checksum value used when the
+/// FFS_ATTRIB_CHECKSUM attribute bit is clear.
+///
+#define FFS_FIXED_CHECKSUM  0xAA
+
+typedef UINT8 EFI_FV_FILETYPE;
+typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
+typedef UINT8 EFI_FFS_FILE_STATE;
+
+///
+/// File Types Definitions
+///
+#define EFI_FV_FILETYPE_ALL                   0x00
+#define EFI_FV_FILETYPE_RAW                   0x01
+#define EFI_FV_FILETYPE_FREEFORM              0x02
+#define EFI_FV_FILETYPE_SECURITY_CORE         0x03
+#define EFI_FV_FILETYPE_PEI_CORE              0x04
+#define EFI_FV_FILETYPE_DXE_CORE              0x05
+#define EFI_FV_FILETYPE_PEIM                  0x06
+#define EFI_FV_FILETYPE_DRIVER                0x07
+#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER  0x08
+#define EFI_FV_FILETYPE_APPLICATION           0x09
+#define EFI_FV_FILETYPE_SMM                   0x0A
+#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B
+#define EFI_FV_FILETYPE_COMBINED_SMM_DXE      0x0C
+#define EFI_FV_FILETYPE_SMM_CORE              0x0D
+#define EFI_FV_FILETYPE_OEM_MIN               0xc0
+#define EFI_FV_FILETYPE_OEM_MAX               0xdf
+#define EFI_FV_FILETYPE_DEBUG_MIN             0xe0
+#define EFI_FV_FILETYPE_DEBUG_MAX             0xef
+#define EFI_FV_FILETYPE_FFS_MIN               0xf0
+#define EFI_FV_FILETYPE_FFS_MAX               0xff
+#define EFI_FV_FILETYPE_FFS_PAD               0xf0
+///
+/// FFS File Attributes.
+///
+#define FFS_ATTRIB_LARGE_FILE         0x01
+#define FFS_ATTRIB_FIXED              0x04
+#define FFS_ATTRIB_DATA_ALIGNMENT     0x38
+#define FFS_ATTRIB_CHECKSUM           0x40
+
+///
+/// FFS File State Bits.
+///
+#define EFI_FILE_HEADER_CONSTRUCTION  0x01
+#define EFI_FILE_HEADER_VALID         0x02
+#define EFI_FILE_DATA_VALID           0x04
+#define EFI_FILE_MARKED_FOR_UPDATE    0x08
+#define EFI_FILE_DELETED              0x10
+#define EFI_FILE_HEADER_INVALID       0x20
+
+
+///
+/// Each file begins with the header that describe the
+/// contents and state of the files.
+///
+typedef struct {
+  ///
+  /// This GUID is the file name. It is used to uniquely identify the file.
+  ///
+  EFI_GUID                Name;
+  ///
+  /// Used to verify the integrity of the file.
+  ///
+  EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
+  ///
+  /// Identifies the type of file.
+  ///
+  EFI_FV_FILETYPE         Type;
+  ///
+  /// Declares various file attribute bits.
+  ///
+  EFI_FFS_FILE_ATTRIBUTES Attributes;
+  ///
+  /// The length of the file in bytes, including the FFS header.
+  ///
+  UINT8                   Size[3];
+  ///
+  /// Used to track the state of the file throughout the life of the file from creation to deletion.
+  ///
+  EFI_FFS_FILE_STATE      State;
+} EFI_FFS_FILE_HEADER;
+
+typedef struct {
+  ///
+  /// This GUID is the file name. It is used to uniquely identify the file. There may be only
+  /// one instance of a file with the file name GUID of Name in any given firmware
+  /// volume, except if the file type is EFI_FV_FILETYPE_FFS_PAD.
+  ///
+  EFI_GUID                  Name;
+
+  ///
+  /// Used to verify the integrity of the file.
+  ///
+  EFI_FFS_INTEGRITY_CHECK   IntegrityCheck;
+
+  ///
+  /// Identifies the type of file.
+  ///
+  EFI_FV_FILETYPE           Type;
+
+  ///
+  /// Declares various file attribute bits.
+  ///
+  EFI_FFS_FILE_ATTRIBUTES   Attributes;
+
+  ///
+  /// The length of the file in bytes, including the FFS header.
+  /// The length of the file data is either (Size - sizeof(EFI_FFS_FILE_HEADER)). This calculation means a
+  /// zero-length file has a Size of 24 bytes, which is sizeof(EFI_FFS_FILE_HEADER).
+  /// Size is not required to be a multiple of 8 bytes. Given a file F, the next file header is
+  /// located at the next 8-byte aligned firmware volume offset following the last byte of the file F.
+  ///
+  UINT8                     Size[3];
+
+  ///
+  /// Used to track the state of the file throughout the life of the file from creation to deletion.
+  ///
+  EFI_FFS_FILE_STATE        State;
+
+  ///
+  /// If FFS_ATTRIB_LARGE_FILE is set in Attributes, then ExtendedSize exists and Size must be set to zero.
+  /// If FFS_ATTRIB_LARGE_FILE is not set then EFI_FFS_FILE_HEADER is used.
+  ///
+  UINT32                    ExtendedSize;
+} EFI_FFS_FILE_HEADER2;
+
+#define IS_FFS_FILE2(FfsFileHeaderPtr) \
+    (((((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Attributes) & FFS_ATTRIB_LARGE_FILE) == FFS_ATTRIB_LARGE_FILE)
+
+#define FFS_FILE_SIZE(FfsFileHeaderPtr) \
+    ((UINT32) (*((UINT32 *) ((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Size) & 0x00ffffff))
+
+#define FFS_FILE2_SIZE(FfsFileHeaderPtr) \
+    (((EFI_FFS_FILE_HEADER2 *) (UINTN) FfsFileHeaderPtr)->ExtendedSize)
+
+typedef UINT8 EFI_SECTION_TYPE;
+
+///
+/// Pseudo type. It is used as a wild card when retrieving sections.
+///  The section type EFI_SECTION_ALL matches all section types.
+///
+#define EFI_SECTION_ALL                   0x00
+
+///
+/// Encapsulation section Type values.
+///
+#define EFI_SECTION_COMPRESSION           0x01
+
+#define EFI_SECTION_GUID_DEFINED          0x02
+
+#define EFI_SECTION_DISPOSABLE            0x03
+
+///
+/// Leaf section Type values.
+///
+#define EFI_SECTION_PE32                  0x10
+#define EFI_SECTION_PIC                   0x11
+#define EFI_SECTION_TE                    0x12
+#define EFI_SECTION_DXE_DEPEX             0x13
+#define EFI_SECTION_VERSION               0x14
+#define EFI_SECTION_USER_INTERFACE        0x15
+#define EFI_SECTION_COMPATIBILITY16       0x16
+#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17
+#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18
+#define EFI_SECTION_RAW                   0x19
+#define EFI_SECTION_PEI_DEPEX             0x1B
+#define EFI_SECTION_SMM_DEPEX             0x1C
+
+///
+/// Common section header.
+///
+typedef struct {
+  ///
+  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
+  /// including the EFI_COMMON_SECTION_HEADER.
+  ///
+  UINT8             Size[3];
+  EFI_SECTION_TYPE  Type;
+  ///
+  /// Declares the section type.
+  ///
+} EFI_COMMON_SECTION_HEADER;
+
+typedef struct {
+  ///
+  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
+  /// including the EFI_COMMON_SECTION_HEADER.
+  ///
+  UINT8             Size[3];
+
+  EFI_SECTION_TYPE  Type;
+
+  ///
+  /// If Size is 0xFFFFFF, then ExtendedSize contains the size of the section. If
+  /// Size is not equal to 0xFFFFFF, then this field does not exist.
+  ///
+  UINT32            ExtendedSize;
+} EFI_COMMON_SECTION_HEADER2;
+
+///
+/// Leaf section type that contains an
+/// IA-32 16-bit executable image.
+///
+typedef EFI_COMMON_SECTION_HEADER  EFI_COMPATIBILITY16_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_COMPATIBILITY16_SECTION2;
+
+///
+/// CompressionType of EFI_COMPRESSION_SECTION.
+///
+#define EFI_NOT_COMPRESSED        0x00
+#define EFI_STANDARD_COMPRESSION  0x01
+///
+/// An encapsulation section type in which the
+/// section data is compressed.
+///
+typedef struct {
+  ///
+  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
+  ///
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  ///
+  /// The UINT32 that indicates the size of the section data after decompression.
+  ///
+  UINT32                      UncompressedLength;
+  ///
+  /// Indicates which compression algorithm is used.
+  ///
+  UINT8                       CompressionType;
+} EFI_COMPRESSION_SECTION;
+
+typedef struct {
+  ///
+  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
+  ///
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// UINT32 that indicates the size of the section data after decompression.
+  ///
+  UINT32                        UncompressedLength;
+  ///
+  /// Indicates which compression algorithm is used.
+  ///
+  UINT8                         CompressionType;
+} EFI_COMPRESSION_SECTION2;
+
+///
+/// An encapsulation section type in which the section data is disposable.
+/// A disposable section is an encapsulation section in which the section data may be disposed of during
+/// the process of creating or updating a firmware image without significant impact on the usefulness of
+/// the file. The Type field in the section header is set to EFI_SECTION_DISPOSABLE. This
+/// allows optional or descriptive data to be included with the firmware file which can be removed in
+/// order to conserve space. The contents of this section are implementation specific, but might contain
+/// debug data or detailed integration instructions.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_DISPOSABLE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_DISPOSABLE_SECTION2;
+
+///
+/// The leaf section which could be used to determine the dispatch order of DXEs.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_DXE_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_DXE_DEPEX_SECTION2;
+
+///
+/// The leaf section which contains a PI FV.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_FIRMWARE_VOLUME_IMAGE_SECTION2;
+
+///
+/// The leaf section which contains a single GUID.
+///
+typedef struct {
+  ///
+  /// Common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
+  ///
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  ///
+  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
+  ///
+  EFI_GUID                    SubTypeGuid;
+} EFI_FREEFORM_SUBTYPE_GUID_SECTION;
+
+typedef struct {
+  ///
+  /// The common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
+  ///
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
+  ///
+  EFI_GUID                      SubTypeGuid;
+} EFI_FREEFORM_SUBTYPE_GUID_SECTION2;
+
+///
+/// Attributes of EFI_GUID_DEFINED_SECTION.
+///
+#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED  0x01
+#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID    0x02
+///
+/// The leaf section which is encapsulation defined by specific GUID.
+///
+typedef struct {
+  ///
+  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
+  ///
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  ///
+  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
+  ///
+  EFI_GUID                    SectionDefinitionGuid;
+  ///
+  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
+  ///
+  UINT16                      DataOffset;
+  ///
+  /// The bit field that declares some specific characteristics of the section contents.
+  ///
+  UINT16                      Attributes;
+} EFI_GUID_DEFINED_SECTION;
+
+typedef struct {
+  ///
+  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
+  ///
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
+  ///
+  EFI_GUID                      SectionDefinitionGuid;
+  ///
+  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
+  ///
+  UINT16                        DataOffset;
+  ///
+  /// The bit field that declares some specific characteristics of the section contents.
+  ///
+  UINT16                        Attributes;
+} EFI_GUID_DEFINED_SECTION2;
+
+///
+/// The leaf section which contains PE32+ image.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_PE32_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_PE32_SECTION2;
+
+///
+/// The leaf section used to determine the dispatch order of PEIMs.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_PEI_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_PEI_DEPEX_SECTION2;
+
+///
+/// A leaf section type that contains a position-independent-code (PIC) image.
+/// A PIC image section is a leaf section that contains a position-independent-code (PIC) image.
+/// In addition to normal PE32+ images that contain relocation information, PEIM executables may be
+/// PIC and are referred to as PIC images. A PIC image is the same as a PE32+ image except that all
+/// relocation information has been stripped from the image and the image can be moved and will
+/// execute correctly without performing any relocation or other fix-ups. EFI_PIC_SECTION2 must
+/// be used if the section is 16MB or larger.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_PIC_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_PIC_SECTION2;
+
+///
+/// The leaf section which constains the position-independent-code image.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_TE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_TE_SECTION2;
+
+///
+/// The leaf section which contains an array of zero or more bytes.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_RAW_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_RAW_SECTION2;
+
+///
+/// The SMM dependency expression section is a leaf section that contains a dependency expression that
+/// is used to determine the dispatch order for SMM drivers. Before the SMRAM invocation of the
+/// SMM driver's entry point, this dependency expression must evaluate to TRUE. See the Platform
+/// Initialization Specification, Volume 2, for details regarding the format of the dependency expression.
+/// The dependency expression may refer to protocols installed in either the UEFI or the SMM protocol
+/// database. EFI_SMM_DEPEX_SECTION2 must be used if the section is 16MB or larger.
+///
+typedef EFI_COMMON_SECTION_HEADER EFI_SMM_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_SMM_DEPEX_SECTION2;
+
+///
+/// The leaf section which contains a unicode string that
+/// is human readable file name.
+///
+typedef struct {
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+
+  ///
+  /// Array of unicode string.
+  ///
+  CHAR16                      FileNameString[1];
+} EFI_USER_INTERFACE_SECTION;
+
+typedef struct {
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  CHAR16                        FileNameString[1];
+} EFI_USER_INTERFACE_SECTION2;
+
+///
+/// The leaf section which contains a numeric build number and
+/// an optional unicode string that represents the file revision.
+///
+typedef struct {
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  UINT16                      BuildNumber;
+
+  ///
+  /// Array of unicode string.
+  ///
+  CHAR16                      VersionString[1];
+} EFI_VERSION_SECTION;
+
+typedef struct {
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// A UINT16 that represents a particular build. Subsequent builds have monotonically
+  /// increasing build numbers relative to earlier builds.
+  ///
+  UINT16                        BuildNumber;
+  CHAR16                        VersionString[1];
+} EFI_VERSION_SECTION2;
+
+#define IS_SECTION2(SectionHeaderPtr) \
+    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff) == 0x00ffffff)
+
+#define SECTION_SIZE(SectionHeaderPtr) \
+    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff))
+
+#define SECTION2_SIZE(SectionHeaderPtr) \
+    (((EFI_COMMON_SECTION_HEADER2 *) (UINTN) SectionHeaderPtr)->ExtendedSize)
+
+#pragma pack()
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspfv.h b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspfv.h
new file mode 100644
index 0000000..75d17fa
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspfv.h
@@ -0,0 +1,247 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef __PI_FIRMWAREVOLUME_H__
+#define __PI_FIRMWAREVOLUME_H__
+
+///
+/// EFI_FV_FILE_ATTRIBUTES
+///
+typedef UINT32  EFI_FV_FILE_ATTRIBUTES;
+
+//
+// Value of EFI_FV_FILE_ATTRIBUTES.
+//
+#define EFI_FV_FILE_ATTRIB_ALIGNMENT      0x0000001F
+#define EFI_FV_FILE_ATTRIB_FIXED          0x00000100
+#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED  0x00000200
+
+///
+/// type of EFI FVB attribute
+///
+typedef UINT32  EFI_FVB_ATTRIBUTES_2;
+
+//
+// Attributes bit definitions
+//
+#define EFI_FVB2_READ_DISABLED_CAP  0x00000001
+#define EFI_FVB2_READ_ENABLED_CAP   0x00000002
+#define EFI_FVB2_READ_STATUS        0x00000004
+#define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008
+#define EFI_FVB2_WRITE_ENABLED_CAP  0x00000010
+#define EFI_FVB2_WRITE_STATUS       0x00000020
+#define EFI_FVB2_LOCK_CAP           0x00000040
+#define EFI_FVB2_LOCK_STATUS        0x00000080
+#define EFI_FVB2_STICKY_WRITE       0x00000200
+#define EFI_FVB2_MEMORY_MAPPED      0x00000400
+#define EFI_FVB2_ERASE_POLARITY     0x00000800
+#define EFI_FVB2_READ_LOCK_CAP      0x00001000
+#define EFI_FVB2_READ_LOCK_STATUS   0x00002000
+#define EFI_FVB2_WRITE_LOCK_CAP     0x00004000
+#define EFI_FVB2_WRITE_LOCK_STATUS  0x00008000
+#define EFI_FVB2_ALIGNMENT          0x001F0000
+#define EFI_FVB2_ALIGNMENT_1        0x00000000
+#define EFI_FVB2_ALIGNMENT_2        0x00010000
+#define EFI_FVB2_ALIGNMENT_4        0x00020000
+#define EFI_FVB2_ALIGNMENT_8        0x00030000
+#define EFI_FVB2_ALIGNMENT_16       0x00040000
+#define EFI_FVB2_ALIGNMENT_32       0x00050000
+#define EFI_FVB2_ALIGNMENT_64       0x00060000
+#define EFI_FVB2_ALIGNMENT_128      0x00070000
+#define EFI_FVB2_ALIGNMENT_256      0x00080000
+#define EFI_FVB2_ALIGNMENT_512      0x00090000
+#define EFI_FVB2_ALIGNMENT_1K       0x000A0000
+#define EFI_FVB2_ALIGNMENT_2K       0x000B0000
+#define EFI_FVB2_ALIGNMENT_4K       0x000C0000
+#define EFI_FVB2_ALIGNMENT_8K       0x000D0000
+#define EFI_FVB2_ALIGNMENT_16K      0x000E0000
+#define EFI_FVB2_ALIGNMENT_32K      0x000F0000
+#define EFI_FVB2_ALIGNMENT_64K      0x00100000
+#define EFI_FVB2_ALIGNMENT_128K     0x00110000
+#define EFI_FVB2_ALIGNMENT_256K     0x00120000
+#define EFI_FVB2_ALIGNMENT_512K     0x00130000
+#define EFI_FVB2_ALIGNMENT_1M       0x00140000
+#define EFI_FVB2_ALIGNMENT_2M       0x00150000
+#define EFI_FVB2_ALIGNMENT_4M       0x00160000
+#define EFI_FVB2_ALIGNMENT_8M       0x00170000
+#define EFI_FVB2_ALIGNMENT_16M      0x00180000
+#define EFI_FVB2_ALIGNMENT_32M      0x00190000
+#define EFI_FVB2_ALIGNMENT_64M      0x001A0000
+#define EFI_FVB2_ALIGNMENT_128M     0x001B0000
+#define EFI_FVB2_ALIGNMENT_256M     0x001C0000
+#define EFI_FVB2_ALIGNMENT_512M     0x001D0000
+#define EFI_FVB2_ALIGNMENT_1G       0x001E0000
+#define EFI_FVB2_ALIGNMENT_2G       0x001F0000
+
+
+typedef struct {
+  ///
+  /// The number of sequential blocks which are of the same size.
+  ///
+  UINT32 NumBlocks;
+  ///
+  /// The size of the blocks.
+  ///
+  UINT32 Length;
+} EFI_FV_BLOCK_MAP_ENTRY;
+
+///
+/// Describes the features and layout of the firmware volume.
+///
+typedef struct {
+  ///
+  /// The first 16 bytes are reserved to allow for the reset vector of
+  /// processors whose reset vector is at address 0.
+  ///
+  UINT8                     ZeroVector[16];
+  ///
+  /// Declares the file system with which the firmware volume is formatted.
+  ///
+  EFI_GUID                  FileSystemGuid;
+  ///
+  /// Length in bytes of the complete firmware volume, including the header.
+  ///
+  UINT64                    FvLength;
+  ///
+  /// Set to EFI_FVH_SIGNATURE
+  ///
+  UINT32                    Signature;
+  ///
+  /// Declares capabilities and power-on defaults for the firmware volume.
+  ///
+  EFI_FVB_ATTRIBUTES_2      Attributes;
+  ///
+  /// Length in bytes of the complete firmware volume header.
+  ///
+  UINT16                    HeaderLength;
+  ///
+  /// A 16-bit checksum of the firmware volume header. A valid header sums to zero.
+  ///
+  UINT16                    Checksum;
+  ///
+  /// Offset, relative to the start of the header, of the extended header
+  /// (EFI_FIRMWARE_VOLUME_EXT_HEADER) or zero if there is no extended header.
+  ///
+  UINT16                    ExtHeaderOffset;
+  ///
+  /// This field must always be set to zero.
+  ///
+  UINT8                     Reserved[1];
+  ///
+  /// Set to 2. Future versions of this specification may define new header fields and will
+  /// increment the Revision field accordingly.
+  ///
+  UINT8                     Revision;
+  ///
+  /// An array of run-length encoded FvBlockMapEntry structures. The array is
+  /// terminated with an entry of {0,0}.
+  ///
+  EFI_FV_BLOCK_MAP_ENTRY    BlockMap[1];
+} EFI_FIRMWARE_VOLUME_HEADER;
+
+#define EFI_FVH_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', 'H')
+
+///
+/// Firmware Volume Header Revision definition
+///
+#define EFI_FVH_REVISION  0x02
+
+///
+/// Extension header pointed by ExtHeaderOffset of volume header.
+///
+typedef struct {
+  ///
+  /// Firmware volume name.
+  ///
+  EFI_GUID  FvName;
+  ///
+  /// Size of the rest of the extension header, including this structure.
+  ///
+  UINT32    ExtHeaderSize;
+} EFI_FIRMWARE_VOLUME_EXT_HEADER;
+
+///
+/// Entry struture for describing FV extension header
+///
+typedef struct {
+  ///
+  /// Size of this header extension.
+  ///
+  UINT16    ExtEntrySize;
+  ///
+  /// Type of the header.
+  ///
+  UINT16    ExtEntryType;
+} EFI_FIRMWARE_VOLUME_EXT_ENTRY;
+
+#define EFI_FV_EXT_TYPE_OEM_TYPE  0x01
+///
+/// This extension header provides a mapping between a GUID and an OEM file type.
+///
+typedef struct {
+  ///
+  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
+  ///
+  EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
+  ///
+  /// A bit mask, one bit for each file type between 0xC0 (bit 0) and 0xDF (bit 31). If a bit
+  /// is '1', then the GUID entry exists in Types. If a bit is '0' then no GUID entry exists in Types.
+  ///
+  UINT32    TypeMask;
+  ///
+  /// An array of GUIDs, each GUID representing an OEM file type.
+  ///
+  /// EFI_GUID  Types[1];
+  ///
+} EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;
+
+#define EFI_FV_EXT_TYPE_GUID_TYPE 0x0002
+
+///
+/// This extension header EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE provides a vendor specific
+/// GUID FormatType type which includes a length and a successive series of data bytes.
+///
+typedef struct {
+  ///
+  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
+  ///
+  EFI_FIRMWARE_VOLUME_EXT_ENTRY     Hdr;
+  ///
+  /// Vendor-specific GUID.
+  ///
+  EFI_GUID                          FormatType;
+  ///
+  /// An arry of bytes of length Length.
+  ///
+  /// UINT8                             Data[1];
+  ///
+} EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE;
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fsphob.h b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fsphob.h
new file mode 100644
index 0000000..5840907
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fsphob.h
@@ -0,0 +1,507 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef __PI_HOB_H__
+#define __PI_HOB_H__
+
+//
+// HobType of EFI_HOB_GENERIC_HEADER.
+//
+#define EFI_HOB_TYPE_MEMORY_ALLOCATION    0x0002
+#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR  0x0003
+#define EFI_HOB_TYPE_GUID_EXTENSION       0x0004
+#define EFI_HOB_TYPE_UNUSED               0xFFFE
+#define EFI_HOB_TYPE_END_OF_HOB_LIST      0xFFFF
+
+///
+/// Describes the format and size of the data inside the HOB.
+/// All HOBs must contain this generic HOB header.
+///
+typedef struct {
+  ///
+  /// Identifies the HOB data structure type.
+  ///
+  UINT16    HobType;
+  ///
+  /// The length in bytes of the HOB.
+  ///
+  UINT16    HobLength;
+  ///
+  /// This field must always be set to zero.
+  ///
+  UINT32    Reserved;
+} EFI_HOB_GENERIC_HEADER;
+
+///
+/// Enumeration of memory types introduced in UEFI.
+///
+typedef enum {
+  ///
+  /// Not used.
+  ///
+  EfiReservedMemoryType,
+  ///
+  /// The code portions of a loaded application.
+  /// (Note that UEFI OS loaders are UEFI applications.)
+  ///
+  EfiLoaderCode,
+  ///
+  /// The data portions of a loaded application and the default data allocation
+  /// type used by an application to allocate pool memory.
+  ///
+  EfiLoaderData,
+  ///
+  /// The code portions of a loaded Boot Services Driver.
+  ///
+  EfiBootServicesCode,
+  ///
+  /// The data portions of a loaded Boot Serves Driver, and the default data
+  /// allocation type used by a Boot Services Driver to allocate pool memory.
+  ///
+  EfiBootServicesData,
+  ///
+  /// The code portions of a loaded Runtime Services Driver.
+  ///
+  EfiRuntimeServicesCode,
+  ///
+  /// The data portions of a loaded Runtime Services Driver and the default
+  /// data allocation type used by a Runtime Services Driver to allocate pool memory.
+  ///
+  EfiRuntimeServicesData,
+  ///
+  /// Free (unallocated) memory.
+  ///
+  EfiConventionalMemory,
+  ///
+  /// Memory in which errors have been detected.
+  ///
+  EfiUnusableMemory,
+  ///
+  /// Memory that holds the ACPI tables.
+  ///
+  EfiACPIReclaimMemory,
+  ///
+  /// Address space reserved for use by the firmware.
+  ///
+  EfiACPIMemoryNVS,
+  ///
+  /// Used by system firmware to request that a memory-mapped IO region
+  /// be mapped by the OS to a virtual address so it can be accessed by EFI runtime services.
+  ///
+  EfiMemoryMappedIO,
+  ///
+  /// System memory-mapped IO region that is used to translate memory
+  /// cycles to IO cycles by the processor.
+  ///
+  EfiMemoryMappedIOPortSpace,
+  ///
+  /// Address space reserved by the firmware for code that is part of the processor.
+  ///
+  EfiPalCode,
+  EfiMaxMemoryType
+} EFI_MEMORY_TYPE;
+
+///
+/// EFI_HOB_MEMORY_ALLOCATION_HEADER describes the
+/// various attributes of the logical memory allocation. The type field will be used for
+/// subsequent inclusion in the UEFI memory map.
+///
+typedef struct {
+  ///
+  /// A GUID that defines the memory allocation region's type and purpose, as well as
+  /// other fields within the memory allocation HOB. This GUID is used to define the
+  /// additional data within the HOB that may be present for the memory allocation HOB.
+  /// Type EFI_GUID is defined in InstallProtocolInterface() in the UEFI 2.0
+  /// specification.
+  ///
+  EFI_GUID              Name;
+
+  ///
+  /// The base address of memory allocated by this HOB. Type
+  /// EFI_PHYSICAL_ADDRESS is defined in AllocatePages() in the UEFI 2.0
+  /// specification.
+  ///
+  EFI_PHYSICAL_ADDRESS  MemoryBaseAddress;
+
+  ///
+  /// The length in bytes of memory allocated by this HOB.
+  ///
+  UINT64                MemoryLength;
+
+  ///
+  /// Defines the type of memory allocated by this HOB. The memory type definition
+  /// follows the EFI_MEMORY_TYPE definition. Type EFI_MEMORY_TYPE is defined
+  /// in AllocatePages() in the UEFI 2.0 specification.
+  ///
+  EFI_MEMORY_TYPE       MemoryType;
+
+  ///
+  /// Padding for Itanium processor family
+  ///
+  UINT8                 Reserved[4];
+} EFI_HOB_MEMORY_ALLOCATION_HEADER;
+
+///
+/// Describes all memory ranges used during the HOB producer
+/// phase that exist outside the HOB list. This HOB type
+/// describes how memory is used, not the physical attributes of memory.
+///
+typedef struct {
+  ///
+  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
+  ///
+  EFI_HOB_GENERIC_HEADER            Header;
+  ///
+  /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
+  /// various attributes of the logical memory allocation.
+  ///
+  EFI_HOB_MEMORY_ALLOCATION_HEADER  AllocDescriptor;
+  //
+  // Additional data pertaining to the "Name" Guid memory
+  // may go here.
+  //
+} EFI_HOB_MEMORY_ALLOCATION;
+
+///
+/// The resource type.
+///
+typedef UINT32 EFI_RESOURCE_TYPE;
+
+//
+// Value of ResourceType in EFI_HOB_RESOURCE_DESCRIPTOR.
+//
+#define EFI_RESOURCE_SYSTEM_MEMORY          0x00000000
+#define EFI_RESOURCE_MEMORY_MAPPED_IO       0x00000001
+#define EFI_RESOURCE_IO                     0x00000002
+#define EFI_RESOURCE_FIRMWARE_DEVICE        0x00000003
+#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT  0x00000004
+#define EFI_RESOURCE_MEMORY_RESERVED        0x00000005
+#define EFI_RESOURCE_IO_RESERVED            0x00000006
+#define EFI_RESOURCE_MAX_MEMORY_TYPE        0x00000007
+
+///
+/// A type of recount attribute type.
+///
+typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE;
+
+//
+// These types can be ORed together as needed.
+//
+// The first three enumerations describe settings
+//
+#define EFI_RESOURCE_ATTRIBUTE_PRESENT              0x00000001
+#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED          0x00000002
+#define EFI_RESOURCE_ATTRIBUTE_TESTED               0x00000004
+//
+// The rest of the settings describe capabilities
+//
+#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC           0x00000008
+#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC         0x00000010
+#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1           0x00000020
+#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2           0x00000040
+#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED           0x00000080
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED          0x00000100
+#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED      0x00000200
+#define EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE              0x00000400
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE        0x00000800
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE  0x00001000
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE     0x00002000
+#define EFI_RESOURCE_ATTRIBUTE_16_BIT_IO                0x00004000
+#define EFI_RESOURCE_ATTRIBUTE_32_BIT_IO                0x00008000
+#define EFI_RESOURCE_ATTRIBUTE_64_BIT_IO                0x00010000
+#define EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED        0x00020000
+
+///
+/// Describes the resource properties of all fixed,
+/// nonrelocatable resource ranges found on the processor
+/// host bus during the HOB producer phase.
+///
+typedef struct {
+  ///
+  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_RESOURCE_DESCRIPTOR.
+  ///
+  EFI_HOB_GENERIC_HEADER      Header;
+  ///
+  /// A GUID representing the owner of the resource. This GUID is used by HOB
+  /// consumer phase components to correlate device ownership of a resource.
+  ///
+  EFI_GUID                    Owner;
+  ///
+  /// The resource type enumeration as defined by EFI_RESOURCE_TYPE.
+  ///
+  EFI_RESOURCE_TYPE           ResourceType;
+  ///
+  /// Resource attributes as defined by EFI_RESOURCE_ATTRIBUTE_TYPE.
+  ///
+  EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;
+  ///
+  /// The physical start address of the resource region.
+  ///
+  EFI_PHYSICAL_ADDRESS        PhysicalStart;
+  ///
+  /// The number of bytes of the resource region.
+  ///
+  UINT64                      ResourceLength;
+} EFI_HOB_RESOURCE_DESCRIPTOR;
+
+///
+/// Allows writers of executable content in the HOB producer phase to
+/// maintain and manage HOBs with specific GUID.
+///
+typedef struct {
+  ///
+  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_GUID_EXTENSION.
+  ///
+  EFI_HOB_GENERIC_HEADER      Header;
+  ///
+  /// A GUID that defines the contents of this HOB.
+  ///
+  EFI_GUID                    Name;
+  //
+  // Guid specific data goes here
+  //
+} EFI_HOB_GUID_TYPE;
+
+///
+/// Union of all the possible HOB Types.
+///
+typedef union {
+  EFI_HOB_GENERIC_HEADER              *Header;
+  EFI_HOB_MEMORY_ALLOCATION           *MemoryAllocation;
+  EFI_HOB_RESOURCE_DESCRIPTOR         *ResourceDescriptor;
+  EFI_HOB_GUID_TYPE                   *Guid;
+  UINT8                               *Raw;
+} EFI_PEI_HOB_POINTERS;
+
+
+/**
+  Returns the type of a HOB.
+
+  This macro returns the HobType field from the HOB header for the
+  HOB specified by HobStart.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @return HobType.
+
+**/
+#define GET_HOB_TYPE(HobStart) \
+  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobType)
+
+/**
+  Returns the length, in bytes, of a HOB.
+
+  This macro returns the HobLength field from the HOB header for the
+  HOB specified by HobStart.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @return HobLength.
+
+**/
+#define GET_HOB_LENGTH(HobStart) \
+  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobLength)
+
+/**
+  Returns a pointer to the next HOB in the HOB list.
+
+  This macro returns a pointer to HOB that follows the
+  HOB specified by HobStart in the HOB List.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @return A pointer to the next HOB in the HOB list.
+
+**/
+#define GET_NEXT_HOB(HobStart) \
+  (VOID *)(*(UINT8 **)&(HobStart) + GET_HOB_LENGTH (HobStart))
+
+/**
+  Determines if a HOB is the last HOB in the HOB list.
+
+  This macro determine if the HOB specified by HobStart is the
+  last HOB in the HOB list.  If HobStart is last HOB in the HOB list,
+  then TRUE is returned.  Otherwise, FALSE is returned.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @retval TRUE       The HOB specified by HobStart is the last HOB in the HOB list.
+  @retval FALSE      The HOB specified by HobStart is not the last HOB in the HOB list.
+
+**/
+#define END_OF_HOB_LIST(HobStart)  (GET_HOB_TYPE (HobStart) == (UINT16)EFI_HOB_TYPE_END_OF_HOB_LIST)
+
+/**
+  Returns a pointer to data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  This macro returns a pointer to the data buffer in a HOB specified by HobStart.
+  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  @param   GuidHob   A pointer to a HOB.
+
+  @return  A pointer to the data buffer in a HOB.
+
+**/
+#define GET_GUID_HOB_DATA(HobStart) \
+  (VOID *)(*(UINT8 **)&(HobStart) + sizeof (EFI_HOB_GUID_TYPE))
+
+/**
+  Returns the size of the data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  This macro returns the size, in bytes, of the data buffer in a HOB specified by HobStart.
+  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  @param   GuidHob   A pointer to a HOB.
+
+  @return  The size of the data buffer.
+**/
+#define GET_GUID_HOB_DATA_SIZE(HobStart) \
+  (UINT16)(GET_HOB_LENGTH (HobStart) - sizeof (EFI_HOB_GUID_TYPE))
+
+/**
+  Returns the pointer to the HOB list.
+
+  This function returns the pointer to first HOB in the list.
+
+  If the pointer to the HOB list is NULL, then ASSERT().
+
+  @return The pointer to the HOB list.
+
+**/
+VOID *
+EFIAPI
+GetHobList (
+  VOID
+  );
+
+/**
+  Returns the next instance of a HOB type from the starting HOB.
+
+  This function searches the first instance of a HOB type from the starting HOB pointer.
+  If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
+  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
+  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
+  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
+
+  If HobStart is NULL, then ASSERT().
+
+  @param  Type          The HOB type to return.
+  @param  HobStart      The starting HOB pointer to search from.
+
+  @return The next instance of a HOB type from the starting HOB.
+
+**/
+VOID *
+EFIAPI
+GetNextHob (
+  UINT16                 Type,
+  CONST VOID             *HobStart
+  );
+
+/**
+  Returns the first instance of a HOB type among the whole HOB list.
+
+  This function searches the first instance of a HOB type among the whole HOB list.
+  If there does not exist such HOB type in the HOB list, it will return NULL.
+
+  If the pointer to the HOB list is NULL, then ASSERT().
+
+  @param  Type          The HOB type to return.
+
+  @return The next instance of a HOB type from the starting HOB.
+
+**/
+VOID *
+EFIAPI
+GetFirstHob (
+  UINT16                 Type
+  );
+
+/**
+  Returns the next instance of the matched GUID HOB from the starting HOB.
+
+  This function searches the first instance of a HOB from the starting HOB pointer.
+  Such HOB should satisfy two conditions:
+  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
+  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
+  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
+  to extract the data section and its size info respectively.
+  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
+  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
+  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
+
+  If Guid is NULL, then ASSERT().
+  If HobStart is NULL, then ASSERT().
+
+  @param  Guid          The GUID to match with in the HOB list.
+  @param  HobStart      A pointer to a Guid.
+
+  @return The next instance of the matched GUID HOB from the starting HOB.
+
+**/
+VOID *
+EFIAPI
+GetNextGuidHob (
+  CONST EFI_GUID         *Guid,
+  CONST VOID             *HobStart
+  );
+
+/**
+  Returns the first instance of the matched GUID HOB among the whole HOB list.
+
+  This function searches the first instance of a HOB among the whole HOB list.
+  Such HOB should satisfy two conditions:
+  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
+  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
+  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
+  to extract the data section and its size info respectively.
+
+  If the pointer to the HOB list is NULL, then ASSERT().
+  If Guid is NULL, then ASSERT().
+
+  @param  Guid          The GUID to match with in the HOB list.
+
+  @return The first instance of the matched GUID HOB among the whole HOB list.
+
+**/
+VOID *
+EFIAPI
+GetFirstGuidHob (
+  CONST EFI_GUID         *Guid
+  );
+
+BOOLEAN
+EFIAPI
+CompareGuid (
+  CONST EFI_GUID  *Guid1,
+  CONST EFI_GUID  *Guid2
+  );
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspinfoheader.h b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspinfoheader.h
new file mode 100644
index 0000000..0f7b3a9
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspinfoheader.h
@@ -0,0 +1,62 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef _FSP_INFO_HEADER_H_
+#define _FSP_INFO_HEADER_H_
+
+#pragma pack(1)
+
+typedef struct  {
+
+  UINT32  Signature;       // Off 0x94
+  UINT32  HeaderLength;
+  UINT8   Reserved1[3];
+  UINT8   HeaderRevision;
+  UINT32  ImageRevision;
+
+  CHAR8   ImageId[8];      // Off 0xA4
+  UINT32  ImageSize;
+  UINT32  ImageBase;
+
+  UINT32  ImageAttribute;  // Off 0xB4
+  UINT32  CfgRegionOffset;
+  UINT32  CfgRegionSize;
+  UINT32  ApiEntryNum;
+
+  UINT32  NemInitEntry;    // Off 0xC4
+  UINT32  FspInitEntry;
+  UINT32  NotifyPhaseEntry;
+  UINT32  Reserved2;
+
+} FSP_INFO_HEADER;
+
+#pragma pack()
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspplatform.h b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspplatform.h
new file mode 100644
index 0000000..06cf67e
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fspplatform.h
@@ -0,0 +1,63 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef _FSP_PLATFORM_H_
+#define _FSP_PLATFORM_H_
+
+#include "fsptypes.h"
+#include "fspapi.h"
+#include "mem_config.h"
+
+#pragma pack(1)
+
+typedef struct {
+    MEM_CONFIG  *MemoryConfig;
+} FSP_INIT_RT_PLATFORM_BUFFER;
+
+typedef struct {
+    uint8_t  HTEnable;
+    uint8_t  TurboEnable;
+    uint8_t  MemoryDownEnable;
+    uint8_t  FastBootEnable;
+} PLATFORM_CONFIG;
+
+typedef struct {
+    const PLATFORM_CONFIG  *PlatformConfig;
+} FSP_INIT_RT_CONFIG_BUFFER;
+
+typedef struct {
+    FSP_INIT_RT_COMMON_BUFFER  Common;
+    FSP_INIT_RT_CONFIG_BUFFER  PlatformConfiguration;
+    FSP_INIT_RT_PLATFORM_BUFFER  Platform;
+} FSP_INIT_RT_BUFFER;
+
+#pragma pack()
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fsptypes.h b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fsptypes.h
new file mode 100644
index 0000000..a3a54c0
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/fsptypes.h
@@ -0,0 +1,116 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+/** \file  fsptypes.h
+ *
+ *
+ */
+
+#ifndef __FSP_TYPES_H__
+#define __FSP_TYPES_H__
+
+///
+/// 8-byte unsigned value.
+///
+typedef unsigned long long  UINT64;
+///
+/// 8-byte signed value.
+///
+typedef long long           INT64;
+///
+/// 4-byte unsigned value.
+///
+typedef unsigned int        UINT32;
+///
+/// 4-byte signed value.
+///
+typedef int                 INT32;
+///
+/// 2-byte unsigned value.
+///
+typedef unsigned short      UINT16;
+///
+/// 2-byte Character.  Unless otherwise specified all strings are stored in the
+/// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
+///
+typedef unsigned short      CHAR16;
+///
+/// 2-byte signed value.
+///
+typedef short               INT16;
+///
+/// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
+/// values are undefined.
+///
+typedef unsigned char       BOOLEAN;
+///
+/// 1-byte unsigned value.
+///
+typedef unsigned char       UINT8;
+///
+/// 1-byte Character
+///
+typedef char                CHAR8;
+///
+/// 1-byte signed value
+///
+typedef char                INT8;
+
+typedef void                VOID;
+
+typedef UINT64              EFI_PHYSICAL_ADDRESS;
+
+typedef struct {
+  UINT32  Data1;
+  UINT16  Data2;
+  UINT16  Data3;
+  UINT8   Data4[8];
+} EFI_GUID;
+
+#define CONST     const
+#define STATIC    static
+
+#define TRUE  ((BOOLEAN)(1==1))
+#define FALSE ((BOOLEAN)(0==1))
+
+#define FSPAPI __attribute__((cdecl))
+#define EFIAPI __attribute__((cdecl))
+
+#define ASSERT(Expression)      \
+  do {                          \
+    if (!(Expression)) {        \
+      for (;;);                 \
+    }                           \
+  } while (FALSE)
+
+typedef UINT32 FSP_STATUS;
+typedef UINT32 EFI_STATUS;
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/mem_config.h b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/mem_config.h
new file mode 100644
index 0000000..26deb90
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/mem_config.h
@@ -0,0 +1,131 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+//
+// mem_config.h
+//
+
+#ifndef _MEM_CONFIG_H_
+#define _MEM_CONFIG_H_
+
+typedef enum {
+  fi1067_IVB=0,
+  fi1333_IVB,
+  fi1400_IVB,
+  fi1600_IVB,
+  fi1800_IVB,
+  fi1867_IVB,
+  fi2000_IVB,
+  fi2133_IVB,
+  fi2200_IVB,
+  fi2400_IVB,
+  fi2600_IVB,
+  fi2667_IVB,
+  fi2800_IVB,
+  fiUnsupport_IVB,
+}TFrequencyIndex_IVB;
+
+#define NUM_IVB_MEM_CLK_FREQUENCIES 13
+
+// DDR3 memory SPD data
+//
+// NOTE: This only includes the SPD bytes that are relevant to the MRC
+typedef struct {                             // BYTE
+    uint8_t  SPDGeneral;                     // 0   Number of Serial PD Bytes Written / SPD Device Size / CRC Coverage 1, 2
+    uint8_t  SPDRevision;                    // 1   SPD Revision
+    uint8_t  DRAMDeviceType;                 // 2   DRAM Device Type
+    uint8_t  ModuleType;                     // 3   Module Type
+    uint8_t  SDRAMDensityAndBanks;           // 4   SDRAM Density and Banks
+    uint8_t  SDRAMAddressing;                // 5   SDRAM Addressing
+    uint8_t  VDD;                            // 6   Module Nominal Voltage
+    uint8_t  ModuleOrganization;             // 7   Module Organization
+    uint8_t  ModuleMemoryBusWidth;           // 8   Module Memory Bus Width
+    uint8_t  FineTimebase;                   // 9   Fine Timebase (FTB) Dividend / Divisor
+    uint8_t  TimebaseDividend;               // 10  Medium Timebase (MTB) Dividend
+    uint8_t  TimebaseDivisor;                // 11  Medium Timebase (MTB) Divisor
+    uint8_t  SDRAMMinimumCycleTime;          // 12  SDRAM Minimum Cycle Time (tCKmin)
+    uint8_t  Reserved0;                      // 13  Reserved0
+    uint8_t  CASLatenciesLSB;                // 14  CAS Latencies Supported, Least Significant Byte
+    uint8_t  CASLatenciesMSB;                // 15  CAS Latencies Supported, Most Significant Byte
+    uint8_t  MinimumCASLatencyTime;          // 16  Minimum CAS Latency Time (tAAmin)
+    uint8_t  MinimumWriteRecoveryTime;       // 17  Minimum Write Recovery Time (tWRmin)
+    uint8_t  MinimumRASToCASDelayTime;       // 18  Minimum RAS# to CAS# Delay Time (tRCDmin)
+    uint8_t  MinimumRowToRowDelayTime;       // 19  Minimum Row Active to Row Active Delay Time (tRRDmin)
+    uint8_t  MinimumRowPrechargeDelayTime;   // 20  Minimum Row Precharge Delay Time (tRPmin)
+    uint8_t  UpperNibblesFortRASAndtRC;      // 21  Upper Nibbles for tRAS and tRC
+    uint8_t  tRASmin;                        // 22  Minimum Active to Precharge Delay Time (tRASmin), Least Significant Byte
+    uint8_t  tRCmin;                         // 23  Minimum Active to Active/Refresh Delay Time (tRCmin), Least Significant Byte
+    uint8_t  tRFCminLeastSignificantByte;    // 24  Minimum Refresh Recovery Delay Time (tRFCmin), Least Significant Byte
+    uint8_t  tRFCminMostSignificantByte;     // 25  Minimum Refresh Recovery Delay Time (tRFCmin), Most Significant Byte
+    uint8_t  tWTRmin;                        // 26  Minimum Internal Write to Read Command Delay Time (tWTRmin)
+    uint8_t  tRTPmin;                        // 27  Minimum Internal Read to Precharge Command Delay Time (tRTPmin)
+    uint8_t  UpperNibbleFortFAW;             // 28  Upper Nibble for tFAW
+    uint8_t  tFAWmin;                        // 29  Minimum Four Activate Window Delay Time (tFAWmin)
+    uint8_t  SDRAMOptionalFeatures;          // 30  SDRAM Optional Features
+    uint8_t  SDRAMThermalAndRefreshOptions;  // 31  SDRAMThermalAndRefreshOptions
+    uint8_t  ModuleThermalSensor;            // 32  ModuleThermalSensor
+    uint8_t  SDRAMDeviceType;                // 33  SDRAM Device Type
+    int8_t   tCKminFine;                     // 34  Fine Offset for SDRAM Minimum Cycle Time (tCKmin)
+    int8_t   tAAminFine;                     // 35  Fine Offset for Minimum CAS Latency Time (tAAmin)
+    int8_t   tRCDminFine;                    // 36  Fine Offset for Minimum RAS# to CAS# Delay Time (tRCDmin)
+    int8_t   tRPminFine;                     // 37  Fine Offset for Minimum Row Precharge Delay Time (tRPmin)
+    int8_t   tRCminFine;                     // 38  Fine Offset for Minimum Active to Active/Refresh Delay Time (tRCmin)
+    uint8_t  ReferenceRawCardUsed;           // 62  Reference Raw Card Used
+    uint8_t  AddressMappingEdgeConnector;    // 63  Address Mapping from Edge Connector to DRAM
+    uint8_t  ThermalHeatSpreaderSolution;    // 64  ThermalHeatSpreaderSolution
+    uint8_t  ModuleManufacturerIdCodeLsb;    // 117 Module Manufacturer ID Code, Least Significant Byte
+    uint8_t  ModuleManufacturerIdCodeMsb;    // 118 Module Manufacturer ID Code, Most Significant Byte
+    uint8_t  ModuleManufacturingLocation;    // 119 Module Manufacturing Location
+    uint8_t  ModuleManufacturingDateYear;    // 120 Module Manufacturing Date Year
+    uint8_t  ModuleManufacturingDateWW;      // 121 Module Manufacturing Date creation work week
+    uint8_t  ModuleSerialNumberA;            // 122 Module Serial Number A
+    uint8_t  ModuleSerialNumberB;            // 123 Module Serial Number B
+    uint8_t  ModuleSerialNumberC;            // 124 Module Serial Number C
+    uint8_t  ModuleSerialNumberD;            // 125 Module Serial Number D
+    uint8_t  CRCA;                           // 126 CRC A
+    uint8_t  CRCB;                           // 127 CRC B
+} DDR3_SPD;
+
+// Configuration for each memory channel/bank
+typedef struct {
+    uint32_t  Exists;
+    DDR3_SPD  SpdData;
+    uint8_t   InitClkPiValue[NUM_IVB_MEM_CLK_FREQUENCIES];
+} MEM_BANK_CONFIG;
+
+// Memory configuration
+typedef struct {
+    MEM_BANK_CONFIG  ChannelABank0;
+    MEM_BANK_CONFIG  ChannelABank1;
+    MEM_BANK_CONFIG  ChannelBBank0;
+    MEM_BANK_CONFIG  ChannelBBank1;
+} MEM_CONFIG;
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/peifsp.h b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/peifsp.h
new file mode 100644
index 0000000..dc3e60f
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/include/peifsp.h
@@ -0,0 +1,42 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+/** \file  peifsp.h
+ *
+ *
+ */
+#include <stdint.h>
+#include "fsptypes.h"
+#include "fspfv.h"
+#include "fspffs.h"
+#include "fsphob.h"
+#include "fspapi.h"
+#include "fspplatform.h"
+#include "fspinfoheader.h"
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/srx/fsphob.c b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/srx/fsphob.c
new file mode 100644
index 0000000..4214b3a
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_bd82x6x/srx/fsphob.c
@@ -0,0 +1,207 @@
+/**
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+/***********************************************************************
+ *
+ * fsphob.c
+ *
+ * HOB infrastructure code.
+ *
+ **********************************************************************/
+#include <string.h>
+
+#include "fsptypes.h"
+#include "fsphob.h"
+
+//
+// Pointer to the HOB should be initialized with the output of FSP INIT PARAMS
+//
+extern volatile void *FspHobListPtr;
+
+//
+// Function prototype
+//
+UINT64
+EFIAPI
+ReadUnaligned64 (
+  CONST UINT64              *Buffer
+  );
+
+/**
+  Reads a 64-bit value from memory that may be unaligned.
+
+  This function returns the 64-bit value pointed to by Buffer. The function
+  guarantees that the read operation does not produce an alignment fault.
+
+  If the Buffer is NULL, then ASSERT().
+
+  @param  Buffer  Pointer to a 64-bit value that may be unaligned.
+
+  @return The 64-bit value read from Buffer.
+
+**/
+UINT64
+EFIAPI
+ReadUnaligned64 (
+  CONST UINT64              *Buffer
+  )
+{
+  ASSERT (Buffer != NULL);
+
+  return *Buffer;
+}
+
+/**
+  Compares two GUIDs.
+
+  This function compares Guid1 to Guid2.  If the GUIDs are identical then TRUE is returned.
+  If there are any bit differences in the two GUIDs, then FALSE is returned.
+
+  If Guid1 is NULL, then ASSERT().
+  If Guid2 is NULL, then ASSERT().
+
+  @param  Guid1       A pointer to a 128 bit GUID.
+  @param  Guid2       A pointer to a 128 bit GUID.
+
+  @retval TRUE        Guid1 and Guid2 are identical.
+  @retval FALSE       Guid1 and Guid2 are not identical.
+
+**/
+BOOLEAN
+EFIAPI
+CompareGuid (
+  CONST EFI_GUID  *Guid1,
+  CONST EFI_GUID  *Guid2
+  )
+{
+  UINT64  LowPartOfGuid1;
+  UINT64  LowPartOfGuid2;
+  UINT64  HighPartOfGuid1;
+  UINT64  HighPartOfGuid2;
+
+  LowPartOfGuid1  = ReadUnaligned64 ((CONST UINT64*) Guid1);
+  LowPartOfGuid2  = ReadUnaligned64 ((CONST UINT64*) Guid2);
+  HighPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1 + 1);
+  HighPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2 + 1);
+
+  return (BOOLEAN) (LowPartOfGuid1 == LowPartOfGuid2 && HighPartOfGuid1 == HighPartOfGuid2);
+}
+
+/**
+  Returns the pointer to the HOB list.
+**/
+VOID *
+EFIAPI
+GetHobList (
+  VOID
+  )
+{
+  ASSERT (FspHobListPtr != NULL);
+  return ((VOID *)FspHobListPtr);
+}
+
+/**
+  Returns the next instance of a HOB type from the starting HOB.
+**/
+VOID *
+EFIAPI
+GetNextHob (
+  UINT16                 Type,
+  CONST VOID             *HobStart
+  )
+{
+  EFI_PEI_HOB_POINTERS  Hob;
+
+  ASSERT (HobStart != NULL);
+
+  Hob.Raw = (UINT8 *) HobStart;
+  //
+  // Parse the HOB list until end of list or matching type is found.
+  //
+  while (!END_OF_HOB_LIST (Hob)) {
+    if (Hob.Header->HobType == Type) {
+      return Hob.Raw;
+    }
+    Hob.Raw = GET_NEXT_HOB (Hob);
+  }
+  return NULL;
+}
+
+/**
+  Returns the first instance of a HOB type among the whole HOB list.
+**/
+VOID *
+EFIAPI
+GetFirstHob (
+  UINT16                 Type
+  )
+{
+  VOID      *HobList;
+
+  HobList = GetHobList ();
+  return GetNextHob (Type, HobList);
+}
+
+/**
+  Returns the next instance of the matched GUID HOB from the starting HOB.
+**/
+VOID *
+EFIAPI
+GetNextGuidHob (
+  CONST EFI_GUID         *Guid,
+  CONST VOID             *HobStart
+  )
+{
+  EFI_PEI_HOB_POINTERS  GuidHob;
+
+  GuidHob.Raw = (UINT8 *) HobStart;
+  while ((GuidHob.Raw = GetNextHob (EFI_HOB_TYPE_GUID_EXTENSION, GuidHob.Raw)) != NULL) {
+    if (CompareGuid (Guid, &GuidHob.Guid->Name)) {
+      break;
+    }
+    GuidHob.Raw = GET_NEXT_HOB (GuidHob);
+  }
+  return GuidHob.Raw;
+}
+
+/**
+  Returns the first instance of the matched GUID HOB among the whole HOB list.
+**/
+VOID *
+EFIAPI
+GetFirstGuidHob (
+  CONST EFI_GUID         *Guid
+  )
+{
+  VOID      *HobList;
+
+  HobList = GetHobList ();
+  return GetNextGuidHob (Guid, HobList);
+}
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fsp_vpd.h b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fsp_vpd.h
new file mode 100644
index 0000000..fdee5f4
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fsp_vpd.h
@@ -0,0 +1,60 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef __VPDHEADER_H__
+#define __VPDHEADER_H__
+
+#pragma pack(1)
+
+typedef struct _UPD_DATA_REGION {
+  UINT64   Signature;                             /* Offset 0x0000 */
+  UINT64   Reserved;                              /* Offset 0x0008 */
+  UINT8    HTEnable;                              /* Offset 0x0010 */
+  UINT8    TurboEnable;                           /* Offset 0x0011 */
+  UINT8    MemoryDownEnable;                      /* Offset 0x0012 */
+  UINT8    FastBootEnable;                        /* Offset 0x0013 */
+  UINT16   PcdRegionTerminator;                   /* Offset 0x0310 */
+} UPD_DATA_REGION;
+
+
+#define VPD_IMAGE_SIGN  0x565053462d325453        /* 'ST2-FSPV' */
+#define VPD_IMAGE_REV   0x00000001
+
+typedef struct _VPD_DATA_REGION {
+  UINT64   PcdVpdRegionSign;                      /* Offset 0x0000 */
+  UINT32   PcdImageRevision;                      /* Offset 0x0008 */
+  UINT32   PcdUpdRegionOffset;                    /* Offset 0x000C */
+  UINT8    Padding0[16];                          /* Offset 0x0010 */
+  UINT32   PcdFspReservedMemoryLength;            /* Offset 0x0020 */
+} VPD_DATA_REGION;
+
+#pragma pack()
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspapi.h b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspapi.h
new file mode 100644
index 0000000..18a1582
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspapi.h
@@ -0,0 +1,49 @@
+/**
+
+Copyright (c) 2008 - 2013, Intel Corporation. All rights reserved.
+This software and associated documentation (if any) is furnished
+under a license and may only be used or copied in accordance
+with the terms of the license. Except as permitted by such
+license, no part of this software or documentation may be
+reproduced, stored in a retrieval system, or transmitted in any
+form or by any means without the express written consent of
+Intel Corporation.
+
+**/
+
+#ifndef _FSP_API_H_
+#define _FSP_API_H_
+
+#pragma pack(1)
+
+typedef VOID (* CONTINUATION_PROC)(EFI_STATUS Status, VOID *HobListPtr);
+
+typedef struct {
+  VOID               *NvsBufferPtr;
+  VOID               *RtBufferPtr;
+  CONTINUATION_PROC   ContinuationFunc;
+} FSP_INIT_PARAMS;
+
+typedef struct {
+  UINT32            *StackTop;
+  UINT32             BootMode;  /* Refer to boot mode defined in MdePkg\Include\Pi\PiBootMode.h */
+  VOID              *UpdDataRgnPtr;
+  UINT32             Reserved[7];
+} FSP_INIT_RT_COMMON_BUFFER;
+
+typedef enum {
+  EnumInitPhaseAfterPciEnumeration = 0x20,
+  EnumInitPhaseReadyToBoot = 0x40
+} FSP_INIT_PHASE;
+
+typedef struct {
+  FSP_INIT_PHASE     Phase;
+} NOTIFY_PHASE_PARAMS;
+
+#pragma pack()
+
+
+typedef FSP_STATUS (FSPAPI *FSP_FSP_INIT)    (FSP_INIT_PARAMS     *FspInitParamPtr);
+typedef FSP_STATUS (FSPAPI *FSP_NOTFY_PHASE) (NOTIFY_PHASE_PARAMS *NotifyPhaseParamPtr);
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspffs.h b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspffs.h
new file mode 100644
index 0000000..7a7c367
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspffs.h
@@ -0,0 +1,506 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+
+#ifndef __PI_FIRMWARE_FILE_H__
+#define __PI_FIRMWARE_FILE_H__
+
+#pragma pack(1)
+///
+/// Used to verify the integrity of the file.
+///
+typedef union {
+  struct {
+    ///
+    /// The IntegrityCheck.Checksum.Header field is an 8-bit checksum of the file
+    /// header. The State and IntegrityCheck.Checksum.File fields are assumed
+    /// to be zero and the checksum is calculated such that the entire header sums to zero.
+    ///
+    UINT8   Header;
+    ///
+    /// If the FFS_ATTRIB_CHECKSUM (see definition below) bit of the Attributes
+    /// field is set to one, the IntegrityCheck.Checksum.File field is an 8-bit
+    /// checksum of the file data.
+    /// If the FFS_ATTRIB_CHECKSUM bit of the Attributes field is cleared to zero,
+    /// the IntegrityCheck.Checksum.File field must be initialized with a value of
+    /// 0xAA. The IntegrityCheck.Checksum.File field is valid any time the
+    /// EFI_FILE_DATA_VALID bit is set in the State field.
+    ///
+    UINT8   File;
+  } Checksum;
+  ///
+  /// This is the full 16 bits of the IntegrityCheck field.
+  ///
+  UINT16    Checksum16;
+} EFI_FFS_INTEGRITY_CHECK;
+
+///
+/// FFS_FIXED_CHECKSUM is the checksum value used when the
+/// FFS_ATTRIB_CHECKSUM attribute bit is clear.
+///
+#define FFS_FIXED_CHECKSUM  0xAA
+
+typedef UINT8 EFI_FV_FILETYPE;
+typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
+typedef UINT8 EFI_FFS_FILE_STATE;
+
+///
+/// File Types Definitions
+///
+#define EFI_FV_FILETYPE_ALL                   0x00
+#define EFI_FV_FILETYPE_RAW                   0x01
+#define EFI_FV_FILETYPE_FREEFORM              0x02
+#define EFI_FV_FILETYPE_SECURITY_CORE         0x03
+#define EFI_FV_FILETYPE_PEI_CORE              0x04
+#define EFI_FV_FILETYPE_DXE_CORE              0x05
+#define EFI_FV_FILETYPE_PEIM                  0x06
+#define EFI_FV_FILETYPE_DRIVER                0x07
+#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER  0x08
+#define EFI_FV_FILETYPE_APPLICATION           0x09
+#define EFI_FV_FILETYPE_SMM                   0x0A
+#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B
+#define EFI_FV_FILETYPE_COMBINED_SMM_DXE      0x0C
+#define EFI_FV_FILETYPE_SMM_CORE              0x0D
+#define EFI_FV_FILETYPE_OEM_MIN               0xc0
+#define EFI_FV_FILETYPE_OEM_MAX               0xdf
+#define EFI_FV_FILETYPE_DEBUG_MIN             0xe0
+#define EFI_FV_FILETYPE_DEBUG_MAX             0xef
+#define EFI_FV_FILETYPE_FFS_MIN               0xf0
+#define EFI_FV_FILETYPE_FFS_MAX               0xff
+#define EFI_FV_FILETYPE_FFS_PAD               0xf0
+///
+/// FFS File Attributes.
+///
+#define FFS_ATTRIB_LARGE_FILE         0x01
+#define FFS_ATTRIB_FIXED              0x04
+#define FFS_ATTRIB_DATA_ALIGNMENT     0x38
+#define FFS_ATTRIB_CHECKSUM           0x40
+
+///
+/// FFS File State Bits.
+///
+#define EFI_FILE_HEADER_CONSTRUCTION  0x01
+#define EFI_FILE_HEADER_VALID         0x02
+#define EFI_FILE_DATA_VALID           0x04
+#define EFI_FILE_MARKED_FOR_UPDATE    0x08
+#define EFI_FILE_DELETED              0x10
+#define EFI_FILE_HEADER_INVALID       0x20
+
+
+///
+/// Each file begins with the header that describe the
+/// contents and state of the files.
+///
+typedef struct {
+  ///
+  /// This GUID is the file name. It is used to uniquely identify the file.
+  ///
+  EFI_GUID                Name;
+  ///
+  /// Used to verify the integrity of the file.
+  ///
+  EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
+  ///
+  /// Identifies the type of file.
+  ///
+  EFI_FV_FILETYPE         Type;
+  ///
+  /// Declares various file attribute bits.
+  ///
+  EFI_FFS_FILE_ATTRIBUTES Attributes;
+  ///
+  /// The length of the file in bytes, including the FFS header.
+  ///
+  UINT8                   Size[3];
+  ///
+  /// Used to track the state of the file throughout the life of the file from creation to deletion.
+  ///
+  EFI_FFS_FILE_STATE      State;
+} EFI_FFS_FILE_HEADER;
+
+typedef struct {
+  ///
+  /// This GUID is the file name. It is used to uniquely identify the file. There may be only
+  /// one instance of a file with the file name GUID of Name in any given firmware
+  /// volume, except if the file type is EFI_FV_FILETYPE_FFS_PAD.
+  ///
+  EFI_GUID                  Name;
+
+  ///
+  /// Used to verify the integrity of the file.
+  ///
+  EFI_FFS_INTEGRITY_CHECK   IntegrityCheck;
+
+  ///
+  /// Identifies the type of file.
+  ///
+  EFI_FV_FILETYPE           Type;
+
+  ///
+  /// Declares various file attribute bits.
+  ///
+  EFI_FFS_FILE_ATTRIBUTES   Attributes;
+
+  ///
+  /// The length of the file in bytes, including the FFS header.
+  /// The length of the file data is either (Size - sizeof(EFI_FFS_FILE_HEADER)). This calculation means a
+  /// zero-length file has a Size of 24 bytes, which is sizeof(EFI_FFS_FILE_HEADER).
+  /// Size is not required to be a multiple of 8 bytes. Given a file F, the next file header is
+  /// located at the next 8-byte aligned firmware volume offset following the last byte of the file F.
+  ///
+  UINT8                     Size[3];
+
+  ///
+  /// Used to track the state of the file throughout the life of the file from creation to deletion.
+  ///
+  EFI_FFS_FILE_STATE        State;
+
+  ///
+  /// If FFS_ATTRIB_LARGE_FILE is set in Attributes, then ExtendedSize exists and Size must be set to zero.
+  /// If FFS_ATTRIB_LARGE_FILE is not set then EFI_FFS_FILE_HEADER is used.
+  ///
+  UINT32                    ExtendedSize;
+} EFI_FFS_FILE_HEADER2;
+
+#define IS_FFS_FILE2(FfsFileHeaderPtr) \
+    (((((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Attributes) & FFS_ATTRIB_LARGE_FILE) == FFS_ATTRIB_LARGE_FILE)
+
+#define FFS_FILE_SIZE(FfsFileHeaderPtr) \
+    ((UINT32) (*((UINT32 *) ((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Size) & 0x00ffffff))
+
+#define FFS_FILE2_SIZE(FfsFileHeaderPtr) \
+    (((EFI_FFS_FILE_HEADER2 *) (UINTN) FfsFileHeaderPtr)->ExtendedSize)
+
+typedef UINT8 EFI_SECTION_TYPE;
+
+///
+/// Pseudo type. It is used as a wild card when retrieving sections.
+///  The section type EFI_SECTION_ALL matches all section types.
+///
+#define EFI_SECTION_ALL                   0x00
+
+///
+/// Encapsulation section Type values.
+///
+#define EFI_SECTION_COMPRESSION           0x01
+
+#define EFI_SECTION_GUID_DEFINED          0x02
+
+#define EFI_SECTION_DISPOSABLE            0x03
+
+///
+/// Leaf section Type values.
+///
+#define EFI_SECTION_PE32                  0x10
+#define EFI_SECTION_PIC                   0x11
+#define EFI_SECTION_TE                    0x12
+#define EFI_SECTION_DXE_DEPEX             0x13
+#define EFI_SECTION_VERSION               0x14
+#define EFI_SECTION_USER_INTERFACE        0x15
+#define EFI_SECTION_COMPATIBILITY16       0x16
+#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17
+#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18
+#define EFI_SECTION_RAW                   0x19
+#define EFI_SECTION_PEI_DEPEX             0x1B
+#define EFI_SECTION_SMM_DEPEX             0x1C
+
+///
+/// Common section header.
+///
+typedef struct {
+  ///
+  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
+  /// including the EFI_COMMON_SECTION_HEADER.
+  ///
+  UINT8             Size[3];
+  EFI_SECTION_TYPE  Type;
+  ///
+  /// Declares the section type.
+  ///
+} EFI_COMMON_SECTION_HEADER;
+
+typedef struct {
+  ///
+  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
+  /// including the EFI_COMMON_SECTION_HEADER.
+  ///
+  UINT8             Size[3];
+
+  EFI_SECTION_TYPE  Type;
+
+  ///
+  /// If Size is 0xFFFFFF, then ExtendedSize contains the size of the section. If
+  /// Size is not equal to 0xFFFFFF, then this field does not exist.
+  ///
+  UINT32            ExtendedSize;
+} EFI_COMMON_SECTION_HEADER2;
+
+///
+/// Leaf section type that contains an
+/// IA-32 16-bit executable image.
+///
+typedef EFI_COMMON_SECTION_HEADER  EFI_COMPATIBILITY16_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_COMPATIBILITY16_SECTION2;
+
+///
+/// CompressionType of EFI_COMPRESSION_SECTION.
+///
+#define EFI_NOT_COMPRESSED        0x00
+#define EFI_STANDARD_COMPRESSION  0x01
+///
+/// An encapsulation section type in which the
+/// section data is compressed.
+///
+typedef struct {
+  ///
+  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
+  ///
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  ///
+  /// The UINT32 that indicates the size of the section data after decompression.
+  ///
+  UINT32                      UncompressedLength;
+  ///
+  /// Indicates which compression algorithm is used.
+  ///
+  UINT8                       CompressionType;
+} EFI_COMPRESSION_SECTION;
+
+typedef struct {
+  ///
+  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
+  ///
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// UINT32 that indicates the size of the section data after decompression.
+  ///
+  UINT32                        UncompressedLength;
+  ///
+  /// Indicates which compression algorithm is used.
+  ///
+  UINT8                         CompressionType;
+} EFI_COMPRESSION_SECTION2;
+
+///
+/// An encapsulation section type in which the section data is disposable.
+/// A disposable section is an encapsulation section in which the section data may be disposed of during
+/// the process of creating or updating a firmware image without significant impact on the usefulness of
+/// the file. The Type field in the section header is set to EFI_SECTION_DISPOSABLE. This
+/// allows optional or descriptive data to be included with the firmware file which can be removed in
+/// order to conserve space. The contents of this section are implementation specific, but might contain
+/// debug data or detailed integration instructions.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_DISPOSABLE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_DISPOSABLE_SECTION2;
+
+///
+/// The leaf section which could be used to determine the dispatch order of DXEs.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_DXE_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_DXE_DEPEX_SECTION2;
+
+///
+/// The leaf section which contains a PI FV.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_FIRMWARE_VOLUME_IMAGE_SECTION2;
+
+///
+/// The leaf section which contains a single GUID.
+///
+typedef struct {
+  ///
+  /// Common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
+  ///
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  ///
+  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
+  ///
+  EFI_GUID                    SubTypeGuid;
+} EFI_FREEFORM_SUBTYPE_GUID_SECTION;
+
+typedef struct {
+  ///
+  /// The common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
+  ///
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
+  ///
+  EFI_GUID                      SubTypeGuid;
+} EFI_FREEFORM_SUBTYPE_GUID_SECTION2;
+
+///
+/// Attributes of EFI_GUID_DEFINED_SECTION.
+///
+#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED  0x01
+#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID    0x02
+///
+/// The leaf section which is encapsulation defined by specific GUID.
+///
+typedef struct {
+  ///
+  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
+  ///
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  ///
+  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
+  ///
+  EFI_GUID                    SectionDefinitionGuid;
+  ///
+  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
+  ///
+  UINT16                      DataOffset;
+  ///
+  /// The bit field that declares some specific characteristics of the section contents.
+  ///
+  UINT16                      Attributes;
+} EFI_GUID_DEFINED_SECTION;
+
+typedef struct {
+  ///
+  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
+  ///
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
+  ///
+  EFI_GUID                      SectionDefinitionGuid;
+  ///
+  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
+  ///
+  UINT16                        DataOffset;
+  ///
+  /// The bit field that declares some specific characteristics of the section contents.
+  ///
+  UINT16                        Attributes;
+} EFI_GUID_DEFINED_SECTION2;
+
+///
+/// The leaf section which contains PE32+ image.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_PE32_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_PE32_SECTION2;
+
+///
+/// The leaf section used to determine the dispatch order of PEIMs.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_PEI_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_PEI_DEPEX_SECTION2;
+
+///
+/// A leaf section type that contains a position-independent-code (PIC) image.
+/// A PIC image section is a leaf section that contains a position-independent-code (PIC) image.
+/// In addition to normal PE32+ images that contain relocation information, PEIM executables may be
+/// PIC and are referred to as PIC images. A PIC image is the same as a PE32+ image except that all
+/// relocation information has been stripped from the image and the image can be moved and will
+/// execute correctly without performing any relocation or other fix-ups. EFI_PIC_SECTION2 must
+/// be used if the section is 16MB or larger.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_PIC_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_PIC_SECTION2;
+
+///
+/// The leaf section which constains the position-independent-code image.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_TE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_TE_SECTION2;
+
+///
+/// The leaf section which contains an array of zero or more bytes.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_RAW_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_RAW_SECTION2;
+
+///
+/// The SMM dependency expression section is a leaf section that contains a dependency expression that
+/// is used to determine the dispatch order for SMM drivers. Before the SMRAM invocation of the
+/// SMM driver's entry point, this dependency expression must evaluate to TRUE. See the Platform
+/// Initialization Specification, Volume 2, for details regarding the format of the dependency expression.
+/// The dependency expression may refer to protocols installed in either the UEFI or the SMM protocol
+/// database. EFI_SMM_DEPEX_SECTION2 must be used if the section is 16MB or larger.
+///
+typedef EFI_COMMON_SECTION_HEADER EFI_SMM_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_SMM_DEPEX_SECTION2;
+
+///
+/// The leaf section which contains a unicode string that
+/// is human readable file name.
+///
+typedef struct {
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+
+  ///
+  /// Array of unicode string.
+  ///
+  CHAR16                      FileNameString[1];
+} EFI_USER_INTERFACE_SECTION;
+
+typedef struct {
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  CHAR16                        FileNameString[1];
+} EFI_USER_INTERFACE_SECTION2;
+
+///
+/// The leaf section which contains a numeric build number and
+/// an optional unicode string that represents the file revision.
+///
+typedef struct {
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  UINT16                      BuildNumber;
+
+  ///
+  /// Array of unicode string.
+  ///
+  CHAR16                      VersionString[1];
+} EFI_VERSION_SECTION;
+
+typedef struct {
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// A UINT16 that represents a particular build. Subsequent builds have monotonically
+  /// increasing build numbers relative to earlier builds.
+  ///
+  UINT16                        BuildNumber;
+  CHAR16                        VersionString[1];
+} EFI_VERSION_SECTION2;
+
+#define IS_SECTION2(SectionHeaderPtr) \
+    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff) == 0x00ffffff)
+
+#define SECTION_SIZE(SectionHeaderPtr) \
+    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff))
+
+#define SECTION2_SIZE(SectionHeaderPtr) \
+    (((EFI_COMMON_SECTION_HEADER2 *) (UINTN) SectionHeaderPtr)->ExtendedSize)
+
+#pragma pack()
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspfv.h b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspfv.h
new file mode 100644
index 0000000..75d17fa
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspfv.h
@@ -0,0 +1,247 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef __PI_FIRMWAREVOLUME_H__
+#define __PI_FIRMWAREVOLUME_H__
+
+///
+/// EFI_FV_FILE_ATTRIBUTES
+///
+typedef UINT32  EFI_FV_FILE_ATTRIBUTES;
+
+//
+// Value of EFI_FV_FILE_ATTRIBUTES.
+//
+#define EFI_FV_FILE_ATTRIB_ALIGNMENT      0x0000001F
+#define EFI_FV_FILE_ATTRIB_FIXED          0x00000100
+#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED  0x00000200
+
+///
+/// type of EFI FVB attribute
+///
+typedef UINT32  EFI_FVB_ATTRIBUTES_2;
+
+//
+// Attributes bit definitions
+//
+#define EFI_FVB2_READ_DISABLED_CAP  0x00000001
+#define EFI_FVB2_READ_ENABLED_CAP   0x00000002
+#define EFI_FVB2_READ_STATUS        0x00000004
+#define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008
+#define EFI_FVB2_WRITE_ENABLED_CAP  0x00000010
+#define EFI_FVB2_WRITE_STATUS       0x00000020
+#define EFI_FVB2_LOCK_CAP           0x00000040
+#define EFI_FVB2_LOCK_STATUS        0x00000080
+#define EFI_FVB2_STICKY_WRITE       0x00000200
+#define EFI_FVB2_MEMORY_MAPPED      0x00000400
+#define EFI_FVB2_ERASE_POLARITY     0x00000800
+#define EFI_FVB2_READ_LOCK_CAP      0x00001000
+#define EFI_FVB2_READ_LOCK_STATUS   0x00002000
+#define EFI_FVB2_WRITE_LOCK_CAP     0x00004000
+#define EFI_FVB2_WRITE_LOCK_STATUS  0x00008000
+#define EFI_FVB2_ALIGNMENT          0x001F0000
+#define EFI_FVB2_ALIGNMENT_1        0x00000000
+#define EFI_FVB2_ALIGNMENT_2        0x00010000
+#define EFI_FVB2_ALIGNMENT_4        0x00020000
+#define EFI_FVB2_ALIGNMENT_8        0x00030000
+#define EFI_FVB2_ALIGNMENT_16       0x00040000
+#define EFI_FVB2_ALIGNMENT_32       0x00050000
+#define EFI_FVB2_ALIGNMENT_64       0x00060000
+#define EFI_FVB2_ALIGNMENT_128      0x00070000
+#define EFI_FVB2_ALIGNMENT_256      0x00080000
+#define EFI_FVB2_ALIGNMENT_512      0x00090000
+#define EFI_FVB2_ALIGNMENT_1K       0x000A0000
+#define EFI_FVB2_ALIGNMENT_2K       0x000B0000
+#define EFI_FVB2_ALIGNMENT_4K       0x000C0000
+#define EFI_FVB2_ALIGNMENT_8K       0x000D0000
+#define EFI_FVB2_ALIGNMENT_16K      0x000E0000
+#define EFI_FVB2_ALIGNMENT_32K      0x000F0000
+#define EFI_FVB2_ALIGNMENT_64K      0x00100000
+#define EFI_FVB2_ALIGNMENT_128K     0x00110000
+#define EFI_FVB2_ALIGNMENT_256K     0x00120000
+#define EFI_FVB2_ALIGNMENT_512K     0x00130000
+#define EFI_FVB2_ALIGNMENT_1M       0x00140000
+#define EFI_FVB2_ALIGNMENT_2M       0x00150000
+#define EFI_FVB2_ALIGNMENT_4M       0x00160000
+#define EFI_FVB2_ALIGNMENT_8M       0x00170000
+#define EFI_FVB2_ALIGNMENT_16M      0x00180000
+#define EFI_FVB2_ALIGNMENT_32M      0x00190000
+#define EFI_FVB2_ALIGNMENT_64M      0x001A0000
+#define EFI_FVB2_ALIGNMENT_128M     0x001B0000
+#define EFI_FVB2_ALIGNMENT_256M     0x001C0000
+#define EFI_FVB2_ALIGNMENT_512M     0x001D0000
+#define EFI_FVB2_ALIGNMENT_1G       0x001E0000
+#define EFI_FVB2_ALIGNMENT_2G       0x001F0000
+
+
+typedef struct {
+  ///
+  /// The number of sequential blocks which are of the same size.
+  ///
+  UINT32 NumBlocks;
+  ///
+  /// The size of the blocks.
+  ///
+  UINT32 Length;
+} EFI_FV_BLOCK_MAP_ENTRY;
+
+///
+/// Describes the features and layout of the firmware volume.
+///
+typedef struct {
+  ///
+  /// The first 16 bytes are reserved to allow for the reset vector of
+  /// processors whose reset vector is at address 0.
+  ///
+  UINT8                     ZeroVector[16];
+  ///
+  /// Declares the file system with which the firmware volume is formatted.
+  ///
+  EFI_GUID                  FileSystemGuid;
+  ///
+  /// Length in bytes of the complete firmware volume, including the header.
+  ///
+  UINT64                    FvLength;
+  ///
+  /// Set to EFI_FVH_SIGNATURE
+  ///
+  UINT32                    Signature;
+  ///
+  /// Declares capabilities and power-on defaults for the firmware volume.
+  ///
+  EFI_FVB_ATTRIBUTES_2      Attributes;
+  ///
+  /// Length in bytes of the complete firmware volume header.
+  ///
+  UINT16                    HeaderLength;
+  ///
+  /// A 16-bit checksum of the firmware volume header. A valid header sums to zero.
+  ///
+  UINT16                    Checksum;
+  ///
+  /// Offset, relative to the start of the header, of the extended header
+  /// (EFI_FIRMWARE_VOLUME_EXT_HEADER) or zero if there is no extended header.
+  ///
+  UINT16                    ExtHeaderOffset;
+  ///
+  /// This field must always be set to zero.
+  ///
+  UINT8                     Reserved[1];
+  ///
+  /// Set to 2. Future versions of this specification may define new header fields and will
+  /// increment the Revision field accordingly.
+  ///
+  UINT8                     Revision;
+  ///
+  /// An array of run-length encoded FvBlockMapEntry structures. The array is
+  /// terminated with an entry of {0,0}.
+  ///
+  EFI_FV_BLOCK_MAP_ENTRY    BlockMap[1];
+} EFI_FIRMWARE_VOLUME_HEADER;
+
+#define EFI_FVH_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', 'H')
+
+///
+/// Firmware Volume Header Revision definition
+///
+#define EFI_FVH_REVISION  0x02
+
+///
+/// Extension header pointed by ExtHeaderOffset of volume header.
+///
+typedef struct {
+  ///
+  /// Firmware volume name.
+  ///
+  EFI_GUID  FvName;
+  ///
+  /// Size of the rest of the extension header, including this structure.
+  ///
+  UINT32    ExtHeaderSize;
+} EFI_FIRMWARE_VOLUME_EXT_HEADER;
+
+///
+/// Entry struture for describing FV extension header
+///
+typedef struct {
+  ///
+  /// Size of this header extension.
+  ///
+  UINT16    ExtEntrySize;
+  ///
+  /// Type of the header.
+  ///
+  UINT16    ExtEntryType;
+} EFI_FIRMWARE_VOLUME_EXT_ENTRY;
+
+#define EFI_FV_EXT_TYPE_OEM_TYPE  0x01
+///
+/// This extension header provides a mapping between a GUID and an OEM file type.
+///
+typedef struct {
+  ///
+  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
+  ///
+  EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
+  ///
+  /// A bit mask, one bit for each file type between 0xC0 (bit 0) and 0xDF (bit 31). If a bit
+  /// is '1', then the GUID entry exists in Types. If a bit is '0' then no GUID entry exists in Types.
+  ///
+  UINT32    TypeMask;
+  ///
+  /// An array of GUIDs, each GUID representing an OEM file type.
+  ///
+  /// EFI_GUID  Types[1];
+  ///
+} EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;
+
+#define EFI_FV_EXT_TYPE_GUID_TYPE 0x0002
+
+///
+/// This extension header EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE provides a vendor specific
+/// GUID FormatType type which includes a length and a successive series of data bytes.
+///
+typedef struct {
+  ///
+  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
+  ///
+  EFI_FIRMWARE_VOLUME_EXT_ENTRY     Hdr;
+  ///
+  /// Vendor-specific GUID.
+  ///
+  EFI_GUID                          FormatType;
+  ///
+  /// An arry of bytes of length Length.
+  ///
+  /// UINT8                             Data[1];
+  ///
+} EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE;
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fsphob.h b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fsphob.h
new file mode 100644
index 0000000..5840907
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fsphob.h
@@ -0,0 +1,507 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef __PI_HOB_H__
+#define __PI_HOB_H__
+
+//
+// HobType of EFI_HOB_GENERIC_HEADER.
+//
+#define EFI_HOB_TYPE_MEMORY_ALLOCATION    0x0002
+#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR  0x0003
+#define EFI_HOB_TYPE_GUID_EXTENSION       0x0004
+#define EFI_HOB_TYPE_UNUSED               0xFFFE
+#define EFI_HOB_TYPE_END_OF_HOB_LIST      0xFFFF
+
+///
+/// Describes the format and size of the data inside the HOB.
+/// All HOBs must contain this generic HOB header.
+///
+typedef struct {
+  ///
+  /// Identifies the HOB data structure type.
+  ///
+  UINT16    HobType;
+  ///
+  /// The length in bytes of the HOB.
+  ///
+  UINT16    HobLength;
+  ///
+  /// This field must always be set to zero.
+  ///
+  UINT32    Reserved;
+} EFI_HOB_GENERIC_HEADER;
+
+///
+/// Enumeration of memory types introduced in UEFI.
+///
+typedef enum {
+  ///
+  /// Not used.
+  ///
+  EfiReservedMemoryType,
+  ///
+  /// The code portions of a loaded application.
+  /// (Note that UEFI OS loaders are UEFI applications.)
+  ///
+  EfiLoaderCode,
+  ///
+  /// The data portions of a loaded application and the default data allocation
+  /// type used by an application to allocate pool memory.
+  ///
+  EfiLoaderData,
+  ///
+  /// The code portions of a loaded Boot Services Driver.
+  ///
+  EfiBootServicesCode,
+  ///
+  /// The data portions of a loaded Boot Serves Driver, and the default data
+  /// allocation type used by a Boot Services Driver to allocate pool memory.
+  ///
+  EfiBootServicesData,
+  ///
+  /// The code portions of a loaded Runtime Services Driver.
+  ///
+  EfiRuntimeServicesCode,
+  ///
+  /// The data portions of a loaded Runtime Services Driver and the default
+  /// data allocation type used by a Runtime Services Driver to allocate pool memory.
+  ///
+  EfiRuntimeServicesData,
+  ///
+  /// Free (unallocated) memory.
+  ///
+  EfiConventionalMemory,
+  ///
+  /// Memory in which errors have been detected.
+  ///
+  EfiUnusableMemory,
+  ///
+  /// Memory that holds the ACPI tables.
+  ///
+  EfiACPIReclaimMemory,
+  ///
+  /// Address space reserved for use by the firmware.
+  ///
+  EfiACPIMemoryNVS,
+  ///
+  /// Used by system firmware to request that a memory-mapped IO region
+  /// be mapped by the OS to a virtual address so it can be accessed by EFI runtime services.
+  ///
+  EfiMemoryMappedIO,
+  ///
+  /// System memory-mapped IO region that is used to translate memory
+  /// cycles to IO cycles by the processor.
+  ///
+  EfiMemoryMappedIOPortSpace,
+  ///
+  /// Address space reserved by the firmware for code that is part of the processor.
+  ///
+  EfiPalCode,
+  EfiMaxMemoryType
+} EFI_MEMORY_TYPE;
+
+///
+/// EFI_HOB_MEMORY_ALLOCATION_HEADER describes the
+/// various attributes of the logical memory allocation. The type field will be used for
+/// subsequent inclusion in the UEFI memory map.
+///
+typedef struct {
+  ///
+  /// A GUID that defines the memory allocation region's type and purpose, as well as
+  /// other fields within the memory allocation HOB. This GUID is used to define the
+  /// additional data within the HOB that may be present for the memory allocation HOB.
+  /// Type EFI_GUID is defined in InstallProtocolInterface() in the UEFI 2.0
+  /// specification.
+  ///
+  EFI_GUID              Name;
+
+  ///
+  /// The base address of memory allocated by this HOB. Type
+  /// EFI_PHYSICAL_ADDRESS is defined in AllocatePages() in the UEFI 2.0
+  /// specification.
+  ///
+  EFI_PHYSICAL_ADDRESS  MemoryBaseAddress;
+
+  ///
+  /// The length in bytes of memory allocated by this HOB.
+  ///
+  UINT64                MemoryLength;
+
+  ///
+  /// Defines the type of memory allocated by this HOB. The memory type definition
+  /// follows the EFI_MEMORY_TYPE definition. Type EFI_MEMORY_TYPE is defined
+  /// in AllocatePages() in the UEFI 2.0 specification.
+  ///
+  EFI_MEMORY_TYPE       MemoryType;
+
+  ///
+  /// Padding for Itanium processor family
+  ///
+  UINT8                 Reserved[4];
+} EFI_HOB_MEMORY_ALLOCATION_HEADER;
+
+///
+/// Describes all memory ranges used during the HOB producer
+/// phase that exist outside the HOB list. This HOB type
+/// describes how memory is used, not the physical attributes of memory.
+///
+typedef struct {
+  ///
+  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
+  ///
+  EFI_HOB_GENERIC_HEADER            Header;
+  ///
+  /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
+  /// various attributes of the logical memory allocation.
+  ///
+  EFI_HOB_MEMORY_ALLOCATION_HEADER  AllocDescriptor;
+  //
+  // Additional data pertaining to the "Name" Guid memory
+  // may go here.
+  //
+} EFI_HOB_MEMORY_ALLOCATION;
+
+///
+/// The resource type.
+///
+typedef UINT32 EFI_RESOURCE_TYPE;
+
+//
+// Value of ResourceType in EFI_HOB_RESOURCE_DESCRIPTOR.
+//
+#define EFI_RESOURCE_SYSTEM_MEMORY          0x00000000
+#define EFI_RESOURCE_MEMORY_MAPPED_IO       0x00000001
+#define EFI_RESOURCE_IO                     0x00000002
+#define EFI_RESOURCE_FIRMWARE_DEVICE        0x00000003
+#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT  0x00000004
+#define EFI_RESOURCE_MEMORY_RESERVED        0x00000005
+#define EFI_RESOURCE_IO_RESERVED            0x00000006
+#define EFI_RESOURCE_MAX_MEMORY_TYPE        0x00000007
+
+///
+/// A type of recount attribute type.
+///
+typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE;
+
+//
+// These types can be ORed together as needed.
+//
+// The first three enumerations describe settings
+//
+#define EFI_RESOURCE_ATTRIBUTE_PRESENT              0x00000001
+#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED          0x00000002
+#define EFI_RESOURCE_ATTRIBUTE_TESTED               0x00000004
+//
+// The rest of the settings describe capabilities
+//
+#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC           0x00000008
+#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC         0x00000010
+#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1           0x00000020
+#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2           0x00000040
+#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED           0x00000080
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED          0x00000100
+#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED      0x00000200
+#define EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE              0x00000400
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE        0x00000800
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE  0x00001000
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE     0x00002000
+#define EFI_RESOURCE_ATTRIBUTE_16_BIT_IO                0x00004000
+#define EFI_RESOURCE_ATTRIBUTE_32_BIT_IO                0x00008000
+#define EFI_RESOURCE_ATTRIBUTE_64_BIT_IO                0x00010000
+#define EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED        0x00020000
+
+///
+/// Describes the resource properties of all fixed,
+/// nonrelocatable resource ranges found on the processor
+/// host bus during the HOB producer phase.
+///
+typedef struct {
+  ///
+  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_RESOURCE_DESCRIPTOR.
+  ///
+  EFI_HOB_GENERIC_HEADER      Header;
+  ///
+  /// A GUID representing the owner of the resource. This GUID is used by HOB
+  /// consumer phase components to correlate device ownership of a resource.
+  ///
+  EFI_GUID                    Owner;
+  ///
+  /// The resource type enumeration as defined by EFI_RESOURCE_TYPE.
+  ///
+  EFI_RESOURCE_TYPE           ResourceType;
+  ///
+  /// Resource attributes as defined by EFI_RESOURCE_ATTRIBUTE_TYPE.
+  ///
+  EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;
+  ///
+  /// The physical start address of the resource region.
+  ///
+  EFI_PHYSICAL_ADDRESS        PhysicalStart;
+  ///
+  /// The number of bytes of the resource region.
+  ///
+  UINT64                      ResourceLength;
+} EFI_HOB_RESOURCE_DESCRIPTOR;
+
+///
+/// Allows writers of executable content in the HOB producer phase to
+/// maintain and manage HOBs with specific GUID.
+///
+typedef struct {
+  ///
+  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_GUID_EXTENSION.
+  ///
+  EFI_HOB_GENERIC_HEADER      Header;
+  ///
+  /// A GUID that defines the contents of this HOB.
+  ///
+  EFI_GUID                    Name;
+  //
+  // Guid specific data goes here
+  //
+} EFI_HOB_GUID_TYPE;
+
+///
+/// Union of all the possible HOB Types.
+///
+typedef union {
+  EFI_HOB_GENERIC_HEADER              *Header;
+  EFI_HOB_MEMORY_ALLOCATION           *MemoryAllocation;
+  EFI_HOB_RESOURCE_DESCRIPTOR         *ResourceDescriptor;
+  EFI_HOB_GUID_TYPE                   *Guid;
+  UINT8                               *Raw;
+} EFI_PEI_HOB_POINTERS;
+
+
+/**
+  Returns the type of a HOB.
+
+  This macro returns the HobType field from the HOB header for the
+  HOB specified by HobStart.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @return HobType.
+
+**/
+#define GET_HOB_TYPE(HobStart) \
+  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobType)
+
+/**
+  Returns the length, in bytes, of a HOB.
+
+  This macro returns the HobLength field from the HOB header for the
+  HOB specified by HobStart.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @return HobLength.
+
+**/
+#define GET_HOB_LENGTH(HobStart) \
+  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobLength)
+
+/**
+  Returns a pointer to the next HOB in the HOB list.
+
+  This macro returns a pointer to HOB that follows the
+  HOB specified by HobStart in the HOB List.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @return A pointer to the next HOB in the HOB list.
+
+**/
+#define GET_NEXT_HOB(HobStart) \
+  (VOID *)(*(UINT8 **)&(HobStart) + GET_HOB_LENGTH (HobStart))
+
+/**
+  Determines if a HOB is the last HOB in the HOB list.
+
+  This macro determine if the HOB specified by HobStart is the
+  last HOB in the HOB list.  If HobStart is last HOB in the HOB list,
+  then TRUE is returned.  Otherwise, FALSE is returned.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @retval TRUE       The HOB specified by HobStart is the last HOB in the HOB list.
+  @retval FALSE      The HOB specified by HobStart is not the last HOB in the HOB list.
+
+**/
+#define END_OF_HOB_LIST(HobStart)  (GET_HOB_TYPE (HobStart) == (UINT16)EFI_HOB_TYPE_END_OF_HOB_LIST)
+
+/**
+  Returns a pointer to data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  This macro returns a pointer to the data buffer in a HOB specified by HobStart.
+  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  @param   GuidHob   A pointer to a HOB.
+
+  @return  A pointer to the data buffer in a HOB.
+
+**/
+#define GET_GUID_HOB_DATA(HobStart) \
+  (VOID *)(*(UINT8 **)&(HobStart) + sizeof (EFI_HOB_GUID_TYPE))
+
+/**
+  Returns the size of the data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  This macro returns the size, in bytes, of the data buffer in a HOB specified by HobStart.
+  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  @param   GuidHob   A pointer to a HOB.
+
+  @return  The size of the data buffer.
+**/
+#define GET_GUID_HOB_DATA_SIZE(HobStart) \
+  (UINT16)(GET_HOB_LENGTH (HobStart) - sizeof (EFI_HOB_GUID_TYPE))
+
+/**
+  Returns the pointer to the HOB list.
+
+  This function returns the pointer to first HOB in the list.
+
+  If the pointer to the HOB list is NULL, then ASSERT().
+
+  @return The pointer to the HOB list.
+
+**/
+VOID *
+EFIAPI
+GetHobList (
+  VOID
+  );
+
+/**
+  Returns the next instance of a HOB type from the starting HOB.
+
+  This function searches the first instance of a HOB type from the starting HOB pointer.
+  If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
+  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
+  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
+  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
+
+  If HobStart is NULL, then ASSERT().
+
+  @param  Type          The HOB type to return.
+  @param  HobStart      The starting HOB pointer to search from.
+
+  @return The next instance of a HOB type from the starting HOB.
+
+**/
+VOID *
+EFIAPI
+GetNextHob (
+  UINT16                 Type,
+  CONST VOID             *HobStart
+  );
+
+/**
+  Returns the first instance of a HOB type among the whole HOB list.
+
+  This function searches the first instance of a HOB type among the whole HOB list.
+  If there does not exist such HOB type in the HOB list, it will return NULL.
+
+  If the pointer to the HOB list is NULL, then ASSERT().
+
+  @param  Type          The HOB type to return.
+
+  @return The next instance of a HOB type from the starting HOB.
+
+**/
+VOID *
+EFIAPI
+GetFirstHob (
+  UINT16                 Type
+  );
+
+/**
+  Returns the next instance of the matched GUID HOB from the starting HOB.
+
+  This function searches the first instance of a HOB from the starting HOB pointer.
+  Such HOB should satisfy two conditions:
+  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
+  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
+  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
+  to extract the data section and its size info respectively.
+  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
+  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
+  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
+
+  If Guid is NULL, then ASSERT().
+  If HobStart is NULL, then ASSERT().
+
+  @param  Guid          The GUID to match with in the HOB list.
+  @param  HobStart      A pointer to a Guid.
+
+  @return The next instance of the matched GUID HOB from the starting HOB.
+
+**/
+VOID *
+EFIAPI
+GetNextGuidHob (
+  CONST EFI_GUID         *Guid,
+  CONST VOID             *HobStart
+  );
+
+/**
+  Returns the first instance of the matched GUID HOB among the whole HOB list.
+
+  This function searches the first instance of a HOB among the whole HOB list.
+  Such HOB should satisfy two conditions:
+  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
+  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
+  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
+  to extract the data section and its size info respectively.
+
+  If the pointer to the HOB list is NULL, then ASSERT().
+  If Guid is NULL, then ASSERT().
+
+  @param  Guid          The GUID to match with in the HOB list.
+
+  @return The first instance of the matched GUID HOB among the whole HOB list.
+
+**/
+VOID *
+EFIAPI
+GetFirstGuidHob (
+  CONST EFI_GUID         *Guid
+  );
+
+BOOLEAN
+EFIAPI
+CompareGuid (
+  CONST EFI_GUID  *Guid1,
+  CONST EFI_GUID  *Guid2
+  );
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspinfoheader.h b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspinfoheader.h
new file mode 100644
index 0000000..0f7b3a9
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspinfoheader.h
@@ -0,0 +1,62 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef _FSP_INFO_HEADER_H_
+#define _FSP_INFO_HEADER_H_
+
+#pragma pack(1)
+
+typedef struct  {
+
+  UINT32  Signature;       // Off 0x94
+  UINT32  HeaderLength;
+  UINT8   Reserved1[3];
+  UINT8   HeaderRevision;
+  UINT32  ImageRevision;
+
+  CHAR8   ImageId[8];      // Off 0xA4
+  UINT32  ImageSize;
+  UINT32  ImageBase;
+
+  UINT32  ImageAttribute;  // Off 0xB4
+  UINT32  CfgRegionOffset;
+  UINT32  CfgRegionSize;
+  UINT32  ApiEntryNum;
+
+  UINT32  NemInitEntry;    // Off 0xC4
+  UINT32  FspInitEntry;
+  UINT32  NotifyPhaseEntry;
+  UINT32  Reserved2;
+
+} FSP_INFO_HEADER;
+
+#pragma pack()
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspplatform.h b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspplatform.h
new file mode 100644
index 0000000..e78ac47
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fspplatform.h
@@ -0,0 +1,52 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef _FSP_PLATFORM_H_
+#define _FSP_PLATFORM_H_
+
+#include "fsptypes.h"
+#include "fspapi.h"
+#include "mem_config.h"
+
+#pragma pack(1)
+
+typedef struct {
+    MEM_CONFIG  *MemoryConfig;
+} FSP_INIT_RT_PLATFORM_BUFFER;
+
+
+typedef struct {
+    FSP_INIT_RT_COMMON_BUFFER  Common;
+    FSP_INIT_RT_PLATFORM_BUFFER  Platform;
+} FSP_INIT_RT_BUFFER;
+
+#pragma pack()
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fsptypes.h b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fsptypes.h
new file mode 100644
index 0000000..a3a54c0
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/fsptypes.h
@@ -0,0 +1,116 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+/** \file  fsptypes.h
+ *
+ *
+ */
+
+#ifndef __FSP_TYPES_H__
+#define __FSP_TYPES_H__
+
+///
+/// 8-byte unsigned value.
+///
+typedef unsigned long long  UINT64;
+///
+/// 8-byte signed value.
+///
+typedef long long           INT64;
+///
+/// 4-byte unsigned value.
+///
+typedef unsigned int        UINT32;
+///
+/// 4-byte signed value.
+///
+typedef int                 INT32;
+///
+/// 2-byte unsigned value.
+///
+typedef unsigned short      UINT16;
+///
+/// 2-byte Character.  Unless otherwise specified all strings are stored in the
+/// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
+///
+typedef unsigned short      CHAR16;
+///
+/// 2-byte signed value.
+///
+typedef short               INT16;
+///
+/// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
+/// values are undefined.
+///
+typedef unsigned char       BOOLEAN;
+///
+/// 1-byte unsigned value.
+///
+typedef unsigned char       UINT8;
+///
+/// 1-byte Character
+///
+typedef char                CHAR8;
+///
+/// 1-byte signed value
+///
+typedef char                INT8;
+
+typedef void                VOID;
+
+typedef UINT64              EFI_PHYSICAL_ADDRESS;
+
+typedef struct {
+  UINT32  Data1;
+  UINT16  Data2;
+  UINT16  Data3;
+  UINT8   Data4[8];
+} EFI_GUID;
+
+#define CONST     const
+#define STATIC    static
+
+#define TRUE  ((BOOLEAN)(1==1))
+#define FALSE ((BOOLEAN)(0==1))
+
+#define FSPAPI __attribute__((cdecl))
+#define EFIAPI __attribute__((cdecl))
+
+#define ASSERT(Expression)      \
+  do {                          \
+    if (!(Expression)) {        \
+      for (;;);                 \
+    }                           \
+  } while (FALSE)
+
+typedef UINT32 FSP_STATUS;
+typedef UINT32 EFI_STATUS;
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/mem_config.h b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/mem_config.h
new file mode 100644
index 0000000..26deb90
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/mem_config.h
@@ -0,0 +1,131 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+//
+// mem_config.h
+//
+
+#ifndef _MEM_CONFIG_H_
+#define _MEM_CONFIG_H_
+
+typedef enum {
+  fi1067_IVB=0,
+  fi1333_IVB,
+  fi1400_IVB,
+  fi1600_IVB,
+  fi1800_IVB,
+  fi1867_IVB,
+  fi2000_IVB,
+  fi2133_IVB,
+  fi2200_IVB,
+  fi2400_IVB,
+  fi2600_IVB,
+  fi2667_IVB,
+  fi2800_IVB,
+  fiUnsupport_IVB,
+}TFrequencyIndex_IVB;
+
+#define NUM_IVB_MEM_CLK_FREQUENCIES 13
+
+// DDR3 memory SPD data
+//
+// NOTE: This only includes the SPD bytes that are relevant to the MRC
+typedef struct {                             // BYTE
+    uint8_t  SPDGeneral;                     // 0   Number of Serial PD Bytes Written / SPD Device Size / CRC Coverage 1, 2
+    uint8_t  SPDRevision;                    // 1   SPD Revision
+    uint8_t  DRAMDeviceType;                 // 2   DRAM Device Type
+    uint8_t  ModuleType;                     // 3   Module Type
+    uint8_t  SDRAMDensityAndBanks;           // 4   SDRAM Density and Banks
+    uint8_t  SDRAMAddressing;                // 5   SDRAM Addressing
+    uint8_t  VDD;                            // 6   Module Nominal Voltage
+    uint8_t  ModuleOrganization;             // 7   Module Organization
+    uint8_t  ModuleMemoryBusWidth;           // 8   Module Memory Bus Width
+    uint8_t  FineTimebase;                   // 9   Fine Timebase (FTB) Dividend / Divisor
+    uint8_t  TimebaseDividend;               // 10  Medium Timebase (MTB) Dividend
+    uint8_t  TimebaseDivisor;                // 11  Medium Timebase (MTB) Divisor
+    uint8_t  SDRAMMinimumCycleTime;          // 12  SDRAM Minimum Cycle Time (tCKmin)
+    uint8_t  Reserved0;                      // 13  Reserved0
+    uint8_t  CASLatenciesLSB;                // 14  CAS Latencies Supported, Least Significant Byte
+    uint8_t  CASLatenciesMSB;                // 15  CAS Latencies Supported, Most Significant Byte
+    uint8_t  MinimumCASLatencyTime;          // 16  Minimum CAS Latency Time (tAAmin)
+    uint8_t  MinimumWriteRecoveryTime;       // 17  Minimum Write Recovery Time (tWRmin)
+    uint8_t  MinimumRASToCASDelayTime;       // 18  Minimum RAS# to CAS# Delay Time (tRCDmin)
+    uint8_t  MinimumRowToRowDelayTime;       // 19  Minimum Row Active to Row Active Delay Time (tRRDmin)
+    uint8_t  MinimumRowPrechargeDelayTime;   // 20  Minimum Row Precharge Delay Time (tRPmin)
+    uint8_t  UpperNibblesFortRASAndtRC;      // 21  Upper Nibbles for tRAS and tRC
+    uint8_t  tRASmin;                        // 22  Minimum Active to Precharge Delay Time (tRASmin), Least Significant Byte
+    uint8_t  tRCmin;                         // 23  Minimum Active to Active/Refresh Delay Time (tRCmin), Least Significant Byte
+    uint8_t  tRFCminLeastSignificantByte;    // 24  Minimum Refresh Recovery Delay Time (tRFCmin), Least Significant Byte
+    uint8_t  tRFCminMostSignificantByte;     // 25  Minimum Refresh Recovery Delay Time (tRFCmin), Most Significant Byte
+    uint8_t  tWTRmin;                        // 26  Minimum Internal Write to Read Command Delay Time (tWTRmin)
+    uint8_t  tRTPmin;                        // 27  Minimum Internal Read to Precharge Command Delay Time (tRTPmin)
+    uint8_t  UpperNibbleFortFAW;             // 28  Upper Nibble for tFAW
+    uint8_t  tFAWmin;                        // 29  Minimum Four Activate Window Delay Time (tFAWmin)
+    uint8_t  SDRAMOptionalFeatures;          // 30  SDRAM Optional Features
+    uint8_t  SDRAMThermalAndRefreshOptions;  // 31  SDRAMThermalAndRefreshOptions
+    uint8_t  ModuleThermalSensor;            // 32  ModuleThermalSensor
+    uint8_t  SDRAMDeviceType;                // 33  SDRAM Device Type
+    int8_t   tCKminFine;                     // 34  Fine Offset for SDRAM Minimum Cycle Time (tCKmin)
+    int8_t   tAAminFine;                     // 35  Fine Offset for Minimum CAS Latency Time (tAAmin)
+    int8_t   tRCDminFine;                    // 36  Fine Offset for Minimum RAS# to CAS# Delay Time (tRCDmin)
+    int8_t   tRPminFine;                     // 37  Fine Offset for Minimum Row Precharge Delay Time (tRPmin)
+    int8_t   tRCminFine;                     // 38  Fine Offset for Minimum Active to Active/Refresh Delay Time (tRCmin)
+    uint8_t  ReferenceRawCardUsed;           // 62  Reference Raw Card Used
+    uint8_t  AddressMappingEdgeConnector;    // 63  Address Mapping from Edge Connector to DRAM
+    uint8_t  ThermalHeatSpreaderSolution;    // 64  ThermalHeatSpreaderSolution
+    uint8_t  ModuleManufacturerIdCodeLsb;    // 117 Module Manufacturer ID Code, Least Significant Byte
+    uint8_t  ModuleManufacturerIdCodeMsb;    // 118 Module Manufacturer ID Code, Most Significant Byte
+    uint8_t  ModuleManufacturingLocation;    // 119 Module Manufacturing Location
+    uint8_t  ModuleManufacturingDateYear;    // 120 Module Manufacturing Date Year
+    uint8_t  ModuleManufacturingDateWW;      // 121 Module Manufacturing Date creation work week
+    uint8_t  ModuleSerialNumberA;            // 122 Module Serial Number A
+    uint8_t  ModuleSerialNumberB;            // 123 Module Serial Number B
+    uint8_t  ModuleSerialNumberC;            // 124 Module Serial Number C
+    uint8_t  ModuleSerialNumberD;            // 125 Module Serial Number D
+    uint8_t  CRCA;                           // 126 CRC A
+    uint8_t  CRCB;                           // 127 CRC B
+} DDR3_SPD;
+
+// Configuration for each memory channel/bank
+typedef struct {
+    uint32_t  Exists;
+    DDR3_SPD  SpdData;
+    uint8_t   InitClkPiValue[NUM_IVB_MEM_CLK_FREQUENCIES];
+} MEM_BANK_CONFIG;
+
+// Memory configuration
+typedef struct {
+    MEM_BANK_CONFIG  ChannelABank0;
+    MEM_BANK_CONFIG  ChannelABank1;
+    MEM_BANK_CONFIG  ChannelBBank0;
+    MEM_BANK_CONFIG  ChannelBBank1;
+} MEM_CONFIG;
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/peifsp.h b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/peifsp.h
new file mode 100644
index 0000000..dc3e60f
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/include/peifsp.h
@@ -0,0 +1,42 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+/** \file  peifsp.h
+ *
+ *
+ */
+#include <stdint.h>
+#include "fsptypes.h"
+#include "fspfv.h"
+#include "fspffs.h"
+#include "fsphob.h"
+#include "fspapi.h"
+#include "fspplatform.h"
+#include "fspinfoheader.h"
diff --git a/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/srx/fsphob.c b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/srx/fsphob.c
new file mode 100644
index 0000000..4214b3a
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/ivybridge_i89xx/srx/fsphob.c
@@ -0,0 +1,207 @@
+/**
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+/***********************************************************************
+ *
+ * fsphob.c
+ *
+ * HOB infrastructure code.
+ *
+ **********************************************************************/
+#include <string.h>
+
+#include "fsptypes.h"
+#include "fsphob.h"
+
+//
+// Pointer to the HOB should be initialized with the output of FSP INIT PARAMS
+//
+extern volatile void *FspHobListPtr;
+
+//
+// Function prototype
+//
+UINT64
+EFIAPI
+ReadUnaligned64 (
+  CONST UINT64              *Buffer
+  );
+
+/**
+  Reads a 64-bit value from memory that may be unaligned.
+
+  This function returns the 64-bit value pointed to by Buffer. The function
+  guarantees that the read operation does not produce an alignment fault.
+
+  If the Buffer is NULL, then ASSERT().
+
+  @param  Buffer  Pointer to a 64-bit value that may be unaligned.
+
+  @return The 64-bit value read from Buffer.
+
+**/
+UINT64
+EFIAPI
+ReadUnaligned64 (
+  CONST UINT64              *Buffer
+  )
+{
+  ASSERT (Buffer != NULL);
+
+  return *Buffer;
+}
+
+/**
+  Compares two GUIDs.
+
+  This function compares Guid1 to Guid2.  If the GUIDs are identical then TRUE is returned.
+  If there are any bit differences in the two GUIDs, then FALSE is returned.
+
+  If Guid1 is NULL, then ASSERT().
+  If Guid2 is NULL, then ASSERT().
+
+  @param  Guid1       A pointer to a 128 bit GUID.
+  @param  Guid2       A pointer to a 128 bit GUID.
+
+  @retval TRUE        Guid1 and Guid2 are identical.
+  @retval FALSE       Guid1 and Guid2 are not identical.
+
+**/
+BOOLEAN
+EFIAPI
+CompareGuid (
+  CONST EFI_GUID  *Guid1,
+  CONST EFI_GUID  *Guid2
+  )
+{
+  UINT64  LowPartOfGuid1;
+  UINT64  LowPartOfGuid2;
+  UINT64  HighPartOfGuid1;
+  UINT64  HighPartOfGuid2;
+
+  LowPartOfGuid1  = ReadUnaligned64 ((CONST UINT64*) Guid1);
+  LowPartOfGuid2  = ReadUnaligned64 ((CONST UINT64*) Guid2);
+  HighPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1 + 1);
+  HighPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2 + 1);
+
+  return (BOOLEAN) (LowPartOfGuid1 == LowPartOfGuid2 && HighPartOfGuid1 == HighPartOfGuid2);
+}
+
+/**
+  Returns the pointer to the HOB list.
+**/
+VOID *
+EFIAPI
+GetHobList (
+  VOID
+  )
+{
+  ASSERT (FspHobListPtr != NULL);
+  return ((VOID *)FspHobListPtr);
+}
+
+/**
+  Returns the next instance of a HOB type from the starting HOB.
+**/
+VOID *
+EFIAPI
+GetNextHob (
+  UINT16                 Type,
+  CONST VOID             *HobStart
+  )
+{
+  EFI_PEI_HOB_POINTERS  Hob;
+
+  ASSERT (HobStart != NULL);
+
+  Hob.Raw = (UINT8 *) HobStart;
+  //
+  // Parse the HOB list until end of list or matching type is found.
+  //
+  while (!END_OF_HOB_LIST (Hob)) {
+    if (Hob.Header->HobType == Type) {
+      return Hob.Raw;
+    }
+    Hob.Raw = GET_NEXT_HOB (Hob);
+  }
+  return NULL;
+}
+
+/**
+  Returns the first instance of a HOB type among the whole HOB list.
+**/
+VOID *
+EFIAPI
+GetFirstHob (
+  UINT16                 Type
+  )
+{
+  VOID      *HobList;
+
+  HobList = GetHobList ();
+  return GetNextHob (Type, HobList);
+}
+
+/**
+  Returns the next instance of the matched GUID HOB from the starting HOB.
+**/
+VOID *
+EFIAPI
+GetNextGuidHob (
+  CONST EFI_GUID         *Guid,
+  CONST VOID             *HobStart
+  )
+{
+  EFI_PEI_HOB_POINTERS  GuidHob;
+
+  GuidHob.Raw = (UINT8 *) HobStart;
+  while ((GuidHob.Raw = GetNextHob (EFI_HOB_TYPE_GUID_EXTENSION, GuidHob.Raw)) != NULL) {
+    if (CompareGuid (Guid, &GuidHob.Guid->Name)) {
+      break;
+    }
+    GuidHob.Raw = GET_NEXT_HOB (GuidHob);
+  }
+  return GuidHob.Raw;
+}
+
+/**
+  Returns the first instance of the matched GUID HOB among the whole HOB list.
+**/
+VOID *
+EFIAPI
+GetFirstGuidHob (
+  CONST EFI_GUID         *Guid
+  )
+{
+  VOID      *HobList;
+
+  HobList = GetHobList ();
+  return GetNextGuidHob (Guid, HobList);
+}
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/include/fspapi.h b/src/vendorcode/intel/fsp1_0/rangeley/include/fspapi.h
new file mode 100644
index 0000000..5009246
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/rangeley/include/fspapi.h
@@ -0,0 +1,67 @@
+/**
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef _FSP_API_H_
+#define _FSP_API_H_
+
+#include <fsptypes.h>
+
+#pragma pack(1)
+
+typedef VOID (* CONTINUATION_PROC)(EFI_STATUS Status, VOID *HobListPtr);
+
+typedef struct {
+  VOID               *NvsBufferPtr;
+  VOID               *RtBufferPtr;
+  CONTINUATION_PROC   ContinuationFunc;
+} FSP_INIT_PARAMS;
+
+typedef struct {
+  UINT32            *StackTop;
+  UINT32             BootMode;  /* Refer to boot mode defined in MdePkg\Include\Pi\PiBootMode.h */
+  VOID              *UpdDataRgnPtr;
+  UINT32             Reserved[7];
+} FSP_INIT_RT_COMMON_BUFFER;
+
+typedef enum {
+  EnumInitPhaseAfterPciEnumeration = 0x20,
+  EnumInitPhaseReadyToBoot = 0x40
+} FSP_INIT_PHASE;
+
+typedef struct {
+  FSP_INIT_PHASE     Phase;
+} NOTIFY_PHASE_PARAMS;
+
+#pragma pack()
+
+typedef FSP_STATUS (FSPAPI *FSP_FSP_INIT)    (FSP_INIT_PARAMS     *FspInitParamPtr);
+typedef FSP_STATUS (FSPAPI *FSP_NOTFY_PHASE) (NOTIFY_PHASE_PARAMS *NotifyPhaseParamPtr);
+
+#endif /* _FSP_API_H_ */
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/include/fspbootmode.h b/src/vendorcode/intel/fsp1_0/rangeley/include/fspbootmode.h
new file mode 100644
index 0000000..16cddf0
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/rangeley/include/fspbootmode.h
@@ -0,0 +1,54 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef __PI_BOOT_MODE_H__
+#define __PI_BOOT_MODE_H__
+
+///
+/// EFI boot mode
+///
+typedef UINT32  EFI_BOOT_MODE;
+
+//
+// 0x21 - 0xf..f are reserved.
+//
+#define BOOT_WITH_FULL_CONFIGURATION                  0x00
+#define BOOT_WITH_MINIMAL_CONFIGURATION               0x01
+#define BOOT_ASSUMING_NO_CONFIGURATION_CHANGES        0x02
+#define BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS 0x03
+#define BOOT_WITH_DEFAULT_SETTINGS                    0x04
+#define BOOT_ON_S4_RESUME                             0x05
+#define BOOT_ON_S5_RESUME                             0x06
+#define BOOT_ON_S2_RESUME                             0x10
+#define BOOT_ON_S3_RESUME                             0x11
+#define BOOT_ON_FLASH_UPDATE                          0x12
+#define BOOT_IN_RECOVERY_MODE                         0x20
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/include/fspffs.h b/src/vendorcode/intel/fsp1_0/rangeley/include/fspffs.h
new file mode 100644
index 0000000..9e8244d
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/rangeley/include/fspffs.h
@@ -0,0 +1,507 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef __PI_FIRMWARE_FILE_H__
+#define __PI_FIRMWARE_FILE_H__
+
+#include <fsptypes.h>
+
+#pragma pack(1)
+///
+/// Used to verify the integrity of the file.
+///
+typedef union {
+  struct {
+    ///
+    /// The IntegrityCheck.Checksum.Header field is an 8-bit checksum of the file
+    /// header. The State and IntegrityCheck.Checksum.File fields are assumed
+    /// to be zero and the checksum is calculated such that the entire header sums to zero.
+    ///
+    UINT8   Header;
+    ///
+    /// If the FFS_ATTRIB_CHECKSUM (see definition below) bit of the Attributes
+    /// field is set to one, the IntegrityCheck.Checksum.File field is an 8-bit
+    /// checksum of the file data.
+    /// If the FFS_ATTRIB_CHECKSUM bit of the Attributes field is cleared to zero,
+    /// the IntegrityCheck.Checksum.File field must be initialized with a value of
+    /// 0xAA. The IntegrityCheck.Checksum.File field is valid any time the
+    /// EFI_FILE_DATA_VALID bit is set in the State field.
+    ///
+    UINT8   File;
+  } Checksum;
+  ///
+  /// This is the full 16 bits of the IntegrityCheck field.
+  ///
+  UINT16    Checksum16;
+} EFI_FFS_INTEGRITY_CHECK;
+
+///
+/// FFS_FIXED_CHECKSUM is the checksum value used when the
+/// FFS_ATTRIB_CHECKSUM attribute bit is clear.
+///
+#define FFS_FIXED_CHECKSUM  0xAA
+
+typedef UINT8 EFI_FV_FILETYPE;
+typedef UINT8 EFI_FFS_FILE_ATTRIBUTES;
+typedef UINT8 EFI_FFS_FILE_STATE;
+
+///
+/// File Types Definitions
+///
+#define EFI_FV_FILETYPE_ALL                   0x00
+#define EFI_FV_FILETYPE_RAW                   0x01
+#define EFI_FV_FILETYPE_FREEFORM              0x02
+#define EFI_FV_FILETYPE_SECURITY_CORE         0x03
+#define EFI_FV_FILETYPE_PEI_CORE              0x04
+#define EFI_FV_FILETYPE_DXE_CORE              0x05
+#define EFI_FV_FILETYPE_PEIM                  0x06
+#define EFI_FV_FILETYPE_DRIVER                0x07
+#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER  0x08
+#define EFI_FV_FILETYPE_APPLICATION           0x09
+#define EFI_FV_FILETYPE_SMM                   0x0A
+#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B
+#define EFI_FV_FILETYPE_COMBINED_SMM_DXE      0x0C
+#define EFI_FV_FILETYPE_SMM_CORE              0x0D
+#define EFI_FV_FILETYPE_OEM_MIN               0xc0
+#define EFI_FV_FILETYPE_OEM_MAX               0xdf
+#define EFI_FV_FILETYPE_DEBUG_MIN             0xe0
+#define EFI_FV_FILETYPE_DEBUG_MAX             0xef
+#define EFI_FV_FILETYPE_FFS_MIN               0xf0
+#define EFI_FV_FILETYPE_FFS_MAX               0xff
+#define EFI_FV_FILETYPE_FFS_PAD               0xf0
+///
+/// FFS File Attributes.
+///
+#define FFS_ATTRIB_LARGE_FILE         0x01
+#define FFS_ATTRIB_FIXED              0x04
+#define FFS_ATTRIB_DATA_ALIGNMENT     0x38
+#define FFS_ATTRIB_CHECKSUM           0x40
+
+///
+/// FFS File State Bits.
+///
+#define EFI_FILE_HEADER_CONSTRUCTION  0x01
+#define EFI_FILE_HEADER_VALID         0x02
+#define EFI_FILE_DATA_VALID           0x04
+#define EFI_FILE_MARKED_FOR_UPDATE    0x08
+#define EFI_FILE_DELETED              0x10
+#define EFI_FILE_HEADER_INVALID       0x20
+
+
+///
+/// Each file begins with the header that describe the
+/// contents and state of the files.
+///
+typedef struct {
+  ///
+  /// This GUID is the file name. It is used to uniquely identify the file.
+  ///
+  EFI_GUID                Name;
+  ///
+  /// Used to verify the integrity of the file.
+  ///
+  EFI_FFS_INTEGRITY_CHECK IntegrityCheck;
+  ///
+  /// Identifies the type of file.
+  ///
+  EFI_FV_FILETYPE         Type;
+  ///
+  /// Declares various file attribute bits.
+  ///
+  EFI_FFS_FILE_ATTRIBUTES Attributes;
+  ///
+  /// The length of the file in bytes, including the FFS header.
+  ///
+  UINT8                   Size[3];
+  ///
+  /// Used to track the state of the file throughout the life of the file from creation to deletion.
+  ///
+  EFI_FFS_FILE_STATE      State;
+} EFI_FFS_FILE_HEADER;
+
+typedef struct {
+  ///
+  /// This GUID is the file name. It is used to uniquely identify the file. There may be only
+  /// one instance of a file with the file name GUID of Name in any given firmware
+  /// volume, except if the file type is EFI_FV_FILETYPE_FFS_PAD.
+  ///
+  EFI_GUID                  Name;
+
+  ///
+  /// Used to verify the integrity of the file.
+  ///
+  EFI_FFS_INTEGRITY_CHECK   IntegrityCheck;
+
+  ///
+  /// Identifies the type of file.
+  ///
+  EFI_FV_FILETYPE           Type;
+
+  ///
+  /// Declares various file attribute bits.
+  ///
+  EFI_FFS_FILE_ATTRIBUTES   Attributes;
+
+  ///
+  /// The length of the file in bytes, including the FFS header.
+  /// The length of the file data is either (Size - sizeof(EFI_FFS_FILE_HEADER)). This calculation means a
+  /// zero-length file has a Size of 24 bytes, which is sizeof(EFI_FFS_FILE_HEADER).
+  /// Size is not required to be a multiple of 8 bytes. Given a file F, the next file header is
+  /// located at the next 8-byte aligned firmware volume offset following the last byte of the file F.
+  ///
+  UINT8                     Size[3];
+
+  ///
+  /// Used to track the state of the file throughout the life of the file from creation to deletion.
+  ///
+  EFI_FFS_FILE_STATE        State;
+
+  ///
+  /// If FFS_ATTRIB_LARGE_FILE is set in Attributes, then ExtendedSize exists and Size must be set to zero.
+  /// If FFS_ATTRIB_LARGE_FILE is not set then EFI_FFS_FILE_HEADER is used.
+  ///
+  UINT32                    ExtendedSize;
+} EFI_FFS_FILE_HEADER2;
+
+#define IS_FFS_FILE2(FfsFileHeaderPtr) \
+    (((((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Attributes) & FFS_ATTRIB_LARGE_FILE) == FFS_ATTRIB_LARGE_FILE)
+
+#define FFS_FILE_SIZE(FfsFileHeaderPtr) \
+    ((UINT32) (*((UINT32 *) ((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Size) & 0x00ffffff))
+
+#define FFS_FILE2_SIZE(FfsFileHeaderPtr) \
+    (((EFI_FFS_FILE_HEADER2 *) (UINTN) FfsFileHeaderPtr)->ExtendedSize)
+
+typedef UINT8 EFI_SECTION_TYPE;
+
+///
+/// Pseudo type. It is used as a wild card when retrieving sections.
+///  The section type EFI_SECTION_ALL matches all section types.
+///
+#define EFI_SECTION_ALL                   0x00
+
+///
+/// Encapsulation section Type values.
+///
+#define EFI_SECTION_COMPRESSION           0x01
+
+#define EFI_SECTION_GUID_DEFINED          0x02
+
+#define EFI_SECTION_DISPOSABLE            0x03
+
+///
+/// Leaf section Type values.
+///
+#define EFI_SECTION_PE32                  0x10
+#define EFI_SECTION_PIC                   0x11
+#define EFI_SECTION_TE                    0x12
+#define EFI_SECTION_DXE_DEPEX             0x13
+#define EFI_SECTION_VERSION               0x14
+#define EFI_SECTION_USER_INTERFACE        0x15
+#define EFI_SECTION_COMPATIBILITY16       0x16
+#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17
+#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18
+#define EFI_SECTION_RAW                   0x19
+#define EFI_SECTION_PEI_DEPEX             0x1B
+#define EFI_SECTION_SMM_DEPEX             0x1C
+
+///
+/// Common section header.
+///
+typedef struct {
+  ///
+  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
+  /// including the EFI_COMMON_SECTION_HEADER.
+  ///
+  UINT8             Size[3];
+  EFI_SECTION_TYPE  Type;
+  ///
+  /// Declares the section type.
+  ///
+} EFI_COMMON_SECTION_HEADER;
+
+typedef struct {
+  ///
+  /// A 24-bit unsigned integer that contains the total size of the section in bytes,
+  /// including the EFI_COMMON_SECTION_HEADER.
+  ///
+  UINT8             Size[3];
+
+  EFI_SECTION_TYPE  Type;
+
+  ///
+  /// If Size is 0xFFFFFF, then ExtendedSize contains the size of the section. If
+  /// Size is not equal to 0xFFFFFF, then this field does not exist.
+  ///
+  UINT32            ExtendedSize;
+} EFI_COMMON_SECTION_HEADER2;
+
+///
+/// Leaf section type that contains an
+/// IA-32 16-bit executable image.
+///
+typedef EFI_COMMON_SECTION_HEADER  EFI_COMPATIBILITY16_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_COMPATIBILITY16_SECTION2;
+
+///
+/// CompressionType of EFI_COMPRESSION_SECTION.
+///
+#define EFI_NOT_COMPRESSED        0x00
+#define EFI_STANDARD_COMPRESSION  0x01
+///
+/// An encapsulation section type in which the
+/// section data is compressed.
+///
+typedef struct {
+  ///
+  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
+  ///
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  ///
+  /// The UINT32 that indicates the size of the section data after decompression.
+  ///
+  UINT32                      UncompressedLength;
+  ///
+  /// Indicates which compression algorithm is used.
+  ///
+  UINT8                       CompressionType;
+} EFI_COMPRESSION_SECTION;
+
+typedef struct {
+  ///
+  /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION.
+  ///
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// UINT32 that indicates the size of the section data after decompression.
+  ///
+  UINT32                        UncompressedLength;
+  ///
+  /// Indicates which compression algorithm is used.
+  ///
+  UINT8                         CompressionType;
+} EFI_COMPRESSION_SECTION2;
+
+///
+/// An encapsulation section type in which the section data is disposable.
+/// A disposable section is an encapsulation section in which the section data may be disposed of during
+/// the process of creating or updating a firmware image without significant impact on the usefulness of
+/// the file. The Type field in the section header is set to EFI_SECTION_DISPOSABLE. This
+/// allows optional or descriptive data to be included with the firmware file which can be removed in
+/// order to conserve space. The contents of this section are implementation specific, but might contain
+/// debug data or detailed integration instructions.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_DISPOSABLE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_DISPOSABLE_SECTION2;
+
+///
+/// The leaf section which could be used to determine the dispatch order of DXEs.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_DXE_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_DXE_DEPEX_SECTION2;
+
+///
+/// The leaf section which contains a PI FV.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_FIRMWARE_VOLUME_IMAGE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_FIRMWARE_VOLUME_IMAGE_SECTION2;
+
+///
+/// The leaf section which contains a single GUID.
+///
+typedef struct {
+  ///
+  /// Common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
+  ///
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  ///
+  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
+  ///
+  EFI_GUID                    SubTypeGuid;
+} EFI_FREEFORM_SUBTYPE_GUID_SECTION;
+
+typedef struct {
+  ///
+  /// The common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID.
+  ///
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// This GUID is defined by the creator of the file. It is a vendor-defined file type.
+  ///
+  EFI_GUID                      SubTypeGuid;
+} EFI_FREEFORM_SUBTYPE_GUID_SECTION2;
+
+///
+/// Attributes of EFI_GUID_DEFINED_SECTION.
+///
+#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED  0x01
+#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID    0x02
+///
+/// The leaf section which is encapsulation defined by specific GUID.
+///
+typedef struct {
+  ///
+  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
+  ///
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  ///
+  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
+  ///
+  EFI_GUID                    SectionDefinitionGuid;
+  ///
+  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
+  ///
+  UINT16                      DataOffset;
+  ///
+  /// The bit field that declares some specific characteristics of the section contents.
+  ///
+  UINT16                      Attributes;
+} EFI_GUID_DEFINED_SECTION;
+
+typedef struct {
+  ///
+  /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED.
+  ///
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// The GUID that defines the format of the data that follows. It is a vendor-defined section type.
+  ///
+  EFI_GUID                      SectionDefinitionGuid;
+  ///
+  /// Contains the offset in bytes from the beginning of the common header to the first byte of the data.
+  ///
+  UINT16                        DataOffset;
+  ///
+  /// The bit field that declares some specific characteristics of the section contents.
+  ///
+  UINT16                        Attributes;
+} EFI_GUID_DEFINED_SECTION2;
+
+///
+/// The leaf section which contains PE32+ image.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_PE32_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_PE32_SECTION2;
+
+///
+/// The leaf section used to determine the dispatch order of PEIMs.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_PEI_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_PEI_DEPEX_SECTION2;
+
+///
+/// A leaf section type that contains a position-independent-code (PIC) image.
+/// A PIC image section is a leaf section that contains a position-independent-code (PIC) image.
+/// In addition to normal PE32+ images that contain relocation information, PEIM executables may be
+/// PIC and are referred to as PIC images. A PIC image is the same as a PE32+ image except that all
+/// relocation information has been stripped from the image and the image can be moved and will
+/// execute correctly without performing any relocation or other fix-ups. EFI_PIC_SECTION2 must
+/// be used if the section is 16MB or larger.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_PIC_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_PIC_SECTION2;
+
+///
+/// The leaf section which constains the position-independent-code image.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_TE_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_TE_SECTION2;
+
+///
+/// The leaf section which contains an array of zero or more bytes.
+///
+typedef EFI_COMMON_SECTION_HEADER   EFI_RAW_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2  EFI_RAW_SECTION2;
+
+///
+/// The SMM dependency expression section is a leaf section that contains a dependency expression that
+/// is used to determine the dispatch order for SMM drivers. Before the SMRAM invocation of the
+/// SMM driver's entry point, this dependency expression must evaluate to TRUE. See the Platform
+/// Initialization Specification, Volume 2, for details regarding the format of the dependency expression.
+/// The dependency expression may refer to protocols installed in either the UEFI or the SMM protocol
+/// database. EFI_SMM_DEPEX_SECTION2 must be used if the section is 16MB or larger.
+///
+typedef EFI_COMMON_SECTION_HEADER EFI_SMM_DEPEX_SECTION;
+typedef EFI_COMMON_SECTION_HEADER2 EFI_SMM_DEPEX_SECTION2;
+
+///
+/// The leaf section which contains a unicode string that
+/// is human readable file name.
+///
+typedef struct {
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+
+  ///
+  /// Array of unicode string.
+  ///
+  CHAR16                      FileNameString[1];
+} EFI_USER_INTERFACE_SECTION;
+
+typedef struct {
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  CHAR16                        FileNameString[1];
+} EFI_USER_INTERFACE_SECTION2;
+
+///
+/// The leaf section which contains a numeric build number and
+/// an optional unicode string that represents the file revision.
+///
+typedef struct {
+  EFI_COMMON_SECTION_HEADER   CommonHeader;
+  UINT16                      BuildNumber;
+
+  ///
+  /// Array of unicode string.
+  ///
+  CHAR16                      VersionString[1];
+} EFI_VERSION_SECTION;
+
+typedef struct {
+  EFI_COMMON_SECTION_HEADER2    CommonHeader;
+  ///
+  /// A UINT16 that represents a particular build. Subsequent builds have monotonically
+  /// increasing build numbers relative to earlier builds.
+  ///
+  UINT16                        BuildNumber;
+  CHAR16                        VersionString[1];
+} EFI_VERSION_SECTION2;
+
+#define IS_SECTION2(SectionHeaderPtr) \
+    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff) == 0x00ffffff)
+
+#define SECTION_SIZE(SectionHeaderPtr) \
+    ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff))
+
+#define SECTION2_SIZE(SectionHeaderPtr) \
+    (((EFI_COMMON_SECTION_HEADER2 *) (UINTN) SectionHeaderPtr)->ExtendedSize)
+
+#pragma pack()
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/include/fspfv.h b/src/vendorcode/intel/fsp1_0/rangeley/include/fspfv.h
new file mode 100644
index 0000000..9688cf4
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/rangeley/include/fspfv.h
@@ -0,0 +1,249 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef __PI_FIRMWAREVOLUME_H__
+#define __PI_FIRMWAREVOLUME_H__
+
+#include <fsptypes.h>
+
+///
+/// EFI_FV_FILE_ATTRIBUTES
+///
+typedef UINT32  EFI_FV_FILE_ATTRIBUTES;
+
+//
+// Value of EFI_FV_FILE_ATTRIBUTES.
+//
+#define EFI_FV_FILE_ATTRIB_ALIGNMENT      0x0000001F
+#define EFI_FV_FILE_ATTRIB_FIXED          0x00000100
+#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED  0x00000200
+
+///
+/// type of EFI FVB attribute
+///
+typedef UINT32  EFI_FVB_ATTRIBUTES_2;
+
+//
+// Attributes bit definitions
+//
+#define EFI_FVB2_READ_DISABLED_CAP  0x00000001
+#define EFI_FVB2_READ_ENABLED_CAP   0x00000002
+#define EFI_FVB2_READ_STATUS        0x00000004
+#define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008
+#define EFI_FVB2_WRITE_ENABLED_CAP  0x00000010
+#define EFI_FVB2_WRITE_STATUS       0x00000020
+#define EFI_FVB2_LOCK_CAP           0x00000040
+#define EFI_FVB2_LOCK_STATUS        0x00000080
+#define EFI_FVB2_STICKY_WRITE       0x00000200
+#define EFI_FVB2_MEMORY_MAPPED      0x00000400
+#define EFI_FVB2_ERASE_POLARITY     0x00000800
+#define EFI_FVB2_READ_LOCK_CAP      0x00001000
+#define EFI_FVB2_READ_LOCK_STATUS   0x00002000
+#define EFI_FVB2_WRITE_LOCK_CAP     0x00004000
+#define EFI_FVB2_WRITE_LOCK_STATUS  0x00008000
+#define EFI_FVB2_ALIGNMENT          0x001F0000
+#define EFI_FVB2_ALIGNMENT_1        0x00000000
+#define EFI_FVB2_ALIGNMENT_2        0x00010000
+#define EFI_FVB2_ALIGNMENT_4        0x00020000
+#define EFI_FVB2_ALIGNMENT_8        0x00030000
+#define EFI_FVB2_ALIGNMENT_16       0x00040000
+#define EFI_FVB2_ALIGNMENT_32       0x00050000
+#define EFI_FVB2_ALIGNMENT_64       0x00060000
+#define EFI_FVB2_ALIGNMENT_128      0x00070000
+#define EFI_FVB2_ALIGNMENT_256      0x00080000
+#define EFI_FVB2_ALIGNMENT_512      0x00090000
+#define EFI_FVB2_ALIGNMENT_1K       0x000A0000
+#define EFI_FVB2_ALIGNMENT_2K       0x000B0000
+#define EFI_FVB2_ALIGNMENT_4K       0x000C0000
+#define EFI_FVB2_ALIGNMENT_8K       0x000D0000
+#define EFI_FVB2_ALIGNMENT_16K      0x000E0000
+#define EFI_FVB2_ALIGNMENT_32K      0x000F0000
+#define EFI_FVB2_ALIGNMENT_64K      0x00100000
+#define EFI_FVB2_ALIGNMENT_128K     0x00110000
+#define EFI_FVB2_ALIGNMENT_256K     0x00120000
+#define EFI_FVB2_ALIGNMENT_512K     0x00130000
+#define EFI_FVB2_ALIGNMENT_1M       0x00140000
+#define EFI_FVB2_ALIGNMENT_2M       0x00150000
+#define EFI_FVB2_ALIGNMENT_4M       0x00160000
+#define EFI_FVB2_ALIGNMENT_8M       0x00170000
+#define EFI_FVB2_ALIGNMENT_16M      0x00180000
+#define EFI_FVB2_ALIGNMENT_32M      0x00190000
+#define EFI_FVB2_ALIGNMENT_64M      0x001A0000
+#define EFI_FVB2_ALIGNMENT_128M     0x001B0000
+#define EFI_FVB2_ALIGNMENT_256M     0x001C0000
+#define EFI_FVB2_ALIGNMENT_512M     0x001D0000
+#define EFI_FVB2_ALIGNMENT_1G       0x001E0000
+#define EFI_FVB2_ALIGNMENT_2G       0x001F0000
+
+
+typedef struct {
+  ///
+  /// The number of sequential blocks which are of the same size.
+  ///
+  UINT32 NumBlocks;
+  ///
+  /// The size of the blocks.
+  ///
+  UINT32 Length;
+} EFI_FV_BLOCK_MAP_ENTRY;
+
+///
+/// Describes the features and layout of the firmware volume.
+///
+typedef struct {
+  ///
+  /// The first 16 bytes are reserved to allow for the reset vector of
+  /// processors whose reset vector is at address 0.
+  ///
+  UINT8                     ZeroVector[16];
+  ///
+  /// Declares the file system with which the firmware volume is formatted.
+  ///
+  EFI_GUID                  FileSystemGuid;
+  ///
+  /// Length in bytes of the complete firmware volume, including the header.
+  ///
+  UINT64                    FvLength;
+  ///
+  /// Set to EFI_FVH_SIGNATURE
+  ///
+  UINT32                    Signature;
+  ///
+  /// Declares capabilities and power-on defaults for the firmware volume.
+  ///
+  EFI_FVB_ATTRIBUTES_2      Attributes;
+  ///
+  /// Length in bytes of the complete firmware volume header.
+  ///
+  UINT16                    HeaderLength;
+  ///
+  /// A 16-bit checksum of the firmware volume header. A valid header sums to zero.
+  ///
+  UINT16                    Checksum;
+  ///
+  /// Offset, relative to the start of the header, of the extended header
+  /// (EFI_FIRMWARE_VOLUME_EXT_HEADER) or zero if there is no extended header.
+  ///
+  UINT16                    ExtHeaderOffset;
+  ///
+  /// This field must always be set to zero.
+  ///
+  UINT8                     Reserved[1];
+  ///
+  /// Set to 2. Future versions of this specification may define new header fields and will
+  /// increment the Revision field accordingly.
+  ///
+  UINT8                     Revision;
+  ///
+  /// An array of run-length encoded FvBlockMapEntry structures. The array is
+  /// terminated with an entry of {0,0}.
+  ///
+  EFI_FV_BLOCK_MAP_ENTRY    BlockMap[1];
+} EFI_FIRMWARE_VOLUME_HEADER;
+
+#define EFI_FVH_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', 'H')
+
+///
+/// Firmware Volume Header Revision definition
+///
+#define EFI_FVH_REVISION  0x02
+
+///
+/// Extension header pointed by ExtHeaderOffset of volume header.
+///
+typedef struct {
+  ///
+  /// Firmware volume name.
+  ///
+  EFI_GUID  FvName;
+  ///
+  /// Size of the rest of the extension header, including this structure.
+  ///
+  UINT32    ExtHeaderSize;
+} EFI_FIRMWARE_VOLUME_EXT_HEADER;
+
+///
+/// Entry struture for describing FV extension header
+///
+typedef struct {
+  ///
+  /// Size of this header extension.
+  ///
+  UINT16    ExtEntrySize;
+  ///
+  /// Type of the header.
+  ///
+  UINT16    ExtEntryType;
+} EFI_FIRMWARE_VOLUME_EXT_ENTRY;
+
+#define EFI_FV_EXT_TYPE_OEM_TYPE  0x01
+///
+/// This extension header provides a mapping between a GUID and an OEM file type.
+///
+typedef struct {
+  ///
+  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
+  ///
+  EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
+  ///
+  /// A bit mask, one bit for each file type between 0xC0 (bit 0) and 0xDF (bit 31). If a bit
+  /// is '1', then the GUID entry exists in Types. If a bit is '0' then no GUID entry exists in Types.
+  ///
+  UINT32    TypeMask;
+  ///
+  /// An array of GUIDs, each GUID representing an OEM file type.
+  ///
+  /// EFI_GUID  Types[1];
+  ///
+} EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE;
+
+#define EFI_FV_EXT_TYPE_GUID_TYPE 0x0002
+
+///
+/// This extension header EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE provides a vendor specific
+/// GUID FormatType type which includes a length and a successive series of data bytes.
+///
+typedef struct {
+  ///
+  /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE.
+  ///
+  EFI_FIRMWARE_VOLUME_EXT_ENTRY     Hdr;
+  ///
+  /// Vendor-specific GUID.
+  ///
+  EFI_GUID                          FormatType;
+  ///
+  /// An arry of bytes of length Length.
+  ///
+  /// UINT8                             Data[1];
+  ///
+} EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE;
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/include/fsphob.h b/src/vendorcode/intel/fsp1_0/rangeley/include/fsphob.h
new file mode 100644
index 0000000..0f743b5
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/rangeley/include/fsphob.h
@@ -0,0 +1,544 @@
+/** @file
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef __PI_HOB_H__
+#define __PI_HOB_H__
+
+#include <fsptypes.h>
+
+//
+// HobType of EFI_HOB_GENERIC_HEADER.
+//
+#define EFI_HOB_TYPE_MEMORY_ALLOCATION    0x0002
+#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR  0x0003
+#define EFI_HOB_TYPE_GUID_EXTENSION       0x0004
+#define EFI_HOB_TYPE_UNUSED               0xFFFE
+#define EFI_HOB_TYPE_END_OF_HOB_LIST      0xFFFF
+
+///
+/// Describes the format and size of the data inside the HOB.
+/// All HOBs must contain this generic HOB header.
+///
+typedef struct {
+  ///
+  /// Identifies the HOB data structure type.
+  ///
+  UINT16    HobType;
+  ///
+  /// The length in bytes of the HOB.
+  ///
+  UINT16    HobLength;
+  ///
+  /// This field must always be set to zero.
+  ///
+  UINT32    Reserved;
+} EFI_HOB_GENERIC_HEADER;
+
+///
+/// Enumeration of memory types introduced in UEFI.
+///
+typedef enum {
+  ///
+  /// Not used.
+  ///
+  EfiReservedMemoryType,
+  ///
+  /// The code portions of a loaded application.
+  /// (Note that UEFI OS loaders are UEFI applications.)
+  ///
+  EfiLoaderCode,
+  ///
+  /// The data portions of a loaded application and the default data allocation
+  /// type used by an application to allocate pool memory.
+  ///
+  EfiLoaderData,
+  ///
+  /// The code portions of a loaded Boot Services Driver.
+  ///
+  EfiBootServicesCode,
+  ///
+  /// The data portions of a loaded Boot Serves Driver, and the default data
+  /// allocation type used by a Boot Services Driver to allocate pool memory.
+  ///
+  EfiBootServicesData,
+  ///
+  /// The code portions of a loaded Runtime Services Driver.
+  ///
+  EfiRuntimeServicesCode,
+  ///
+  /// The data portions of a loaded Runtime Services Driver and the default
+  /// data allocation type used by a Runtime Services Driver to allocate pool memory.
+  ///
+  EfiRuntimeServicesData,
+  ///
+  /// Free (unallocated) memory.
+  ///
+  EfiConventionalMemory,
+  ///
+  /// Memory in which errors have been detected.
+  ///
+  EfiUnusableMemory,
+  ///
+  /// Memory that holds the ACPI tables.
+  ///
+  EfiACPIReclaimMemory,
+  ///
+  /// Address space reserved for use by the firmware.
+  ///
+  EfiACPIMemoryNVS,
+  ///
+  /// Used by system firmware to request that a memory-mapped IO region
+  /// be mapped by the OS to a virtual address so it can be accessed by EFI runtime services.
+  ///
+  EfiMemoryMappedIO,
+  ///
+  /// System memory-mapped IO region that is used to translate memory
+  /// cycles to IO cycles by the processor.
+  ///
+  EfiMemoryMappedIOPortSpace,
+  ///
+  /// Address space reserved by the firmware for code that is part of the processor.
+  ///
+  EfiPalCode,
+  EfiMaxMemoryType
+} EFI_MEMORY_TYPE;
+
+///
+/// EFI_HOB_MEMORY_ALLOCATION_HEADER describes the
+/// various attributes of the logical memory allocation. The type field will be used for
+/// subsequent inclusion in the UEFI memory map.
+///
+typedef struct {
+  ///
+  /// A GUID that defines the memory allocation region's type and purpose, as well as
+  /// other fields within the memory allocation HOB. This GUID is used to define the
+  /// additional data within the HOB that may be present for the memory allocation HOB.
+  /// Type EFI_GUID is defined in InstallProtocolInterface() in the UEFI 2.0
+  /// specification.
+  ///
+  EFI_GUID              Name;
+
+  ///
+  /// The base address of memory allocated by this HOB. Type
+  /// EFI_PHYSICAL_ADDRESS is defined in AllocatePages() in the UEFI 2.0
+  /// specification.
+  ///
+  EFI_PHYSICAL_ADDRESS  MemoryBaseAddress;
+
+  ///
+  /// The length in bytes of memory allocated by this HOB.
+  ///
+  UINT64                MemoryLength;
+
+  ///
+  /// Defines the type of memory allocated by this HOB. The memory type definition
+  /// follows the EFI_MEMORY_TYPE definition. Type EFI_MEMORY_TYPE is defined
+  /// in AllocatePages() in the UEFI 2.0 specification.
+  ///
+  EFI_MEMORY_TYPE       MemoryType;
+
+  ///
+  /// Padding for Itanium processor family
+  ///
+  UINT8                 Reserved[4];
+} EFI_HOB_MEMORY_ALLOCATION_HEADER;
+
+///
+/// Describes all memory ranges used during the HOB producer
+/// phase that exist outside the HOB list. This HOB type
+/// describes how memory is used, not the physical attributes of memory.
+///
+typedef struct {
+  ///
+  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION.
+  ///
+  EFI_HOB_GENERIC_HEADER            Header;
+  ///
+  /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the
+  /// various attributes of the logical memory allocation.
+  ///
+  EFI_HOB_MEMORY_ALLOCATION_HEADER  AllocDescriptor;
+  //
+  // Additional data pertaining to the "Name" Guid memory
+  // may go here.
+  //
+} EFI_HOB_MEMORY_ALLOCATION;
+
+///
+/// The resource type.
+///
+typedef UINT32 EFI_RESOURCE_TYPE;
+
+//
+// Value of ResourceType in EFI_HOB_RESOURCE_DESCRIPTOR.
+//
+#define EFI_RESOURCE_SYSTEM_MEMORY          0x00000000
+#define EFI_RESOURCE_MEMORY_MAPPED_IO       0x00000001
+#define EFI_RESOURCE_IO                     0x00000002
+#define EFI_RESOURCE_FIRMWARE_DEVICE        0x00000003
+#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT  0x00000004
+#define EFI_RESOURCE_MEMORY_RESERVED        0x00000005
+#define EFI_RESOURCE_IO_RESERVED            0x00000006
+#define EFI_RESOURCE_MAX_MEMORY_TYPE        0x00000007
+
+///
+/// A type of recount attribute type.
+///
+typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE;
+
+//
+// These types can be ORed together as needed.
+//
+// The first three enumerations describe settings
+//
+#define EFI_RESOURCE_ATTRIBUTE_PRESENT              0x00000001
+#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED          0x00000002
+#define EFI_RESOURCE_ATTRIBUTE_TESTED               0x00000004
+//
+// The rest of the settings describe capabilities
+//
+#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC           0x00000008
+#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC         0x00000010
+#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1           0x00000020
+#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2           0x00000040
+#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED           0x00000080
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED          0x00000100
+#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED      0x00000200
+#define EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE              0x00000400
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE        0x00000800
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE  0x00001000
+#define EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE     0x00002000
+#define EFI_RESOURCE_ATTRIBUTE_16_BIT_IO                0x00004000
+#define EFI_RESOURCE_ATTRIBUTE_32_BIT_IO                0x00008000
+#define EFI_RESOURCE_ATTRIBUTE_64_BIT_IO                0x00010000
+#define EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED        0x00020000
+
+///
+/// Describes the resource properties of all fixed,
+/// nonrelocatable resource ranges found on the processor
+/// host bus during the HOB producer phase.
+///
+typedef struct {
+  ///
+  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_RESOURCE_DESCRIPTOR.
+  ///
+  EFI_HOB_GENERIC_HEADER      Header;
+  ///
+  /// A GUID representing the owner of the resource. This GUID is used by HOB
+  /// consumer phase components to correlate device ownership of a resource.
+  ///
+  EFI_GUID                    Owner;
+  ///
+  /// The resource type enumeration as defined by EFI_RESOURCE_TYPE.
+  ///
+  EFI_RESOURCE_TYPE           ResourceType;
+  ///
+  /// Resource attributes as defined by EFI_RESOURCE_ATTRIBUTE_TYPE.
+  ///
+  EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute;
+  ///
+  /// The physical start address of the resource region.
+  ///
+  EFI_PHYSICAL_ADDRESS        PhysicalStart;
+  ///
+  /// The number of bytes of the resource region.
+  ///
+  UINT64                      ResourceLength;
+} EFI_HOB_RESOURCE_DESCRIPTOR;
+
+///
+/// Allows writers of executable content in the HOB producer phase to
+/// maintain and manage HOBs with specific GUID.
+///
+typedef struct {
+  ///
+  /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_GUID_EXTENSION.
+  ///
+  EFI_HOB_GENERIC_HEADER      Header;
+  ///
+  /// A GUID that defines the contents of this HOB.
+  ///
+  EFI_GUID                    Name;
+  //
+  // Guid specific data goes here
+  //
+} EFI_HOB_GUID_TYPE;
+
+///
+/// Union of all the possible HOB Types.
+///
+typedef union {
+  EFI_HOB_GENERIC_HEADER              *Header;
+  EFI_HOB_MEMORY_ALLOCATION           *MemoryAllocation;
+  EFI_HOB_RESOURCE_DESCRIPTOR         *ResourceDescriptor;
+  EFI_HOB_GUID_TYPE                   *Guid;
+  UINT8                               *Raw;
+} EFI_PEI_HOB_POINTERS;
+
+
+/**
+  Returns the type of a HOB.
+
+  This macro returns the HobType field from the HOB header for the
+  HOB specified by HobStart.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @return HobType.
+
+**/
+#define GET_HOB_TYPE(HobStart) \
+  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobType)
+
+/**
+  Returns the length, in bytes, of a HOB.
+
+  This macro returns the HobLength field from the HOB header for the
+  HOB specified by HobStart.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @return HobLength.
+
+**/
+#define GET_HOB_LENGTH(HobStart) \
+  ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobLength)
+
+/**
+  Returns a pointer to the next HOB in the HOB list.
+
+  This macro returns a pointer to HOB that follows the
+  HOB specified by HobStart in the HOB List.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @return A pointer to the next HOB in the HOB list.
+
+**/
+#define GET_NEXT_HOB(HobStart) \
+  (VOID *)(*(UINT8 **)&(HobStart) + GET_HOB_LENGTH (HobStart))
+
+/**
+  Determines if a HOB is the last HOB in the HOB list.
+
+  This macro determine if the HOB specified by HobStart is the
+  last HOB in the HOB list.  If HobStart is last HOB in the HOB list,
+  then TRUE is returned.  Otherwise, FALSE is returned.
+
+  @param  HobStart   A pointer to a HOB.
+
+  @retval TRUE       The HOB specified by HobStart is the last HOB in the HOB list.
+  @retval FALSE      The HOB specified by HobStart is not the last HOB in the HOB list.
+
+**/
+#define END_OF_HOB_LIST(HobStart)  (GET_HOB_TYPE (HobStart) == (UINT16)EFI_HOB_TYPE_END_OF_HOB_LIST)
+
+/**
+  Returns a pointer to data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  This macro returns a pointer to the data buffer in a HOB specified by HobStart.
+  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  @param   GuidHob   A pointer to a HOB.
+
+  @return  A pointer to the data buffer in a HOB.
+
+**/
+#define GET_GUID_HOB_DATA(HobStart) \
+  (VOID *)(*(UINT8 **)&(HobStart) + sizeof (EFI_HOB_GUID_TYPE))
+
+/**
+  Returns the size of the data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  This macro returns the size, in bytes, of the data buffer in a HOB specified by HobStart.
+  HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION.
+
+  @param   GuidHob   A pointer to a HOB.
+
+  @return  The size of the data buffer.
+**/
+#define GET_GUID_HOB_DATA_SIZE(HobStart) \
+  (UINT16)(GET_HOB_LENGTH (HobStart) - sizeof (EFI_HOB_GUID_TYPE))
+
+/**
+  Returns the pointer to the HOB list.
+
+  This function returns the pointer to first HOB in the list.
+
+  If the pointer to the HOB list is NULL, then ASSERT().
+
+  @return The pointer to the HOB list.
+
+**/
+VOID *
+EFIAPI
+GetHobList (
+  VOID
+  );
+
+/**
+  Returns the next instance of a HOB type from the starting HOB.
+
+  This function searches the first instance of a HOB type from the starting HOB pointer.
+  If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
+  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
+  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
+  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
+
+  If HobStart is NULL, then ASSERT().
+
+  @param  Type          The HOB type to return.
+  @param  HobStart      The starting HOB pointer to search from.
+
+  @return The next instance of a HOB type from the starting HOB.
+
+**/
+VOID *
+EFIAPI
+GetNextHob (
+  UINT16                 Type,
+  CONST VOID             *HobStart
+  );
+
+/**
+  Returns the first instance of a HOB type among the whole HOB list.
+
+  This function searches the first instance of a HOB type among the whole HOB list.
+  If there does not exist such HOB type in the HOB list, it will return NULL.
+
+  If the pointer to the HOB list is NULL, then ASSERT().
+
+  @param  Type          The HOB type to return.
+
+  @return The next instance of a HOB type from the starting HOB.
+
+**/
+VOID *
+EFIAPI
+GetFirstHob (
+  UINT16                 Type
+  );
+
+/**
+  Returns the next instance of the matched GUID HOB from the starting HOB.
+
+  This function searches the first instance of a HOB from the starting HOB pointer.
+  Such HOB should satisfy two conditions:
+  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
+  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
+  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
+  to extract the data section and its size info respectively.
+  In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
+  unconditionally: it returns HobStart back if HobStart itself meets the requirement;
+  caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
+
+  If Guid is NULL, then ASSERT().
+  If HobStart is NULL, then ASSERT().
+
+  @param  Guid          The GUID to match with in the HOB list.
+  @param  HobStart      A pointer to a Guid.
+
+  @return The next instance of the matched GUID HOB from the starting HOB.
+
+**/
+VOID *
+EFIAPI
+GetNextGuidHob (
+  CONST EFI_GUID         *Guid,
+  CONST VOID             *HobStart
+  );
+
+/**
+  Returns the first instance of the matched GUID HOB among the whole HOB list.
+
+  This function searches the first instance of a HOB among the whole HOB list.
+  Such HOB should satisfy two conditions:
+  its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
+  If there does not exist such HOB from the starting HOB pointer, it will return NULL.
+  Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
+  to extract the data section and its size info respectively.
+
+  If the pointer to the HOB list is NULL, then ASSERT().
+  If Guid is NULL, then ASSERT().
+
+  @param  Guid          The GUID to match with in the HOB list.
+
+  @return The first instance of the matched GUID HOB among the whole HOB list.
+
+**/
+VOID *
+EFIAPI
+GetFirstGuidHob (
+  CONST EFI_GUID         *Guid
+  );
+
+/**
+  Compares two GUIDs.
+
+  This function compares Guid1 to Guid2.  If the GUIDs are identical then TRUE is returned.
+  If there are any bit differences in the two GUIDs, then FALSE is returned.
+
+  If Guid1 is NULL, then ASSERT().
+  If Guid2 is NULL, then ASSERT().
+
+  @param  Guid1       A pointer to a 128 bit GUID.
+  @param  Guid2       A pointer to a 128 bit GUID.
+
+  @retval TRUE        Guid1 and Guid2 are identical.
+  @retval FALSE       Guid1 and Guid2 are not identical.
+
+**/
+BOOLEAN
+EFIAPI
+CompareGuid (
+  CONST EFI_GUID  *Guid1,
+  CONST EFI_GUID  *Guid2
+  );
+
+/**
+  Reads a 64-bit value from memory that may be unaligned.
+
+  This function returns the 64-bit value pointed to by Buffer. The function
+  guarantees that the read operation does not produce an alignment fault.
+
+  If the Buffer is NULL, then ASSERT().
+
+  @param  Buffer  Pointer to a 64-bit value that may be unaligned.
+
+  @return The 64-bit value read from Buffer.
+
+**/
+UINT64
+EFIAPI
+ReadUnaligned64 (
+  CONST UINT64              *Buffer
+  );
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/include/fspinfoheader.h b/src/vendorcode/intel/fsp1_0/rangeley/include/fspinfoheader.h
new file mode 100644
index 0000000..28382cf
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/rangeley/include/fspinfoheader.h
@@ -0,0 +1,62 @@
+/*++
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef _FSP_INFO_HEADER_H_
+#define _FSP_INFO_HEADER_H_
+
+#pragma pack(1)
+
+typedef struct  {
+
+  UINT32  Signature;       // Off 0x94
+  UINT32  HeaderLength;
+  UINT8   Reserved1[3];
+  UINT8   HeaderRevision;
+  UINT32  ImageRevision;
+
+  CHAR8   ImageId[8];      // Off 0xA4
+  UINT32  ImageSize;
+  UINT32  ImageBase;
+
+  UINT32  ImageAttribute;  // Off 0xB4
+  UINT32  CfgRegionOffset;
+  UINT32  CfgRegionSize;
+  UINT32  ApiEntryNum;
+
+  UINT32  NemInitEntry;    // Off 0xC4
+  UINT32  FspInitEntry;
+  UINT32  NotifyPhaseEntry;
+  UINT32  Reserved2;
+
+} FSP_INFO_HEADER;
+
+#pragma pack()
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/include/fspplatform.h b/src/vendorcode/intel/fsp1_0/rangeley/include/fspplatform.h
new file mode 100644
index 0000000..ce479bf
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/rangeley/include/fspplatform.h
@@ -0,0 +1,113 @@
+/**
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+**/
+
+#ifndef _FSP_PLATFORM_H_
+#define _FSP_PLATFORM_H_
+
+#include "fsptypes.h"
+#include "fspapi.h"
+
+//
+// Maximum number of SDRAM channels supported by each CPU
+//
+#define MAX_CHANNELS                 2
+//
+// Maximum number of DIMM sockets supported by each channel
+//
+#define MAX_DIMMS                    2
+
+#pragma pack(1)
+//
+// SPD DDR3 structure
+//
+typedef struct {
+  UINT8  DRAMDeviceType;                 // 2   DRAM Device Type
+  UINT8  ModuleType;                     // 3   Module Type
+  UINT8  SDRAMDensityAndBanks;           // 4   SDRAM Density and Banks
+  UINT8  SDRAMAddressing;                // 5   SDRAM Addressing
+  UINT8  VDD;                            // 6   Module Nominal Voltage
+  UINT8  ModuleOrganization;             // 7   Module Organization
+  UINT8  ModuleMemoryBusWidth;           // 8   Module Memory Bus Width
+  UINT8  TimebaseDividend;               // 10  Medium Timebase (MTB) Dividend
+  UINT8  TimebaseDivisor;                // 11  Medium Timebase (MTB) Divisor
+  UINT8  SDRAMMinimumCycleTime;          // 12  SDRAM Minimum Cycle Time (tCKmin)
+  UINT8  CASLatenciesLSB;                // 14  CAS Latencies Supported, Least Significant Byte
+  UINT8  CASLatenciesMSB;                // 15  CAS Latencies Supported, Most Significant Byte
+  UINT8  MinimumCASLatencyTime;          // 16  Minimum CAS Latency Time (tAAmin)
+  UINT8  MinimumWriteRecoveryTime;       // 17  Minimum Write Recovery Time (tWRmin)
+  UINT8  MinimumRASToCASDelayTime;       // 18  Minimum RAS# to CAS# Delay Time (tRCDmin)
+  UINT8  MinimumRowToRowDelayTime;       // 19  Minimum Row Active to Row Active Delay Time (tRRDmin)
+  UINT8  MinimumRowPrechargeDelayTime;   // 20  Minimum Row Precharge Delay Time (tRPmin)
+  UINT8  UpperNibblesFortRASAndtRC;      // 21  Upper Nibbles for tRAS and tRC
+  UINT8  tRASmin;                        // 22  Minimum Active to Precharge Delay Time (tRASmin), Least Significant Byte
+  UINT8  tRCmin;                         // 23  Minimum Active to Active/Refresh Delay Time (tRCmin), Least Significant Byte
+  UINT8  tRFCminLeastSignificantByte;    // 24  Minimum Refresh Recovery Delay Time (tRFCmin), Least Significant Byte
+  UINT8  tRFCminMostSignificantByte;     // 25  Minimum Refresh Recovery Delay Time (tRFCmin), Most Significant Byte
+  UINT8  tWTRmin;                        // 26  Minimum Internal Write to Read Command Delay Time (tWTRmin)
+  UINT8  tRTPmin;                        // 27  Minimum Internal Read to Precharge Command Delay Time (tRTPmin)
+  UINT8  UpperNibbleFortFAW;             // 28  Upper Nibble for tFAW
+  UINT8  tFAWmin;                        // 29  Minimum Four Activate Window Delay Time (tFAWmin)
+  UINT8  ModuleThermalSensor;            // 32  ModuleThermalSensor
+  UINT8  SDRAMDeviceType;                // 33  SDRAM Device Type
+  UINT8  tCKminFine;                     // 34  Fine Offset for SDRAM Minimum Cycle Time (tCKmin)
+  UINT8  tAAminFine;                     // 35  Fine Offset for Minimum CAS Latency Time (tAAmin)
+  UINT8  MACCount;                       // 41  Maximum Activate Count
+  UINT8  ReferenceRawCardUsed;           // 62  Reference Raw Card Used
+  UINT8  AddressMappingEdgeConnector;    // 63  Address Mapping from Edge Connector to DRAM
+  UINT8  ModuleManufacturerIdCodeLsb;    // 117 Module Manufacturer ID Code, Least Significant Byte
+  UINT8  ModuleManufacturerIdCodeMsb;    // 118 Module Manufacturer ID Code, Most Significant Byte
+  UINT8  ModuleManufacturingLocation;    // 119 Module Manufacturing Location
+  UINT8  ModuleManufacturingDateYear;    // 120 Module Manufacturing Date Year
+  UINT8  ModuleManufacturingDateWW;      // 121 Module Manufacturing Date creation work week
+  UINT8  ModuleSerialNumberA;            // 122 Module Serial Number A
+  UINT8  ModuleSerialNumberB;            // 123 Module Serial Number B
+  UINT8  ModuleSerialNumberC;            // 124 Module Serial Number C
+  UINT8  ModuleSerialNumberD;            // 125 Module Serial Number D
+  UINT8  DramManufacturerIdLsb;          // 148 DRAM Manufacturer ID Code, LSB
+  UINT8  DramManufacturerIdMsb;          // 149 DRAM Manufacturer ID Code, MSB
+} MEM_DOWN_DIMM_SPD_DATA;
+
+typedef struct {
+  UINT32   MemoryDownDimmPopulation;  // 0 - Empty, 1 - DIMM populated
+  MEM_DOWN_DIMM_SPD_DATA   MemoryDownDimmSpdData;
+} MEM_DOWN_DIMM_CONFIG;
+
+typedef struct {
+  CONST MEM_DOWN_DIMM_CONFIG  *MemDownDimmConfig[MAX_CHANNELS][MAX_DIMMS];
+} FSP_INIT_RT_PLATFORM_BUFFER;
+
+typedef struct {
+  FSP_INIT_RT_COMMON_BUFFER  Common;
+  FSP_INIT_RT_PLATFORM_BUFFER Platform;
+} FSP_INIT_RT_BUFFER;
+
+#pragma pack()
+
+#endif
\ No newline at end of file
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/include/fsptypes.h b/src/vendorcode/intel/fsp1_0/rangeley/include/fsptypes.h
new file mode 100644
index 0000000..5912e01
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/rangeley/include/fsptypes.h
@@ -0,0 +1,178 @@
+/******************************************************************************
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+ *****************************************************************************/
+
+/** \file  fsptypes.h
+ *
+ *
+ */
+
+#ifndef __FSP_TYPES_H__
+#define __FSP_TYPES_H__
+
+///
+/// 8-byte unsigned value.
+///
+typedef unsigned long long  UINT64;
+///
+/// 8-byte signed value.
+///
+typedef long long           INT64;
+///
+/// 4-byte unsigned value.
+///
+typedef unsigned int        UINT32;
+///
+/// 4-byte signed value.
+///
+typedef int                 INT32;
+///
+/// 2-byte unsigned value.
+///
+typedef unsigned short      UINT16;
+///
+/// 2-byte Character.  Unless otherwise specified all strings are stored in the
+/// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
+///
+typedef unsigned short      CHAR16;
+///
+/// 2-byte signed value.
+///
+typedef short               INT16;
+///
+/// Logical Boolean.  1-byte value containing 0 for FALSE or a 1 for TRUE.  Other
+/// values are undefined.
+///
+typedef unsigned char       BOOLEAN;
+///
+/// 1-byte unsigned value.
+///
+typedef unsigned char       UINT8;
+///
+/// 1-byte Character
+///
+typedef char                CHAR8;
+///
+/// 1-byte signed value
+///
+typedef char                INT8;
+
+typedef void                VOID;
+
+typedef UINT64              EFI_PHYSICAL_ADDRESS;
+
+typedef struct {
+  UINT32  Data1;
+  UINT16  Data2;
+  UINT16  Data3;
+  UINT8   Data4[8];
+} EFI_GUID;
+
+#define CONST     const
+#define STATIC    static
+
+#define TRUE  ((BOOLEAN)(1==1))
+#define FALSE ((BOOLEAN)(0==1))
+
+#define FSPAPI __attribute__((cdecl))
+#define EFIAPI __attribute__((cdecl))
+
+#define ASSERT(Expression)      \
+  do {                          \
+    if (!(Expression)) {        \
+      for (;;);                 \
+    }                           \
+  } while (FALSE)
+
+typedef UINT32 FSP_STATUS;
+typedef UINT32 EFI_STATUS;
+
+///
+/// Compatiable with EFI_STATUS defined in PI Spec.
+#define FSP_SUCCESS               0
+#define FSP_INVALID_PARAMETER     0x80000002
+#define FSP_UNSUPPORTED           0x80000003
+#define FSP_DEVICE_ERROR          0x80000007
+#define FSP_NOT_FOUND             0x8000000E
+#define FSP_ALREADY_STARTED       0x80000014
+
+/**
+  Returns a 16-bit signature built from 2 ASCII characters.
+
+  This macro returns a 16-bit value built from the two ASCII characters specified
+  by A and B.
+
+  @param  A    The first ASCII character.
+  @param  B    The second ASCII character.
+
+  @return A 16-bit value built from the two ASCII characters specified by A and B.
+
+**/
+#define SIGNATURE_16(A, B)        ((A) | (B << 8))
+
+/**
+  Returns a 32-bit signature built from 4 ASCII characters.
+
+  This macro returns a 32-bit value built from the four ASCII characters specified
+  by A, B, C, and D.
+
+  @param  A    The first ASCII character.
+  @param  B    The second ASCII character.
+  @param  C    The third ASCII character.
+  @param  D    The fourth ASCII character.
+
+  @return A 32-bit value built from the two ASCII characters specified by A, B,
+          C and D.
+
+**/
+#define SIGNATURE_32(A, B, C, D)  (SIGNATURE_16 (A, B) | (SIGNATURE_16 (C, D) << 16))
+
+/**
+  Returns a 64-bit signature built from 8 ASCII characters.
+
+  This macro returns a 64-bit value built from the eight ASCII characters specified
+  by A, B, C, D, E, F, G,and H.
+
+  @param  A    The first ASCII character.
+  @param  B    The second ASCII character.
+  @param  C    The third ASCII character.
+  @param  D    The fourth ASCII character.
+  @param  E    The fifth ASCII character.
+  @param  F    The sixth ASCII character.
+  @param  G    The seventh ASCII character.
+  @param  H    The eighth ASCII character.
+
+  @return A 64-bit value built from the two ASCII characters specified by A, B,
+          C, D, E, F, G and H.
+
+**/
+#define SIGNATURE_64(A, B, C, D, E, F, G, H) \
+    (SIGNATURE_32 (A, B, C, D) | ((UINT64) (SIGNATURE_32 (E, F, G, H)) << 32))
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/include/fspvpd.h b/src/vendorcode/intel/fsp1_0/rangeley/include/fspvpd.h
new file mode 100644
index 0000000..fba38a0
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/rangeley/include/fspvpd.h
@@ -0,0 +1,87 @@
+/** @file
+
+Copyright (C) 2013-2014 Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+  This file is automatically generated. Please do NOT modify !!!
+
+**/
+
+#ifndef __FSP_VPD_H__
+#define __FSP_VPD_H__
+
+#pragma pack(1)
+
+
+
+typedef struct _UPD_DATA_REGION {
+  UINT64                      Signature;                     /* Offset 0x0000 */
+  UINT64                      Reserved;                      /* Offset 0x0008 */
+  UINT8                       UnusedUpdSpace0[16];           /* Offset 0x0010 */
+  UINT8                       PcdMrcInitTsegSize;            /* Offset 0x0020 */
+  UINT8                       PcdMemoryDown;                 /* Offset 0x0021 */
+  UINT8                       PcdMrcRmtSupport;              /* Offset 0x0022 */
+  UINT8                       PcdMrcRmtCpgcExpLoopCntValue;  /* Offset 0x0023 */
+  UINT8                       PcdMrcRmtCpgcNumBursts;        /* Offset 0x0024 */
+  UINT8                       PcdSpdBaseAddress_0_0;         /* Offset 0x0025 */
+  UINT8                       PcdSpdBaseAddress_0_1;         /* Offset 0x0026 */
+  UINT8                       PcdSpdBaseAddress_1_0;         /* Offset 0x0027 */
+  UINT8                       PcdSpdBaseAddress_1_1;         /* Offset 0x0028 */
+  UINT8                       UnusedUpdSpace1[7];            /* Offset 0x0029 */
+  UINT8                       PcdEnableLan;                  /* Offset 0x0030 */
+  UINT8                       PcdEnableSata2;                /* Offset 0x0031 */
+  UINT8                       PcdEnableSata3;                /* Offset 0x0032 */
+  UINT8                       PcdEnableIQAT;                 /* Offset 0x0033 */
+  UINT8                       PcdEnableUsb20;                /* Offset 0x0034 */
+  UINT8                       PcdBifurcation;                /* Offset 0x0035 */
+  UINT8                       PcdPcieRootPort1DeEmphasis;    /* Offset 0x0036 */
+  UINT8                       PcdPcieRootPort2DeEmphasis;    /* Offset 0x0037 */
+  UINT8                       PcdPcieRootPort3DeEmphasis;    /* Offset 0x0038 */
+  UINT8                       PcdPcieRootPort4DeEmphasis;    /* Offset 0x0039 */
+  UINT8                       UnusedUpdSpace2[6];            /* Offset 0x003A */
+  UINT8                       PcdPrintDebugMessages;         /* Offset 0x0040 */
+  UINT8                       PcdFastboot;                   /* Offset 0x0041 */
+  UINT8                       PcdEccSupport;                 /* Offset 0x0042 */
+  UINT8                       PcdCustomerRevision[32];       /* Offset 0x0043 */
+  UINT8                       UnusedUpdSpace3[13];           /* Offset 0x0063 */
+  UINT16                      PcdRegionTerminator;           /* Offset 0x0070 */
+} UPD_DATA_REGION;
+
+#define VPD_IMAGE_ID    0x562D474E524E5641        /* 'AVNRNG-V' */
+#define VPD_IMAGE_REV   0x00000102
+
+typedef struct _VPD_DATA_REGION {
+  UINT64                      PcdVpdRegionSign;              /* Offset 0x0000 */
+  UINT32                      PcdImageRevision;              /* Offset 0x0008 */
+  UINT32                      PcdUpdRegionOffset;            /* Offset 0x000C */
+  UINT8                       UnusedVpdSpace0[16];           /* Offset 0x0010 */
+  UINT32                      PcdFspReservedMemoryLength;    /* Offset 0x0020 */
+  UINT8                       PcdSpdWriteProtect;            /* Offset 0x0024 */
+} VPD_DATA_REGION;
+
+#pragma pack()
+
+#endif
diff --git a/src/vendorcode/intel/fsp1_0/rangeley/srx/fsphob.c b/src/vendorcode/intel/fsp1_0/rangeley/srx/fsphob.c
new file mode 100644
index 0000000..4986d52
--- /dev/null
+++ b/src/vendorcode/intel/fsp1_0/rangeley/srx/fsphob.c
@@ -0,0 +1,204 @@
+/******************************************************************************
+
+Copyright (C) 2013, Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither the name of Intel Corporation nor the names of its contributors may
+  be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+  THE POSSIBILITY OF SUCH DAMAGE.
+
+ ******************************************************************************/
+
+/***********************************************************************
+ *
+ * fsphob.c
+ *
+ * HOB infrastructure code.
+ *
+ **********************************************************************/
+#include <string.h>
+
+#include "fsptypes.h"
+#include "fsphob.h"
+
+//
+// Pointer to the HOB should be initialized with the output of FSP INIT PARAMS
+//
+#ifndef __PRE_RAM__
+extern volatile void *FspHobListPtr;
+#endif
+
+/**
+  Reads a 64-bit value from memory that may be unaligned.
+
+  This function returns the 64-bit value pointed to by Buffer. The function
+  guarantees that the read operation does not produce an alignment fault.
+
+  If the Buffer is NULL, then ASSERT().
+
+  @param  Buffer  Pointer to a 64-bit value that may be unaligned.
+
+  @return The 64-bit value read from Buffer.
+
+**/
+UINT64
+EFIAPI
+ReadUnaligned64 (
+  CONST UINT64              *Buffer
+  )
+{
+  ASSERT (Buffer != NULL);
+
+  return *Buffer;
+}
+
+/**
+  Compares two GUIDs.
+
+  This function compares Guid1 to Guid2.  If the GUIDs are identical then TRUE is returned.
+  If there are any bit differences in the two GUIDs, then FALSE is returned.
+
+  If Guid1 is NULL, then ASSERT().
+  If Guid2 is NULL, then ASSERT().
+
+  @param  Guid1       A pointer to a 128 bit GUID.
+  @param  Guid2       A pointer to a 128 bit GUID.
+
+  @retval TRUE        Guid1 and Guid2 are identical.
+  @retval FALSE       Guid1 and Guid2 are not identical.
+
+**/
+BOOLEAN
+EFIAPI
+CompareGuid (
+  CONST EFI_GUID  *Guid1,
+  CONST EFI_GUID  *Guid2
+  )
+{
+  UINT64  LowPartOfGuid1;
+  UINT64  LowPartOfGuid2;
+  UINT64  HighPartOfGuid1;
+  UINT64  HighPartOfGuid2;
+
+  LowPartOfGuid1  = ReadUnaligned64 ((CONST UINT64*) Guid1);
+  LowPartOfGuid2  = ReadUnaligned64 ((CONST UINT64*) Guid2);
+  HighPartOfGuid1 = ReadUnaligned64 ((CONST UINT64*) Guid1 + 1);
+  HighPartOfGuid2 = ReadUnaligned64 ((CONST UINT64*) Guid2 + 1);
+
+  return (BOOLEAN) (LowPartOfGuid1 == LowPartOfGuid2 && HighPartOfGuid1 == HighPartOfGuid2);
+}
+
+/**
+  Returns the pointer to the HOB list.
+**/
+VOID *
+EFIAPI
+GetHobList (
+  VOID
+  )
+{
+#ifndef __PRE_RAM__
+  ASSERT (FspHobListPtr != NULL);
+  return ((VOID *)FspHobListPtr);
+#else
+  return ((VOID *)NULL);
+#endif
+}
+
+/**
+  Returns the next instance of a HOB type from the starting HOB.
+**/
+VOID *
+EFIAPI
+GetNextHob (
+  UINT16                 Type,
+  CONST VOID             *HobStart
+  )
+{
+  EFI_PEI_HOB_POINTERS  Hob;
+
+  ASSERT (HobStart != NULL);
+
+  Hob.Raw = (UINT8 *) HobStart;
+  //
+  // Parse the HOB list until end of list or matching type is found.
+  //
+  while (!END_OF_HOB_LIST (Hob)) {
+    if (Hob.Header->HobType == Type) {
+      return Hob.Raw;
+    }
+    Hob.Raw = GET_NEXT_HOB (Hob);
+  }
+  return NULL;
+}
+
+/**
+  Returns the first instance of a HOB type among the whole HOB list.
+**/
+VOID *
+EFIAPI
+GetFirstHob (
+  UINT16                 Type
+  )
+{
+  VOID      *HobList;
+
+  HobList = GetHobList ();
+  return GetNextHob (Type, HobList);
+}
+
+/**
+  Returns the next instance of the matched GUID HOB from the starting HOB.
+**/
+VOID *
+EFIAPI
+GetNextGuidHob (
+  CONST EFI_GUID         *Guid,
+  CONST VOID             *HobStart
+  )
+{
+  EFI_PEI_HOB_POINTERS  GuidHob;
+
+  GuidHob.Raw = (UINT8 *) HobStart;
+  while ((GuidHob.Raw = GetNextHob (EFI_HOB_TYPE_GUID_EXTENSION, GuidHob.Raw)) != NULL) {
+    if (CompareGuid (Guid, &GuidHob.Guid->Name)) {
+      break;
+    }
+    GuidHob.Raw = GET_NEXT_HOB (GuidHob);
+  }
+  return GuidHob.Raw;
+}
+
+/**
+  Returns the first instance of the matched GUID HOB among the whole HOB list.
+**/
+VOID *
+EFIAPI
+GetFirstGuidHob (
+  CONST EFI_GUID         *Guid
+  )
+{
+  VOID      *HobList;
+
+  HobList = GetHobList ();
+  return GetNextGuidHob (Guid, HobList);
+}



More information about the coreboot-gerrit mailing list