summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYilun Lin <yllin@google.com>2018-10-09 18:01:17 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-11-01 10:02:18 -0700
commitcad8fea56739f0050272426b7481db79cae07d73 (patch)
tree685769b726c6a10c11893f3fcfb4463611d201ef
parent78c4b5277f437435fafeebb79ca7d349a966177b (diff)
downloadchrome-ec-cad8fea56739f0050272426b7481db79cae07d73.tar.gz
kukui: Enable gauge_interrupt.
Kukui has a pin out from battery pack to MAX17055 to sense battery temperature. If the temp is over the limit, MAX17055 sends alert to trigger charger task in time to prevent a damaged battery. TEST=manually set temperature upper limit to 30 Celcius degree, and see that when the battery temperature reaches 30 C, GAUGE_INT_ODL is asserted, and charger_task is woken up. BUG=b:111378620 BRANCH=None Change-Id: Id0718e210c8082bb280c62545a5ec75b3db8c6c2 Signed-off-by: Yilun Lin <yllin@google.com> Reviewed-on: https://chromium-review.googlesource.com/1270403 Commit-Ready: Yilun Lin <yllin@chromium.org> Tested-by: Yilun Lin <yllin@chromium.org> Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
-rw-r--r--board/kukui/battery.c28
-rw-r--r--board/kukui/board.c6
-rw-r--r--board/kukui/board.h1
3 files changed, 31 insertions, 4 deletions
diff --git a/board/kukui/battery.c b/board/kukui/battery.c
index b030845e1a..0c875d0032 100644
--- a/board/kukui/battery.c
+++ b/board/kukui/battery.c
@@ -22,6 +22,9 @@
/* We have only one battery now. */
#define BATT_ID 0
+#define BATTERY_SIMPLO_CHARGE_MIN_TEMP 0
+#define BATTERY_SIMPLO_CHARGE_MAX_TEMP 60
+
enum battery_type {
BATTERY_SIMPLO = 0,
BATTERY_COUNT
@@ -51,6 +54,17 @@ static const struct max17055_batt_profile batt_profile[] = {
},
};
+static const struct max17055_alert_profile alert_profile[] = {
+ [BATTERY_SIMPLO] = {
+ .v_alert_mxmn = VALRT_DISABLE,
+ .t_alert_mxmn = MAX17055_TALRTTH_REG(
+ BATTERY_SIMPLO_CHARGE_MAX_TEMP,
+ BATTERY_SIMPLO_CHARGE_MIN_TEMP),
+ .s_alert_mxmn = SALRT_DISABLE,
+ .i_alert_mxmn = IALRT_DISABLE,
+ },
+};
+
const struct battery_info *battery_get_info(void)
{
return &info[BATT_ID];
@@ -61,6 +75,11 @@ const struct max17055_batt_profile *max17055_get_batt_profile(void)
return &batt_profile[BATT_ID];
}
+const struct max17055_alert_profile *max17055_get_alert_profile(void)
+{
+ return &alert_profile[BATT_ID];
+}
+
int board_cut_off_battery(void)
{
return rt946x_cutoff_battery();
@@ -99,9 +118,12 @@ int charger_profile_override(struct charge_state_data *curr)
int desired_voltage; /* mV */
} temp_zones[BATTERY_COUNT][TEMP_ZONE_COUNT] = {
[BATTERY_SIMPLO] = {
- {0, 150, 1772, 4400}, /* TEMP_ZONE_0 */
- {150, 450, 4020, 4400}, /* TEMP_ZONE_1 */
- {450, 600, 3350, 4300}, /* TEMP_ZONE_2 */
+ /* TEMP_ZONE_0 */
+ {BATTERY_SIMPLO_CHARGE_MIN_TEMP * 10, 150, 1772, 4400},
+ /* TEMP_ZONE_1 */
+ {150, 450, 4020, 4400},
+ /* TEMP_ZONE_2 */
+ {450, BATTERY_SIMPLO_CHARGE_MAX_TEMP * 10, 3350, 4300},
},
};
BUILD_ASSERT(ARRAY_SIZE(temp_zones[0]) == TEMP_ZONE_COUNT);
diff --git a/board/kukui/board.c b/board/kukui/board.c
index 15acdee112..a059b8ade6 100644
--- a/board/kukui/board.c
+++ b/board/kukui/board.c
@@ -14,6 +14,7 @@
#include "common.h"
#include "console.h"
#include "driver/accelgyro_bmi160.h"
+#include "driver/battery/max17055.h"
#include "driver/charger/rt946x.h"
#include "driver/sync.h"
#include "driver/tcpm/mt6370.h"
@@ -62,7 +63,7 @@ static void hall_interrupt(enum gpio_signal signal)
static void gauge_interrupt(enum gpio_signal signal)
{
- /* TODO(b/111378620): Impelement gauge_interrupt */
+ task_wake(TASK_ID_CHARGER);
}
#endif
@@ -222,6 +223,9 @@ static void board_init(void)
/* Enable interrupt from PMIC. */
gpio_enable_interrupt(GPIO_PMIC_EC_RESETB);
+
+ /* Enable gauge interrupt from max17055 */
+ gpio_enable_interrupt(GPIO_GAUGE_INT_ODL);
}
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
diff --git a/board/kukui/board.h b/board/kukui/board.h
index a8e386588a..48974df59c 100644
--- a/board/kukui/board.h
+++ b/board/kukui/board.h
@@ -134,6 +134,7 @@
#define CONFIG_BATTERY_PRESENT_CUSTOM
#define CONFIG_BATTERY_REVIVE_DISCONNECT
#define CONFIG_BATTERY_MAX17055
+#define CONFIG_BATTERY_MAX17055_ALERT
/* Battery parameters for max17055 ModelGauge m5 algorithm. */
#define BATTERY_MAX17055_RSENSE 5 /* m-ohm */