aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/drivers/intel/fsp1_1/Kconfig2
-rw-r--r--src/drivers/intel/fsp1_1/cache_as_ram.inc45
-rw-r--r--src/drivers/intel/fsp1_1/fsp_util.h4
-rw-r--r--src/drivers/intel/fsp1_1/hob.c11
4 files changed, 53 insertions, 9 deletions
diff --git a/src/drivers/intel/fsp1_1/Kconfig b/src/drivers/intel/fsp1_1/Kconfig
index f722e65b32..ec5112d002 100644
--- a/src/drivers/intel/fsp1_1/Kconfig
+++ b/src/drivers/intel/fsp1_1/Kconfig
@@ -205,6 +205,6 @@ config USE_GENERIC_FSP_CAR_INC
config VBT_FILE
string "GOP Video BIOS table binary path"
depends on GOP_SUPPORT
- default "3rdparty/mainboard/$(MAINBOARDDIR)/vbt.bin"
+ default "3rdparty/blobs/mainboard/$(MAINBOARDDIR)/vbt.bin"
endif #PLATFORM_USES_FSP1_1
diff --git a/src/drivers/intel/fsp1_1/cache_as_ram.inc b/src/drivers/intel/fsp1_1/cache_as_ram.inc
index 4a0827d2df..f56d841380 100644
--- a/src/drivers/intel/fsp1_1/cache_as_ram.inc
+++ b/src/drivers/intel/fsp1_1/cache_as_ram.inc
@@ -204,12 +204,51 @@ before_romstage:
cmp $0, %eax
jne halt3
- /* Get number of MTRRs. */
+ /* Display the MTRRs */
+ call soc_display_mtrrs
+
+ /*
+ * The stack contents are initialized in src/soc/intel/common/stack.c
+ * to be the following:
+ *
+ * *
+ * *
+ * *
+ * +36: MTRR mask 1 63:32
+ * +32: MTRR mask 1 31:0
+ * +28: MTRR base 1 63:32
+ * +24: MTRR base 1 31:0
+ * +20: MTRR mask 0 63:32
+ * +16: MTRR mask 0 31:0
+ * +12: MTRR base 0 63:32
+ * +8: MTRR base 0 31:0
+ * +4: Number of MTRRs to setup (described above)
+ * +0: Number of variable MTRRs to clear
+ */
+
+ /* Clear all of the variable MTRRs. */
popl %ebx
movl $MTRRphysBase_MSR(0), %ecx
+ clr %eax
+ clr %edx
+
1:
testl %ebx, %ebx
jz 1f
+ wrmsr /* Write MTRR base. */
+ inc %ecx
+ wrmsr /* Write MTRR mask. */
+ inc %ecx
+ dec %ebx
+ jmp 1b
+
+1:
+ /* Get number of MTRRs. */
+ popl %ebx
+ movl $MTRRphysBase_MSR(0), %ecx
+2:
+ testl %ebx, %ebx
+ jz 2f
/* Low 32 bits of MTRR base. */
popl %eax
@@ -227,8 +266,8 @@ before_romstage:
inc %ecx
dec %ebx
- jmp 1b
-1:
+ jmp 2b
+2:
post_code(0x39)
/* And enable cache again after setting MTRRs. */
diff --git a/src/drivers/intel/fsp1_1/fsp_util.h b/src/drivers/intel/fsp1_1/fsp_util.h
index 38fa86211b..618317ba69 100644
--- a/src/drivers/intel/fsp1_1/fsp_util.h
+++ b/src/drivers/intel/fsp1_1/fsp_util.h
@@ -37,7 +37,7 @@
#define GetFirstGuidHob get_first_guid_hob
/* Include the EDK2 headers */
-#include <chipset_fsp_util.h>
+#include <soc/chipset_fsp_util.h>
#if IS_ENABLED(CONFIG_ENABLE_MRC_CACHE)
int save_mrc_data(void *hob_start);
@@ -104,6 +104,8 @@ void update_mrc_cache(void *unused);
#define FSP_IMAGE_SIG_LOC 0
#define FSP_IMAGE_ID_LOC 16
#define FSP_IMAGE_BASE_LOC 28
+#define FSP_IMAGE_ATTRIBUTE_LOC 32
+#define GRAPHICS_SUPPORT_BIT (1 << 0)
#define FSP_SIG 0x48505346 /* 'FSPH' */
diff --git a/src/drivers/intel/fsp1_1/hob.c b/src/drivers/intel/fsp1_1/hob.c
index 905d3ec1ab..6cc09fbcc4 100644
--- a/src/drivers/intel/fsp1_1/hob.c
+++ b/src/drivers/intel/fsp1_1/hob.c
@@ -294,6 +294,7 @@ static const char *get_hob_type_string(void *hob_ptr)
FSP_BOOTLOADER_TEMP_MEMORY_HOB_GUID;
const EFI_GUID bootldr_tolum_guid = FSP_BOOTLOADER_TOLUM_HOB_GUID;
const EFI_GUID graphics_info_guid = EFI_PEI_GRAPHICS_INFO_HOB_GUID;
+ const EFI_GUID memory_info_hob_guid = FSP_SMBIOS_MEMORY_INFO_GUID;
hob.Header = (EFI_HOB_GENERIC_HEADER *)hob_ptr;
switch (hob.Header->HobType) {
@@ -305,19 +306,21 @@ static const char *get_hob_type_string(void *hob_ptr)
break;
case EFI_HOB_TYPE_RESOURCE_DESCRIPTOR:
hob_type_string = "EFI_HOB_TYPE_RESOURCE_DESCRIPTOR";
+ if (compare_guid(&fsp_reserved_guid, &hob.Guid->Name))
+ hob_type_string = "FSP_RESERVED_MEMORY_RESOURCE_HOB";
+ else if (compare_guid(&bootldr_tolum_guid, &hob.Guid->Name))
+ hob_type_string = "FSP_BOOTLOADER_TOLUM_HOB_GUID";
break;
case EFI_HOB_TYPE_GUID_EXTENSION:
hob_type_string = "EFI_HOB_TYPE_GUID_EXTENSION";
if (compare_guid(&bootldr_tmp_mem_guid, &hob.Guid->Name))
hob_type_string = "FSP_BOOTLOADER_TEMP_MEMORY_HOB";
- else if (compare_guid(&fsp_reserved_guid, &hob.Guid->Name))
- hob_type_string = "FSP_RESERVED_MEMORY_RESOURCE_HOB";
else if (compare_guid(&mrc_guid, &hob.Guid->Name))
hob_type_string = "FSP_NON_VOLATILE_STORAGE_HOB";
- else if (compare_guid(&bootldr_tolum_guid, &hob.Guid->Name))
- hob_type_string = "FSP_BOOTLOADER_TOLUM_HOB_GUID";
else if (compare_guid(&graphics_info_guid, &hob.Guid->Name))
hob_type_string = "EFI_PEI_GRAPHICS_INFO_HOB_GUID";
+ else if (compare_guid(&memory_info_hob_guid, &hob.Guid->Name))
+ hob_type_string = "FSP_SMBIOS_MEMORY_INFO_GUID";
break;
case EFI_HOB_TYPE_MEMORY_POOL:
hob_type_string = "EFI_HOB_TYPE_MEMORY_POOL";