From b95d79b7e496390f6c9cc6f0813685cce286132e Mon Sep 17 00:00:00 2001 From: Furquan Shaikh Date: Mon, 15 Jul 2019 15:57:32 -0700 Subject: baseboard/hatch: Allow hatch variant to provide battery present info In case of some hatch variants, there might be a need to identify battery hardware presence using custom method i.e. GPIO_EC_BATT_PRES_ODL might not work correctly. In order to accommodate these variants, this change provides a callback variant_battery_present() that allows variant to provide its own implementation if required. By default, a weak implementation is provided which returns BP_NOT_SURE to use the default GPIO for reading battery present state. BUG=b:135278000 BRANCH=None TEST=None Change-Id: I8504e807cff853dc3276d76a0cd3db1ccb587b9e Signed-off-by: Furquan Shaikh Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1702869 Reviewed-by: Tim Wawrzynczak Reviewed-by: YongBeum Ha Reviewed-by: Philip Chen Tested-by: YongBeum Ha Tested-by: Furquan Shaikh Commit-Queue: Furquan Shaikh --- baseboard/hatch/baseboard.h | 4 ++++ baseboard/hatch/battery.c | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/baseboard/hatch/baseboard.h b/baseboard/hatch/baseboard.h index 38e414ad2c..5c096863c1 100644 --- a/baseboard/hatch/baseboard.h +++ b/baseboard/hatch/baseboard.h @@ -177,6 +177,10 @@ enum mst_source { void board_reset_pd_mcu(void); void baseboard_mst_enable_control(enum mst_source, int level); + +/* Check with variant about battery presence. */ +enum battery_present variant_battery_present(void); + #endif /* !__ASSEMBLER__ */ #endif /* __CROS_EC_BASEBOARD_H */ diff --git a/baseboard/hatch/battery.c b/baseboard/hatch/battery.c index 28c57471e6..063aa3721d 100644 --- a/baseboard/hatch/battery.c +++ b/baseboard/hatch/battery.c @@ -13,8 +13,18 @@ static enum battery_present batt_pres_prev = BP_NOT_SURE; +enum battery_present __attribute__((weak)) variant_battery_present(void) +{ + return BP_NOT_SURE; +} + enum battery_present battery_hw_present(void) { + enum battery_present bp = variant_battery_present(); + + if (bp != BP_NOT_SURE) + return bp; + return gpio_get_level(GPIO_EC_BATT_PRES_ODL) ? BP_NO : BP_YES; } -- cgit v1.2.1