diff options
author | Yilun Lin <yllin@google.com> | 2018-10-11 15:13:39 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-10-12 11:43:26 -0700 |
commit | 6ef20c4cf5ca6cf17b1b539f30912bf6e8d19030 (patch) | |
tree | 465a772ca6c2e1ab1750bb8666b3cad98d9fa674 /driver/battery/max17055.c | |
parent | c640f67e04b87fb30f05686c49e2337fba058b08 (diff) | |
download | chrome-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.c | 23 |
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, ®); + MAX17055_WRITE_DEBUG(REG_CONFIG, (reg & ~CONF_ALL_STICKY) | CONF_AEN); + + /* Clear alerts */ + MAX17055_READ_DEBUG(REG_STATUS, ®); + MAX17055_WRITE_DEBUG(REG_STATUS, reg & ~STATUS_ALL_ALRT); +#endif + CPRINTS("max17055 configuration succeeded!"); } DECLARE_HOOK(HOOK_INIT, max17055_init, HOOK_PRIO_DEFAULT); |