summaryrefslogtreecommitdiff
path: root/driver/battery/max17055.c
diff options
context:
space:
mode:
authorYilun Lin <yllin@google.com>2018-10-11 15:13:39 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-10-12 11:43:26 -0700
commit6ef20c4cf5ca6cf17b1b539f30912bf6e8d19030 (patch)
tree465a772ca6c2e1ab1750bb8666b3cad98d9fa674 /driver/battery/max17055.c
parentc640f67e04b87fb30f05686c49e2337fba058b08 (diff)
downloadchrome-ec-6ef20c4cf5ca6cf17b1b539f30912bf6e8d19030.tar.gz
max17055: Support alert function.
MAX17055 support 4 kinds of alert: voltage, current, state-of-charge, and temperatore. This CL enables this functionality. datasheet: https://datasheets.maximintegrated.com/en/ds/MAX17055.pdf TEST=manually test on Kukui. BUG=b:111378620 BRANCH=None Change-Id: I94126fdc541f9456c8f48f42383bc6e2188257e2 Signed-off-by: Yilun Lin <yllin@google.com> Reviewed-on: https://chromium-review.googlesource.com/1276006 Commit-Ready: Yilun Lin <yllin@chromium.org> Tested-by: Yilun Lin <yllin@chromium.org> Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
Diffstat (limited to 'driver/battery/max17055.c')
-rw-r--r--driver/battery/max17055.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/driver/battery/max17055.c b/driver/battery/max17055.c
index 07ecc473dd..9cdd107d20 100644
--- a/driver/battery/max17055.c
+++ b/driver/battery/max17055.c
@@ -423,6 +423,10 @@ static void max17055_init(void)
{
int reg;
int retries = 80;
+#ifdef CONFIG_BATTERY_MAX17055_ALERT
+ const struct max17055_alert_profile *alert_profile =
+ max17055_get_alert_profile();
+#endif
if (!max17055_probe()) {
CPRINTS("Wrong max17055 id!");
@@ -481,6 +485,25 @@ static void max17055_init(void)
}
}
+#ifdef CONFIG_BATTERY_MAX17055_ALERT
+ /* Set voltage alert range */
+ MAX17055_WRITE_DEBUG(REG_VALRTTH, alert_profile->v_alert_mxmn);
+ /* Set temperature alert range */
+ MAX17055_WRITE_DEBUG(REG_TALRTTH, alert_profile->t_alert_mxmn);
+ /* Set state-of-charge alert range */
+ MAX17055_WRITE_DEBUG(REG_SALRTTH, alert_profile->s_alert_mxmn);
+ /* Set current alert range */
+ MAX17055_WRITE_DEBUG(REG_IALRTTH, alert_profile->i_alert_mxmn);
+
+ /* Disable all sticky bits; enable alert AEN */
+ MAX17055_READ_DEBUG(REG_CONFIG, &reg);
+ MAX17055_WRITE_DEBUG(REG_CONFIG, (reg & ~CONF_ALL_STICKY) | CONF_AEN);
+
+ /* Clear alerts */
+ MAX17055_READ_DEBUG(REG_STATUS, &reg);
+ MAX17055_WRITE_DEBUG(REG_STATUS, reg & ~STATUS_ALL_ALRT);
+#endif
+
CPRINTS("max17055 configuration succeeded!");
}
DECLARE_HOOK(HOOK_INIT, max17055_init, HOOK_PRIO_DEFAULT);