summaryrefslogtreecommitdiffstats
path: root/src/include/region_file.h
diff options
context:
space:
mode:
authorShelley Chen <shchen@google.com>2020-09-15 00:41:14 -0700
committerShelley Chen <shchen@google.com>2020-09-16 16:02:54 +0000
commit2d90ddd2d226fbc593c7741eae2160d02ff98431 (patch)
tree9255591b621fe8d3b76dfc5b8c71712ba1ad30d8 /src/include/region_file.h
parenta79e01bf7167ae6bfc8435341bab87e590789ae9 (diff)
downloadcoreboot-2d90ddd2d226fbc593c7741eae2160d02ff98431.tar.gz
coreboot-2d90ddd2d226fbc593c7741eae2160d02ff98431.tar.bz2
coreboot-2d90ddd2d226fbc593c7741eae2160d02ff98431.zip
region_file_update_data_arr: Modify region_file with array of buffers
Add region_file_update_data_arr, which has the same functionality as region_file_update_data, but accepts mutliple data buffers. This is useful for when we have the mrc_metadata and data in non-contiguous addresses, which is the case when we bypass the storing of mrc_cache data into the cbmem. BUG=b:150502246 BRANCH=None TEST=reboot from ec console. Make sure memory training happens. reboot from ec console. Make sure that we don't do training again. Change-Id: Ia530f7d428b9b07ce3a73e348016038d9daf4c15 Signed-off-by: Shelley Chen <shchen@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/45407 Reviewed-by: Furquan Shaikh <furquan@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/include/region_file.h')
-rw-r--r--src/include/region_file.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/include/region_file.h b/src/include/region_file.h
index 063e0e0235b7..a3cb79d044af 100644
--- a/src/include/region_file.h
+++ b/src/include/region_file.h
@@ -31,9 +31,22 @@ int region_file_init(struct region_file *f, const struct region_device *p);
*/
int region_file_data(const struct region_file *f, struct region_device *rdev);
+/*
+ * Create region file entry struct to insert multiple data buffers
+ * into the same region_file.
+ */
+struct update_region_file_entry {
+ /* size of this entry */
+ size_t size;
+ /* data pointer */
+ const void *data;
+};
+
/* Update region file with latest data. Returns < 0 on error, 0 on success. */
-int region_file_update_data(struct region_file *f, const void *buf,
- size_t size);
+int region_file_update_data_arr(struct region_file *f,
+ const struct update_region_file_entry *entries,
+ size_t num_entries);
+int region_file_update_data(struct region_file *f, const void *buf, size_t size);
/* Declared here for easy object allocation. */
struct region_file {