cros_ec: Update cros_ec_read_hash() to specify the image
authorSimon Glass <sjg@chromium.org>
Mon, 1 Oct 2018 18:22:38 +0000 (12:22 -0600)
committerSimon Glass <sjg@chromium.org>
Tue, 9 Oct 2018 10:40:27 +0000 (04:40 -0600)
Allow selection of which EC image to hash.

Signed-off-by: Simon Glass <sjg@chromium.org>
cmd/cros_ec.c
drivers/misc/cros_ec.c
include/cros_ec.h

index 3ac4f3b..9e2f1b0 100644 (file)
@@ -149,7 +149,7 @@ static int do_cros_ec(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                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;
                }
index 07e662a..190505c 100644 (file)
@@ -444,13 +444,14 @@ static int cros_ec_wait_on_hash_done(struct udevice *dev,
        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 @@ int cros_ec_read_hash(struct udevice *dev, struct ec_response_vboot_hash *hash)
        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)
index 5576bcf..4771e6b 100644 (file)
@@ -96,10 +96,12 @@ int cros_ec_read_current_image(struct udevice *dev,
  * 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.