summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorDonald Huang <donald.huang@ite.com.tw>2018-08-30 17:09:26 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-09-03 02:20:50 -0700
commit8722da89f2c75ae13fbdc991833f4c07e8e22df2 (patch)
tree8e3e5f83409e808ffb314220e23256a6e55c2cde /util
parentc355ba59732e25a4c8bff89e63e89f0faafa8afc (diff)
downloadchrome-ec-8722da89f2c75ae13fbdc991833f4c07e8e22df2.tar.gz
iteflash : fix program page address
The original program only assign the eflash high byte address. Filled the eflash address for high byte, mid byte , low byte. BUG=none BRANCH=none TEST=1.make -j BOARD=reef_it8320 2.sudo servod -b reef & 3.~/trunk/src/platform/ec/util/flash_ec --board=reef_it8320 It also test ok with different block size as below. Change-Id: I7c27836b667b078e88e0a12a3ea79c97f3de38e3 Signed-off-by: Donald Huang <donald.huang@ite.com.tw> Reviewed-on: https://chromium-review.googlesource.com/1195309 Commit-Ready: Donald Huang <cguwinds@gmail.com> Tested-by: Donald Huang <cguwinds@gmail.com> Tested-by: Matthew Blecker <matthewb@chromium.org> Reviewed-by: Matthew Blecker <matthewb@chromium.org>
Diffstat (limited to 'util')
-rw-r--r--util/iteflash.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/util/iteflash.c b/util/iteflash.c
index a93e98d33e..78f3ff35f3 100644
--- a/util/iteflash.c
+++ b/util/iteflash.c
@@ -695,7 +695,7 @@ int command_write_pages(struct ftdi_context *ftdi, uint32_t address,
int res = -EIO;
uint32_t remaining = size;
int cnt;
- uint8_t page;
+ uint8_t addr_H, addr_M, addr_L;
uint8_t cmd;
if (spi_flash_follow_mode(ftdi, "AAI write") < 0)
@@ -704,7 +704,9 @@ int command_write_pages(struct ftdi_context *ftdi, uint32_t address,
while (remaining) {
cnt = (remaining > BLOCK_WRITE_SIZE) ?
BLOCK_WRITE_SIZE : remaining;
- page = address / BLOCK_WRITE_SIZE;
+ addr_H = (address >> 16) & 0xFF;
+ addr_M = (address >> 8) & 0xFF;
+ addr_L = (address) & 0xFF;
draw_spinner(remaining, size);
@@ -722,11 +724,10 @@ int command_write_pages(struct ftdi_context *ftdi, uint32_t address,
"AAI write") < 0)
goto failed_write;
- /* Set page */
- cmd = 0;
- res = i2c_byte_transfer(ftdi, I2C_DATA_ADDR, &page, 1, 1);
- res |= i2c_byte_transfer(ftdi, I2C_DATA_ADDR, &cmd, 1, 1);
- res |= i2c_byte_transfer(ftdi, I2C_DATA_ADDR, &cmd, 1, 1);
+ /* Set eflash page address */
+ res = i2c_byte_transfer(ftdi, I2C_DATA_ADDR, &addr_H, 1, 1);
+ res |= i2c_byte_transfer(ftdi, I2C_DATA_ADDR, &addr_M, 1, 1);
+ res |= i2c_byte_transfer(ftdi, I2C_DATA_ADDR, &addr_L, 1, 1);
if (res < 0) {
fprintf(stderr, "Flash write set page FAILED (%d)\n",
res);