lib/fmap: Add area read/write functions

Change-Id: I7669b8dc07b1aa5f00e7d8d0b1305b3de6c5949c
Signed-off-by: T Michael Turney <mturney@codeaurora.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/32287
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
diff --git a/src/lib/fmap.c b/src/lib/fmap.c
index 9602134..2b4e3ba 100644
--- a/src/lib/fmap.c
+++ b/src/lib/fmap.c
@@ -173,3 +173,25 @@
 
 	return -1;
 }
+
+ssize_t fmap_read_area(const char *name, void *buffer, size_t size)
+{
+	struct region_device rdev;
+	if (fmap_locate_area_as_rdev(name, &rdev))
+		return -1;
+	return rdev_readat(&rdev, buffer, 0,
+			MIN(size, region_device_sz(&rdev)));
+}
+
+ssize_t fmap_overwrite_area(const char *name, const void *buffer, size_t size)
+{
+	struct region_device rdev;
+
+	if (fmap_locate_area_as_rdev_rw(name, &rdev))
+		return -1;
+	if (size > region_device_sz(&rdev))
+		return -1;
+	if (rdev_eraseat(&rdev, 0, region_device_sz(&rdev)) < 0)
+		return -1;
+	return rdev_writeat(&rdev, buffer, 0, size);
+}