diff options
author | Bruce <Bruce.Wan@quantatw.com> | 2017-03-09 19:52:56 +0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2017-03-09 15:54:50 +0000 |
commit | 0d4ba5333a0ab58ded46a57a8d2a73f6eb4226f5 (patch) | |
tree | d333ff407e017503c9926c63d9b2a526c55c7e63 | |
parent | 74517e4b11670ba2ea25751dc0a147f17a2e2d39 (diff) | |
download | chrome-ec-0d4ba5333a0ab58ded46a57a8d2a73f6eb4226f5.tar.gz |
reks: add battery firmware update support
Add battery firmware update support.
BUG=b:36048904
BRANCH=reks
TEST=check firmware update normally.
Change-Id: Ib93e09a64c069a50929934f9916f825c143becc4
Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/452103
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Commit-Queue: Keith Tzeng <keith.tzeng@quantatw.com>
Tested-by: Keith Tzeng <keith.tzeng@quantatw.com>
-rw-r--r-- | board/reks/board.h | 5 | ||||
-rw-r--r-- | common/charge_state_v2.c | 8 | ||||
-rw-r--r-- | common/smbus.c | 20 |
3 files changed, 15 insertions, 18 deletions
diff --git a/board/reks/board.h b/board/reks/board.h index 08659323d9..38326d7278 100644 --- a/board/reks/board.h +++ b/board/reks/board.h @@ -84,6 +84,11 @@ #define I2C_PORT_CHARGER MEC1322_I2C0_0 #define I2C_PORT_THERMAL MEC1322_I2C3 +/* battery firmware update */ +#define CONFIG_CRC8 +#define CONFIG_SB_FIRMWARE_UPDATE +#define CONFIG_SMBUS + /* ADC signal */ enum adc_channel { /* Number of ADC channels */ diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index e62d08fe4b..68e60327dd 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -118,6 +118,7 @@ static int update_static_battery_info(void) { char *batt_str; int batt_serial; + char temp[32]; /* * The return values have type enum ec_error_list, but EC_SUCCESS is * zero. We'll just look for any failures so we can try them all again. @@ -146,15 +147,18 @@ static int update_static_battery_info(void) /* Cycle Count */ rv |= battery_cycle_count((int *)host_get_memmap(EC_MEMMAP_BATT_CCNT)); + /* TODO(crosbug.com/p/576911): Fix our broken smbus driver */ /* Battery Manufacturer string */ batt_str = (char *)host_get_memmap(EC_MEMMAP_BATT_MFGR); + battery_manufacturer_name(temp, sizeof(temp)); memset(batt_str, 0, EC_MEMMAP_TEXT_MAX); - rv |= battery_manufacturer_name(batt_str, EC_MEMMAP_TEXT_MAX); + memcpy(batt_str, temp, EC_MEMMAP_TEXT_MAX-1); /* Battery Model string */ batt_str = (char *)host_get_memmap(EC_MEMMAP_BATT_MODEL); + battery_device_name(temp, sizeof(temp)); memset(batt_str, 0, EC_MEMMAP_TEXT_MAX); - rv |= battery_device_name(batt_str, EC_MEMMAP_TEXT_MAX); + memcpy(batt_str, temp, EC_MEMMAP_TEXT_MAX-1); /* Battery Type string */ batt_str = (char *)host_get_memmap(EC_MEMMAP_BATT_TYPE); diff --git a/common/smbus.c b/common/smbus.c index ea7ece7d59..aaa7401a78 100644 --- a/common/smbus.c +++ b/common/smbus.c @@ -57,12 +57,10 @@ static int smbus_if_write(int i2c_port, struct smbus_wr_if *intf, intf->data[n-1] = crc8((const uint8_t *)intf, n - 1 + sizeof(struct smbus_wr_if)); i2c_lock(i2c_port, 1); - rv = i2c_is_busy(i2c_port); - if (!rv) - rv = i2c_xfer(i2c_port, intf->slave_addr, - &intf->smbus_cmd, n + 1, NULL, 0, I2C_XFER_SINGLE); - else - rv = EC_ERROR_BUSY; + + rv = i2c_xfer(i2c_port, intf->slave_addr, + &intf->smbus_cmd, n + 1, NULL, 0, I2C_XFER_SINGLE); + i2c_lock(i2c_port, 0); if (rv) CPRINTF("smbus wr i2c_xfer error:%d cmd:%02X n:%d\n", @@ -93,16 +91,6 @@ static int smbus_if_read(int i2c_port, struct smbus_rd_if *intf, i2c_lock(i2c_port, 1); - /* Check if smbus is busy */ - rv = i2c_is_busy(i2c_port); - if (rv) { - rv = EC_ERROR_BUSY; - CPRINTF("smbus_cmd:%02X bus busy error:%d\n", - intf->smbus_cmd, rv); - i2c_lock(i2c_port, 0); - return rv; - } - rv = i2c_xfer(i2c_port, intf->slave_addr, &(intf->smbus_cmd), 1, intf->data, n, I2C_XFER_SINGLE); |