diff options
-rw-r--r-- | board/chell/battery.c | 33 | ||||
-rw-r--r-- | board/chell/board.h | 1 |
2 files changed, 34 insertions, 0 deletions
diff --git a/board/chell/battery.c b/board/chell/battery.c index 48cbbd52b5..1e5c59a978 100644 --- a/board/chell/battery.c +++ b/board/chell/battery.c @@ -46,3 +46,36 @@ int board_cut_off_battery(void) rv = sb_write(SB_MANUFACTURER_ACCESS, SB_SHUTDOWN_DATA); return rv ? EC_RES_ERROR : EC_RES_SUCCESS; } + +int charger_profile_override(struct charge_state_data *curr) +{ + const struct battery_info *batt_info; + /* battery temp in 0.1 deg C */ + int bat_temp_c = curr->batt.temperature - 2731; + + batt_info = battery_get_info(); + /* Don't charge if outside of allowable temperature range */ + if (bat_temp_c >= batt_info->charging_max_c * 10 || + bat_temp_c < batt_info->charging_min_c * 10) { + curr->requested_current = 0; + curr->requested_voltage = 0; + curr->batt.flags &= ~BATT_FLAG_WANT_CHARGE; + curr->state = ST_IDLE; + } + return 0; +} + +/* Customs options controllable by host command. */ +#define PARAM_FASTCHARGE (CS_PARAM_CUSTOM_PROFILE_MIN + 0) + +enum ec_status charger_profile_override_get_param(uint32_t param, + uint32_t *value) +{ + return EC_RES_INVALID_PARAM; +} + +enum ec_status charger_profile_override_set_param(uint32_t param, + uint32_t value) +{ + return EC_RES_INVALID_PARAM; +} diff --git a/board/chell/board.h b/board/chell/board.h index 830b38c560..6160e3e199 100644 --- a/board/chell/board.h +++ b/board/chell/board.h @@ -33,6 +33,7 @@ #define CONFIG_CHARGER_INPUT_CURRENT 512 #define CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON 1 #define CONFIG_CHARGER_NARROW_VDC +#define CONFIG_CHARGER_PROFILE_OVERRIDE #define CONFIG_CHARGER_SENSE_RESISTOR 10 #define CONFIG_CHARGER_SENSE_RESISTOR_AC 20 |