summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSheng-Liang Song <ssl@chromium.org>2014-10-08 15:39:40 -0700
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-10-09 03:02:11 +0000
commitf7aaa41451104fb4b4f81e53ed95784023bd1da4 (patch)
treed133e3b04e2d6e2ec78ea08611b09a72398289b5
parent5eca9c3dc67d45eb9a4854b7ce92ee9588081dc4 (diff)
downloadchrome-ec-f7aaa41451104fb4b4f81e53ed95784023bd1da4.tar.gz
glimmer: Fixed Get Battery Model Name
Root Cause: 1. smbus crc8 checking logic was added recently. 2. SMP Battery Model is "LNV-45N1751", that is greater than 8 bytes. battery_manufacturer_name hard code 8 byte in length parameter. It failed the smbus crc8 checking on read. So, a "NULL" is returned. However, our current EC memory map only supports 8 bytes for model number. EC_MEMMAP_TEXT_MAX should be increased in main branch in the future. For Glimmer branch, a quick fix is applied--only copy and return the beginning 7 bytes of Model Name. It keeps the same model string as before. BUG=chrome-os-partner:32761 BRANCH=Glimmer Firmware Branch TEST=Run ectool from linux shell. Change-Id: I47e8272625ffcebdefeb28f928237c1800831ba1 Signed-off-by: Sheng-liang Song <ssl@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/222403 Reviewed-by: Alec Berg <alecaberg@chromium.org>
-rw-r--r--common/charge_state.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/common/charge_state.c b/common/charge_state.c
index 8e16c61aa2..b901c9224e 100644
--- a/common/charge_state.c
+++ b/common/charge_state.c
@@ -66,6 +66,7 @@ static void update_battery_info(void)
{
char *batt_str;
int batt_serial;
+ char temp[32];
/* Design Capacity of Full */
battery_design_capacity((int *)host_get_memmap(EC_MEMMAP_BATT_DCAP));
@@ -82,13 +83,15 @@ static void update_battery_info(void)
/* 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);
- 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);
- 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);