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>
This commit is contained in:
Shelley Chen 2020-09-15 00:41:14 -07:00
commit 2d90ddd2d2
2 changed files with 43 additions and 11 deletions

View file

@ -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 {