summaryrefslogtreecommitdiff
path: root/util/ec_flash.c
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2013-06-27 14:42:39 -0700
committerChromeBot <chrome-bot@google.com>2013-07-01 16:14:15 -0700
commit2730daa5679bc0d2a048a60055a7dc89d060076e (patch)
tree8b8326fb10cf694ab551d955bd8c1bcb8ecff1cc /util/ec_flash.c
parent267dbb74d28e4d5d13e892488563ab439398513d (diff)
downloadchrome-ec-2730daa5679bc0d2a048a60055a7dc89d060076e.tar.gz
Comm interface now provides max I/O sizes and preallocated buffers
The maximum packet / param size differs depending on interface and protocol version. Commands can now ask the comm interface what the limits are, and can use preallocated buffers to avoid needless malloc/free. BUG=chrome-os-partner:20571 BRANCH=none TEST=the following all work on link burn_my_ec ectool version ectool chargedump ectool console ectool i2cxfer 5 0x41 2 Change-Id: Ib847994da3f79721e7fb4e347231b9147a3f485f Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/60275
Diffstat (limited to 'util/ec_flash.c')
-rw-r--r--util/ec_flash.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/util/ec_flash.c b/util/ec_flash.c
index f776240e58..0c9c698600 100644
--- a/util/ec_flash.c
+++ b/util/ec_flash.c
@@ -15,22 +15,20 @@
int ec_flash_read(uint8_t *buf, int offset, int size)
{
struct ec_params_flash_read p;
- /* TODO(rspangler): need better way to determine max read size */
- uint8_t rdata[EC_HOST_PARAM_SIZE - sizeof(struct ec_host_response)];
int rv;
int i;
/* Read data in chunks */
- for (i = 0; i < size; i += sizeof(rdata)) {
+ for (i = 0; i < size; i += ec_max_insize) {
p.offset = offset + i;
- p.size = MIN(size - i, sizeof(rdata));
+ p.size = MIN(size - i, ec_max_insize);
rv = ec_command(EC_CMD_FLASH_READ, 0,
- &p, sizeof(p), rdata, sizeof(rdata));
+ &p, sizeof(p), ec_inbuf, p.size);
if (rv < 0) {
fprintf(stderr, "Read error at offset %d\n", i);
return rv;
}
- memcpy(buf + i, rdata, p.size);
+ memcpy(buf + i, ec_inbuf, p.size);
}
return 0;