vboot: Change VbExEc implementations to support RO update

This change will be used to support EC-RO software sync by allowing for
access to the readonly region of firmware. Currently only the writable
section is accessed by vboot using VB_SELECT_FIRMWARE_A and B.

For now only VB_SELECT_FIRMWARE_A and B are accepted as valid regions.

BUG=chrome-os-partner:48703
BRANCH=none
TEST=emerge-samus chromeos-u-boot
CQ-DEPEND=CL:319185,CL:319213,CL:320425

Change-Id: Ib2a4a9f314a00b576f27a56522fca1c75a104dae
Signed-off-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/320598
Reviewed-by: Randall Spangler <rspangler@chromium.org>
diff --git a/cros/vboot/ec.c b/cros/vboot/ec.c
index 2c4305e..974c1e0 100644
--- a/cros/vboot/ec.c
+++ b/cros/vboot/ec.c
@@ -119,12 +119,13 @@
 	return VBERROR_SUCCESS;
 }
 
-VbError_t VbExEcHashRW(int devidx, const uint8_t **hash, int *hash_size)
+VbError_t VbExEcHashImage(int devidx, enum VbSelectFirmware_t select,
+			  const uint8_t **hash, int *hash_size)
 {
 	struct cros_ec_dev *mdev = board_get_cros_ec_dev();
 	static struct ec_response_vboot_hash resp __aligned(8);
 
-	if (devidx != 0)
+	if (devidx != 0 || select == VB_SELECT_FIRMWARE_READONLY)
 		return VBERROR_UNKNOWN;
 
 	if (!mdev) {
@@ -189,12 +190,13 @@
 	return VBERROR_UNKNOWN;
 }
 
-VbError_t VbExEcUpdateRW(int devidx, const uint8_t  *image, int image_size)
+VbError_t VbExEcUpdateImage(int devidx, enum VbSelectFirmware_t select,
+			    const uint8_t *image, int image_size)
 {
 	struct cros_ec_dev *mdev = board_get_cros_ec_dev();
 	int rv;
 
-	if (devidx != 0)
+	if (devidx != 0 || select == VB_SELECT_FIRMWARE_READONLY)
 		return VBERROR_UNKNOWN;
 
 	if (!mdev) {
@@ -212,9 +214,9 @@
 	return rv == 0 ? VBERROR_SUCCESS : VBERROR_UNKNOWN;
 }
 
-VbError_t VbExEcProtectRW(int devidx)
+VbError_t VbExEcProtect(int devidx, enum VbSelectFirmware_t select)
 {
-	if (devidx != 0)
+	if (devidx != 0 || select == VB_SELECT_FIRMWARE_READONLY)
 		return VBERROR_UNKNOWN;
 
 	return ec_protect_rw(1);
@@ -234,8 +236,8 @@
 	return cros_ec_entering_mode(mdev, mode);
 }
 
-VbError_t VbExEcGetExpectedRW(int devidx, enum VbSelectFirmware_t select,
-			      const uint8_t **image, int *image_size)
+VbError_t VbExEcGetExpectedImage(int devidx, enum VbSelectFirmware_t select,
+				 const uint8_t **image, int *image_size)
 {
 	struct fmap_firmware_entry *fw_entry;
 	struct twostop_fmap fmap;
@@ -247,7 +249,7 @@
 	*image = NULL;
 	*image_size = 0;
 
-	if (devidx != 0)
+	if (devidx != 0 || select == VB_SELECT_FIRMWARE_READONLY)
 		return VBERROR_UNKNOWN;
 
 	cros_fdtdec_flashmap(gd->fdt_blob, &fmap);
@@ -305,15 +307,15 @@
 	return VBERROR_SUCCESS;
 }
 
-VbError_t VbExEcGetExpectedRWHash(int devidx, enum VbSelectFirmware_t select,
-		       const uint8_t **hash, int *hash_size)
+VbError_t VbExEcGetExpectedImageHash(int devidx, enum VbSelectFirmware_t select,
+				     const uint8_t **hash, int *hash_size)
 {
 	struct twostop_fmap fmap;
 	struct fmap_entry *ec;
 
 	*hash = NULL;
 
-	if (devidx != 0)
+	if (devidx != 0 || select == VB_SELECT_FIRMWARE_READONLY)
 		return VBERROR_UNKNOWN;
 
 	/* TODO: Decode the flashmap once and reuse throughout. */