From 357bd977d1bdc5dd61a2a1fcc6f08ee6f97de6d0 Mon Sep 17 00:00:00 2001 From: Wai-Hong Tam Date: Wed, 15 Jul 2020 14:38:30 -0700 Subject: battery: Fix obtaining battery manufacture date * Fix the typo: should be SB_MANUFACTURE_DATE (manufacture without r) * Fix the register, i.e. SB_MANUFACTURE_DATE, not SB_SPECIFICATION_INFO * Fix the format parsing. The LSB of year is bit-9, not bit-8. BRANCH=None BUG=b:160784792 TEST=With the later CL, checked the manufacture date. Change-Id: I5b5f2bfefec4bbe700bb1ec0d9d6048123f4ad16 Signed-off-by: Wai-Hong Tam Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2300688 Reviewed-by: Douglas Anderson (cherry picked from commit a5a82418126ee6cadff69d9487c43edc1ccea097) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3154563 Reviewed-by: Jack Rosenthal Commit-Queue: Brian Norris Tested-by: Brian Norris --- driver/battery/smart.c | 10 +++++----- include/battery_smart.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/driver/battery/smart.c b/driver/battery/smart.c index 743ebc1ee1..2c67de9030 100644 --- a/driver/battery/smart.c +++ b/driver/battery/smart.c @@ -251,16 +251,16 @@ test_mockable int battery_manufacture_date(int *year, int *month, int *day) int rv; int ymd; - rv = sb_read(SB_SPECIFICATION_INFO, &ymd); + rv = sb_read(SB_MANUFACTURE_DATE, &ymd); if (rv) return rv; /* battery date format: - * ymd = day + month * 32 + (year - 1980) * 256 + * ymd = day + month * 32 + (year - 1980) * 512 */ - *year = (ymd >> 8) + 1980; - *month = (ymd & 0xff) / 32; - *day = (ymd & 0xff) % 32; + *year = (ymd >> 9) + 1980; + *month = (ymd >> 5) & 0xf; + *day = ymd & 0x1f; return EC_SUCCESS; } diff --git a/include/battery_smart.h b/include/battery_smart.h index 1cbcf295f1..713a1059a1 100644 --- a/include/battery_smart.h +++ b/include/battery_smart.h @@ -50,7 +50,7 @@ #define SB_DESIGN_CAPACITY 0x18 #define SB_DESIGN_VOLTAGE 0x19 #define SB_SPECIFICATION_INFO 0x1a -#define SB_MANUFACTURER_DATE 0x1b +#define SB_MANUFACTURE_DATE 0x1b #define SB_SERIAL_NUMBER 0x1c #define SB_MANUFACTURER_NAME 0x20 #define SB_DEVICE_NAME 0x21 -- cgit v1.2.1