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>
lime2-spi
Simon Glass 6 years ago
parent 590cee8315
commit a12ef7e26a
  1. 2
      cmd/cros_ec.c
  2. 7
      drivers/misc/cros_ec.c
  3. 4
      include/cros_ec.h

@ -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; struct ec_response_vboot_hash hash;
int i; 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__); debug("%s: Could not read KBC hash\n", __func__);
return 1; return 1;
} }

@ -444,13 +444,14 @@ static int cros_ec_wait_on_hash_done(struct udevice *dev,
return 0; return 0;
} }
int cros_ec_read_hash(struct udevice *dev, uint hash_offset,
int cros_ec_read_hash(struct udevice *dev, struct ec_response_vboot_hash *hash) struct ec_response_vboot_hash *hash)
{ {
struct ec_params_vboot_hash p; struct ec_params_vboot_hash p;
int rv; int rv;
p.cmd = EC_VBOOT_HASH_GET; p.cmd = EC_VBOOT_HASH_GET;
p.offset = hash_offset;
if (ec_command(dev, EC_CMD_VBOOT_HASH, 0, &p, sizeof(p), if (ec_command(dev, EC_CMD_VBOOT_HASH, 0, &p, sizeof(p),
hash, sizeof(*hash)) < 0) hash, sizeof(*hash)) < 0)
return -1; 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.cmd = EC_VBOOT_HASH_START;
p.hash_type = EC_VBOOT_HASH_TYPE_SHA256; p.hash_type = EC_VBOOT_HASH_TYPE_SHA256;
p.nonce_size = 0; 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), if (ec_command(dev, EC_CMD_VBOOT_HASH, 0, &p, sizeof(p),
hash, sizeof(*hash)) < 0) hash, sizeof(*hash)) < 0)

@ -96,10 +96,12 @@ int cros_ec_read_current_image(struct udevice *dev,
* Read the hash of the CROS-EC device firmware. * Read the hash of the CROS-EC device firmware.
* *
* @param dev CROS-EC device * @param dev CROS-EC device
* @param hash_offset Offset in flash to read from
* @param hash Destination for hash information * @param hash Destination for hash information
* @return 0 if ok, <0 on error * @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. * Send a reboot command to the CROS-EC device.

Loading…
Cancel
Save