cros_ec: Update cros_ec_read_hash() to specify the image
Allow selection of which EC image to hash.
Signed-off-by: Simon Glass <sjg@chromium.org>
diff --git a/cmd/cros_ec.c b/cmd/cros_ec.c
index 3ac4f3b..9e2f1b0 100644
--- a/cmd/cros_ec.c
+++ b/cmd/cros_ec.c
@@ -149,7 +149,7 @@
struct ec_response_vboot_hash hash;
int i;
- if (cros_ec_read_hash(dev, &hash)) {
+ if (cros_ec_read_hash(dev, EC_VBOOT_HASH_OFFSET_ACTIVE, &hash)) {
debug("%s: Could not read KBC hash\n", __func__);
return 1;
}
diff --git a/drivers/misc/cros_ec.c b/drivers/misc/cros_ec.c
index 07e662a..190505c 100644
--- a/drivers/misc/cros_ec.c
+++ b/drivers/misc/cros_ec.c
@@ -444,13 +444,14 @@
return 0;
}
-
-int cros_ec_read_hash(struct udevice *dev, struct ec_response_vboot_hash *hash)
+int cros_ec_read_hash(struct udevice *dev, uint hash_offset,
+ struct ec_response_vboot_hash *hash)
{
struct ec_params_vboot_hash p;
int rv;
p.cmd = EC_VBOOT_HASH_GET;
+ p.offset = hash_offset;
if (ec_command(dev, EC_CMD_VBOOT_HASH, 0, &p, sizeof(p),
hash, sizeof(*hash)) < 0)
return -1;
@@ -473,7 +474,7 @@
p.cmd = EC_VBOOT_HASH_START;
p.hash_type = EC_VBOOT_HASH_TYPE_SHA256;
p.nonce_size = 0;
- p.offset = EC_VBOOT_HASH_OFFSET_ACTIVE;
+ p.offset = hash_offset;
if (ec_command(dev, EC_CMD_VBOOT_HASH, 0, &p, sizeof(p),
hash, sizeof(*hash)) < 0)
diff --git a/include/cros_ec.h b/include/cros_ec.h
index 5576bcf..4771e6b 100644
--- a/include/cros_ec.h
+++ b/include/cros_ec.h
@@ -96,10 +96,12 @@
* Read the hash of the CROS-EC device firmware.
*
* @param dev CROS-EC device
+ * @param hash_offset Offset in flash to read from
* @param hash Destination for hash information
* @return 0 if ok, <0 on error
*/
-int cros_ec_read_hash(struct udevice *dev, struct ec_response_vboot_hash *hash);
+int cros_ec_read_hash(struct udevice *dev, uint hash_offset,
+ struct ec_response_vboot_hash *hash);
/**
* Send a reboot command to the CROS-EC device.