x86: fsp: Add access to variable MRC data
authorSimon Glass <sjg@chromium.org>
Wed, 25 Sep 2019 14:11:34 +0000 (08:11 -0600)
committerBin Meng <bmeng.cn@gmail.com>
Tue, 8 Oct 2019 05:57:31 +0000 (13:57 +0800)
With FSP2 the non-volatile storage used by the FSP to init memory can be
split into a fixed piece (determined at compile time) and a variable piece
(determined at run time). Add support for reading the latter.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
arch/x86/include/asm/fsp/fsp_hob.h
arch/x86/include/asm/fsp/fsp_support.h
arch/x86/lib/fsp/fsp_support.c

index 3bb79c4b67a45c89c26e5ce59cb509c3ef6ee1f4..d248520e972695c82f2360746071b63d2abc159d 100644 (file)
@@ -69,6 +69,10 @@ struct __packed hob_graphics_info {
        EFI_GUID(0x721acf02, 0x4d77, 0x4c2a, \
                0xb3, 0xdc, 0x27, 0x0b, 0x7b, 0xa9, 0xe4, 0xb0)
 
+#define FSP_VARIABLE_NV_DATA_HOB_GUID \
+       EFI_GUID(0xa034147d, 0x690c, 0x4154, \
+               0x8d, 0xe6, 0xc0, 0x44, 0x64, 0x1d, 0xe9, 0x42)
+
 #define FSP_BOOTLOADER_TEMP_MEM_HOB_GUID \
        EFI_GUID(0xbbcff46c, 0xc8d3, 0x4113, \
                0x89, 0x85, 0xb9, 0xd4, 0xf3, 0xb3, 0xf6, 0x4e)
index 8dea2e71ea955c9007f94b0bc521867951c3d764..4ac27d26f5537970968a566c088cda61f90d862b 100644 (file)
@@ -103,6 +103,18 @@ u32 fsp_get_tseg_reserved_mem(const void *hob_list, u32 *len);
  */
 void *fsp_get_nvs_data(const void *hob_list, u32 *len);
 
+/**
+ * fsp_get_var_nvs_data() - get FSP variable Non-volatile Storage HOB buffer
+ *
+ * @hob_list:      A HOB list pointer.
+ * @len:           A pointer to the NVS data buffer length.
+ *                 If the HOB is located, the length will be updated.
+ *
+ * @return NULL:   Failed to find the NVS HOB.
+ * @return others: FSP NVS data buffer pointer.
+ */
+void *fsp_get_var_nvs_data(const void *hob_list, u32 *len);
+
 /**
  * fsp_get_graphics_info() - retrieves graphics information.
  *
index 014de35e56344222300969aca962f8e4ac3e5f03..983888fd74301cca2b5b13c068eaf41c5bf9e573 100644 (file)
@@ -161,6 +161,13 @@ void *fsp_get_nvs_data(const void *hob_list, u32 *len)
        return hob_get_guid_hob_data(hob_list, len, &guid);
 }
 
+void *fsp_get_var_nvs_data(const void *hob_list, u32 *len)
+{
+       const efi_guid_t guid = FSP_VARIABLE_NV_DATA_HOB_GUID;
+
+       return hob_get_guid_hob_data(hob_list, len, &guid);
+}
+
 void *fsp_get_bootloader_tmp_mem(const void *hob_list, u32 *len)
 {
        const efi_guid_t guid = FSP_BOOTLOADER_TEMP_MEM_HOB_GUID;