diff options
author | Tommy Chung <tommy.chung@quanta.corp-partner.google.com> | 2021-10-14 09:15:15 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-10-28 00:55:53 +0000 |
commit | db63fb74ee0e4bc7c611033851759b41f44642fd (patch) | |
tree | 6276721df14d5b7466d7e4aae1de4f8a2c8c929e | |
parent | aa800465e8aa894086369cfc6df87341b179ce7d (diff) | |
download | chrome-ec-db63fb74ee0e4bc7c611033851759b41f44642fd.tar.gz |
battery: Move battery get/set vendor param to common/battery.c
Since the functions are copied by many boards, move them to common.
The specific param regs are defined in each specific boards.
BUG=b:203031618
BRANCH=none
TEST=make BOARD=burnet/coachz/eve/homestar/kappa/mrbland/quackingstick/
wormdingler.
Signed-off-by: Tommy Chung <tommy.chung@quanta.corp-partner.google.com>
Change-Id: I77c070663ad3e800ec484bd21865c5d911a2c48b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3220718
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
-rw-r--r-- | board/burnet/battery.c | 6 | ||||
-rw-r--r-- | board/burnet/board.c | 22 | ||||
-rw-r--r-- | board/burnet/board.h | 2 | ||||
-rw-r--r-- | board/coachz/battery.c | 4 | ||||
-rw-r--r-- | board/coachz/board.c | 22 | ||||
-rw-r--r-- | board/eve/battery.c | 4 | ||||
-rw-r--r-- | board/homestar/battery.c | 6 | ||||
-rw-r--r-- | board/homestar/board.c | 22 | ||||
-rw-r--r-- | board/kappa/battery.c | 2 | ||||
-rw-r--r-- | board/kappa/board.c | 22 | ||||
-rw-r--r-- | board/kappa/board.h | 2 | ||||
-rw-r--r-- | board/mrbland/battery.c | 3 | ||||
-rw-r--r-- | board/mrbland/board.c | 22 | ||||
-rw-r--r-- | board/mrbland/board.h | 3 | ||||
-rw-r--r-- | board/quackingstick/battery.c | 2 | ||||
-rw-r--r-- | board/quackingstick/board.c | 22 | ||||
-rw-r--r-- | board/wormdingler/battery.c | 2 | ||||
-rw-r--r-- | board/wormdingler/board.c | 22 | ||||
-rw-r--r-- | board/wormdingler/board.h | 3 | ||||
-rw-r--r-- | common/battery.c | 32 | ||||
-rw-r--r-- | include/battery.h | 10 |
21 files changed, 71 insertions, 164 deletions
diff --git a/board/burnet/battery.c b/board/burnet/battery.c index 35a2ebc7df..2a465df227 100644 --- a/board/burnet/battery.c +++ b/board/burnet/battery.c @@ -34,6 +34,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* Dynapack CosMX Battery Information */ @@ -62,6 +63,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* Simplo CosMX Battery Information */ @@ -90,6 +92,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* Simplo HIGHPOWER Battery Information */ @@ -118,6 +121,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* Samsung SDI Battery Information */ @@ -146,6 +150,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* CosMX Battery Information */ @@ -174,6 +179,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, }; diff --git a/board/burnet/board.c b/board/burnet/board.c index d932624b0a..f98955a19d 100644 --- a/board/burnet/board.c +++ b/board/burnet/board.c @@ -567,25 +567,3 @@ static void board_chipset_shutdown(void) gpio_set_level(GPIO_EN_USBA_5V, 0); } DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_chipset_shutdown, HOOK_PRIO_DEFAULT); - -int battery_get_vendor_param(uint32_t param, uint32_t *value) -{ - int rv; - uint8_t data[16] = {}; - - /* only allow reading 0x70~0x7F, 16 byte data */ - if (param < 0x70 || param >= 0x80) - return EC_ERROR_ACCESS_DENIED; - - rv = sb_read_string(0x70, data, sizeof(data)); - if (rv) - return rv; - - *value = data[param - 0x70]; - return EC_SUCCESS; -} - -int battery_set_vendor_param(uint32_t param, uint32_t value) -{ - return EC_ERROR_UNIMPLEMENTED; -} diff --git a/board/burnet/board.h b/board/burnet/board.h index 009da83ac5..e1235fc4ac 100644 --- a/board/burnet/board.h +++ b/board/burnet/board.h @@ -24,6 +24,8 @@ #define CONFIG_BATTERY_HW_PRESENT_CUSTOM #define CONFIG_BATTERY_VENDOR_PARAM +#define CONFIG_BATTERY_V2 +#define CONFIG_BATTERY_COUNT 1 #define CONFIG_CHARGER_PSYS diff --git a/board/coachz/battery.c b/board/coachz/battery.c index 56c89b655b..a5be64df0f 100644 --- a/board/coachz/battery.c +++ b/board/coachz/battery.c @@ -60,6 +60,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* COSMX GH02047XL */ @@ -89,6 +90,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* COSMX DS02032XL */ @@ -118,6 +120,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* SMP DS02032XL */ @@ -147,6 +150,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, }; diff --git a/board/coachz/board.c b/board/coachz/board.c index d1f31a64c3..81a749c1d1 100644 --- a/board/coachz/board.c +++ b/board/coachz/board.c @@ -718,25 +718,3 @@ uint16_t tcpc_get_alert_status(void) return status; } - -int battery_get_vendor_param(uint32_t param, uint32_t *value) -{ - int rv; - uint8_t data[16] = {}; - - /* only allow reading 0x70~0x7F, 16 byte data */ - if (param < 0x70 || param >= 0x80) - return EC_ERROR_ACCESS_DENIED; - - rv = sb_read_string(0x70, data, sizeof(data)); - if (rv) - return rv; - - *value = data[param - 0x70]; - return EC_SUCCESS; -} - -int battery_set_vendor_param(uint32_t param, uint32_t value) -{ - return EC_ERROR_UNIMPLEMENTED; -} diff --git a/board/eve/battery.c b/board/eve/battery.c index b5fb949ffe..2a505b80ec 100644 --- a/board/eve/battery.c +++ b/board/eve/battery.c @@ -607,7 +607,7 @@ static int board_battery_fix_otd_recovery_temp(uint32_t value) return EC_SUCCESS; } -int battery_get_vendor_param(uint32_t param, uint32_t *value) +__override int battery_get_vendor_param(uint32_t param, uint32_t *value) { /* * These registers can't be read directly because the flash area @@ -638,7 +638,7 @@ int battery_get_vendor_param(uint32_t param, uint32_t *value) return EC_RES_ERROR; } -int battery_set_vendor_param(uint32_t param, uint32_t value) +__override int battery_set_vendor_param(uint32_t param, uint32_t value) { switch (param) { case SB_VENDOR_PARAM_CTO_DISABLE: diff --git a/board/homestar/battery.c b/board/homestar/battery.c index b1a05809f0..a4e8f793ae 100644 --- a/board/homestar/battery.c +++ b/board/homestar/battery.c @@ -60,6 +60,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* COSMX GH02047XL */ @@ -89,6 +90,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* COSMX DS02032XL */ @@ -118,6 +120,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* SMP DS02032XL */ @@ -147,6 +150,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* Sunwoda L21D4PG0 */ @@ -176,6 +180,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 60, .discharging_min_c = -20, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* SMP L21M4PG0 */ @@ -205,6 +210,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 60, .discharging_min_c = -20, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, }; diff --git a/board/homestar/board.c b/board/homestar/board.c index 22f940eec2..47ac34af2c 100644 --- a/board/homestar/board.c +++ b/board/homestar/board.c @@ -674,25 +674,3 @@ uint16_t tcpc_get_alert_status(void) return status; } - -int battery_get_vendor_param(uint32_t param, uint32_t *value) -{ - int rv; - uint8_t data[16] = {}; - - /* only allow reading 0x70~0x7F, 16 byte data */ - if (param < 0x70 || param >= 0x80) - return EC_ERROR_ACCESS_DENIED; - - rv = sb_read_string(0x70, data, sizeof(data)); - if (rv) - return rv; - - *value = data[param - 0x70]; - return EC_SUCCESS; -} - -int battery_set_vendor_param(uint32_t param, uint32_t value) -{ - return EC_ERROR_UNIMPLEMENTED; -} diff --git a/board/kappa/battery.c b/board/kappa/battery.c index 5ae6dc9b91..7a82ed029e 100644 --- a/board/kappa/battery.c +++ b/board/kappa/battery.c @@ -34,6 +34,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* Dynapack CosMX DAK124960-W0P0707HT Battery Information */ @@ -62,6 +63,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 45, .discharging_min_c = -10, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, }; diff --git a/board/kappa/board.c b/board/kappa/board.c index a0d7cf6a4e..963ade7430 100644 --- a/board/kappa/board.c +++ b/board/kappa/board.c @@ -271,25 +271,3 @@ static void board_chipset_shutdown(void) gpio_set_level(GPIO_EN_USBA_5V, 0); } DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_chipset_shutdown, HOOK_PRIO_DEFAULT); - -int battery_get_vendor_param(uint32_t param, uint32_t *value) -{ - int rv; - uint8_t data[16] = {}; - - /* only allow reading 0x70~0x7F, 16 byte data */ - if (param < 0x70 || param >= 0x80) - return EC_ERROR_ACCESS_DENIED; - - rv = sb_read_string(0x70, data, sizeof(data)); - if (rv) - return rv; - - *value = data[param - 0x70]; - return EC_SUCCESS; -} - -int battery_set_vendor_param(uint32_t param, uint32_t value) -{ - return EC_ERROR_UNIMPLEMENTED; -} diff --git a/board/kappa/board.h b/board/kappa/board.h index 287f22416e..4fd76cf965 100644 --- a/board/kappa/board.h +++ b/board/kappa/board.h @@ -22,6 +22,8 @@ #define CONFIG_BATTERY_HW_PRESENT_CUSTOM #define CONFIG_BATTERY_VENDOR_PARAM +#define CONFIG_BATTERY_V2 +#define CONFIG_BATTERY_COUNT 1 #define CONFIG_CHARGER_PSYS diff --git a/board/mrbland/battery.c b/board/mrbland/battery.c index a99d71e7f4..ee58ff70bb 100644 --- a/board/mrbland/battery.c +++ b/board/mrbland/battery.c @@ -60,6 +60,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 60, .discharging_min_c = -20, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, /* Sunwoda L21D2PG1 */ @@ -89,6 +90,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 63, .discharging_min_c = -20, .discharging_max_c = 63, + .vendor_param_start = 0x70, }, }, /* SMP L21M2PG1 */ @@ -118,6 +120,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 60, .discharging_min_c = -20, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, }; diff --git a/board/mrbland/board.c b/board/mrbland/board.c index fc48888a55..d367b82521 100644 --- a/board/mrbland/board.c +++ b/board/mrbland/board.c @@ -626,25 +626,3 @@ uint16_t tcpc_get_alert_status(void) return status; } - -int battery_get_vendor_param(uint32_t param, uint32_t *value) -{ - int rv; - uint8_t data[16] = {}; - - /* only allow reading 0x70~0x7F, 16 byte data */ - if (param < 0x70 || param >= 0x80) - return EC_ERROR_ACCESS_DENIED; - - rv = sb_read_string(0x70, data, sizeof(data)); - if (rv) - return rv; - - *value = data[param - 0x70]; - return EC_SUCCESS; -} - -int battery_set_vendor_param(uint32_t param, uint32_t value) -{ - return EC_ERROR_UNIMPLEMENTED; -} diff --git a/board/mrbland/board.h b/board/mrbland/board.h index f4cb398c50..fe2c298d1a 100644 --- a/board/mrbland/board.h +++ b/board/mrbland/board.h @@ -31,9 +31,6 @@ #define CONFIG_BATTERY_REVIVE_DISCONNECT #define CONFIG_BATTERY_FUEL_GAUGE #define CONFIG_BATTERY_VENDOR_PARAM -#define CONFIG_BATTERY_V2 -#define CONFIG_BATTERY_COUNT 1 -#define CONFIG_HOSTCMD_BATTERY_V2 /* Enable PD3.0 */ #define CONFIG_USB_PD_REV30 diff --git a/board/quackingstick/battery.c b/board/quackingstick/battery.c index 4f97f9eeb3..43cd8b9d8b 100644 --- a/board/quackingstick/battery.c +++ b/board/quackingstick/battery.c @@ -59,6 +59,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 60, .discharging_min_c = -20, .discharging_max_c = 75, + .vendor_param_start = 0x70, }, }, /* COSMX AP21CBI Battery information */ @@ -87,6 +88,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 60, .discharging_min_c = -20, .discharging_max_c = 75, + .vendor_param_start = 0x70, }, }, }; diff --git a/board/quackingstick/board.c b/board/quackingstick/board.c index 0e8b745d97..77de13e85d 100644 --- a/board/quackingstick/board.c +++ b/board/quackingstick/board.c @@ -591,25 +591,3 @@ uint16_t tcpc_get_alert_status(void) return status; } - -int battery_get_vendor_param(uint32_t param, uint32_t *value) -{ - int rv; - uint8_t data[16] = {}; - - /* only allow reading 0x70~0x7F, 16 byte data */ - if (param < 0x70 || param >= 0x80) - return EC_ERROR_ACCESS_DENIED; - - rv = sb_read_string(0x70, data, sizeof(data)); - if (rv) - return rv; - - *value = data[param - 0x70]; - return EC_SUCCESS; -} - -int battery_set_vendor_param(uint32_t param, uint32_t value) -{ - return EC_ERROR_UNIMPLEMENTED; -} diff --git a/board/wormdingler/battery.c b/board/wormdingler/battery.c index c76bb48031..bb444e59ee 100644 --- a/board/wormdingler/battery.c +++ b/board/wormdingler/battery.c @@ -60,6 +60,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 63, .discharging_min_c = -20, .discharging_max_c = 63, + .vendor_param_start = 0x70, }, }, /* BYD L21B2PG2 */ @@ -89,6 +90,7 @@ const struct board_batt_params board_battery_info[] = { .charging_max_c = 60, .discharging_min_c = -20, .discharging_max_c = 60, + .vendor_param_start = 0x70, }, }, }; diff --git a/board/wormdingler/board.c b/board/wormdingler/board.c index 796409cb80..d8bc04e4fd 100644 --- a/board/wormdingler/board.c +++ b/board/wormdingler/board.c @@ -668,25 +668,3 @@ uint16_t tcpc_get_alert_status(void) return status; } - -int battery_get_vendor_param(uint32_t param, uint32_t *value) -{ - int rv; - uint8_t data[16] = {}; - - /* only allow reading 0x70~0x7F, 16 byte data */ - if (param < 0x70 || param >= 0x80) - return EC_ERROR_ACCESS_DENIED; - - rv = sb_read_string(0x70, data, sizeof(data)); - if (rv) - return rv; - - *value = data[param - 0x70]; - return EC_SUCCESS; -} - -int battery_set_vendor_param(uint32_t param, uint32_t value) -{ - return EC_ERROR_UNIMPLEMENTED; -} diff --git a/board/wormdingler/board.h b/board/wormdingler/board.h index af0b5ee80d..ee24d0db8d 100644 --- a/board/wormdingler/board.h +++ b/board/wormdingler/board.h @@ -31,9 +31,6 @@ #define CONFIG_BATTERY_REVIVE_DISCONNECT #define CONFIG_BATTERY_FUEL_GAUGE #define CONFIG_BATTERY_VENDOR_PARAM -#define CONFIG_BATTERY_V2 -#define CONFIG_BATTERY_COUNT 1 -#define CONFIG_HOSTCMD_BATTERY_V2 /* Enable PD3.0 */ #define CONFIG_USB_PD_REV30 diff --git a/common/battery.c b/common/battery.c index 6339573d2e..01478d5b52 100644 --- a/common/battery.c +++ b/common/battery.c @@ -395,6 +395,38 @@ int battery_is_cut_off(void) #endif /* CONFIG_BATTERY_CUT_OFF */ #ifdef CONFIG_BATTERY_VENDOR_PARAM +__overridable int battery_get_vendor_param(uint32_t param, uint32_t *value) +{ + const struct battery_info *bi = battery_get_info(); + struct battery_static_info *bs = &battery_static[BATT_IDX_MAIN]; + uint8_t *data = bs->vendor_param; + int rv; + + if (param < bi->vendor_param_start) + return EC_ERROR_ACCESS_DENIED; + + /* Skip read if cache is valid. */ + if (!data[0]) { + rv = sb_read_string(bi->vendor_param_start, data, + sizeof(bs->vendor_param)); + if (rv) { + data[0] = 0; + return rv; + } + } + + if (param > bi->vendor_param_start + strlen(data)) + return EC_ERROR_INVAL; + + *value = data[param - bi->vendor_param_start]; + return EC_SUCCESS; +} + +__overridable int battery_set_vendor_param(uint32_t param, uint32_t value) +{ + return EC_ERROR_UNIMPLEMENTED; +} + static int console_command_battery_vendor_param(int argc, char **argv) { uint32_t param; diff --git a/include/battery.h b/include/battery.h index 38ca2da91e..27e678c0ba 100644 --- a/include/battery.h +++ b/include/battery.h @@ -89,6 +89,9 @@ struct battery_static_info { char model_ext[32]; /* SB_DEVICE_NAME */ char serial_ext[32]; /* SB_SERIAL_NUMBER */ char type_ext[32]; /* SB_DEVICE_CHEMISTRY */ +#ifdef CONFIG_BATTERY_VENDOR_PARAM + uint8_t vendor_param[32]; +#endif }; extern struct battery_static_info battery_static[]; @@ -165,6 +168,9 @@ struct battery_info { int8_t charging_max_c; int8_t discharging_min_c; int8_t discharging_max_c; +#ifdef CONFIG_BATTERY_VENDOR_PARAM + uint8_t vendor_param_start; +#endif }; /** @@ -415,7 +421,7 @@ int battery_is_cut_off(void); * @param value Location to store retrieved value. * @return non-zero if error. */ -int battery_get_vendor_param(uint32_t param, uint32_t *value); +__override_proto int battery_get_vendor_param(uint32_t param, uint32_t *value); /** * Write battery vendor parameter. @@ -426,7 +432,7 @@ int battery_get_vendor_param(uint32_t param, uint32_t *value); * @param value Value to write to the battery. * @return non-zero if error. */ -int battery_set_vendor_param(uint32_t param, uint32_t value); +__override_proto int battery_set_vendor_param(uint32_t param, uint32_t value); /** * Wait for battery stable. |