From fc91a7f7fdb7f73ba96ae351e5d8d9e2d8b94958 Mon Sep 17 00:00:00 2001 From: Justin Chuang Date: Wed, 15 Jan 2014 18:27:38 +0800 Subject: Support discharge on BQ24715 for Rambi and Squawks BUG=chrome-os-partner:25031 BRANCH=rambi TEST=Manually make BOARD=peppy make BOARD=falco make BOARD=rambi make BOARD=squawks On rambi and squawks, connect charger ectool chargecontrol discharge ectool i2cread 16 0 0x16 0x0a It should return 16-bit negative integer. Change-Id: I8a8dfa90d2ad82595ac7a420c3c8ffc13b12cde6 Signed-off-by: Justin Chuang Reviewed-on: https://chromium-review.googlesource.com/182586 Reviewed-by: Dave Parker --- board/falco/board.c | 2 +- board/rambi/board.c | 9 +++++++++ board/rambi/board.h | 4 ++++ board/squawks/board.c | 9 +++++++++ board/squawks/board.h | 4 ++++ driver/charger/bq24715.c | 19 +++++++++++++++++++ driver/charger/bq24738.h | 3 --- include/charger.h | 3 +++ 8 files changed, 49 insertions(+), 4 deletions(-) diff --git a/board/falco/board.c b/board/falco/board.c index 54143cc6ce..97a7fccc53 100644 --- a/board/falco/board.c +++ b/board/falco/board.c @@ -8,8 +8,8 @@ #include "adc_chip.h" #include "backlight.h" #include "board.h" +#include "charger.h" #include "common.h" -#include "driver/charger/bq24738.h" #include "driver/temp_sensor/g781.h" #include "extpower.h" #include "fan.h" diff --git a/board/rambi/board.c b/board/rambi/board.c index 2ad37debdf..cdef1c11b1 100644 --- a/board/rambi/board.c +++ b/board/rambi/board.c @@ -7,6 +7,7 @@ #include "adc.h" #include "adc_chip.h" #include "backlight.h" +#include "charger.h" #include "common.h" #include "driver/temp_sensor/tmp432.h" #include "extpower.h" @@ -197,3 +198,11 @@ struct ec_thermal_config thermal_params[] = { {{0, 0, 0}, 0, 0}, }; BUILD_ASSERT(ARRAY_SIZE(thermal_params) == TEMP_SENSOR_COUNT); + +/** + * Discharge battery when on AC power for factory test. + */ +int board_discharge_on_ac(int enable) +{ + return charger_discharge_on_ac(enable); +} diff --git a/board/rambi/board.h b/board/rambi/board.h index 420d072620..d3ce348b7b 100644 --- a/board/rambi/board.h +++ b/board/rambi/board.h @@ -15,6 +15,7 @@ #define CONFIG_BOARD_VERSION #define CONFIG_CHARGER #define CONFIG_CHARGER_BQ24715 +#define CONFIG_CHARGER_DISCHARGE_ON_AC #define CONFIG_CHARGER_INPUT_CURRENT 1700 /* 33 W adapter, 19 V, 1.75 A */ #define CONFIG_CHARGER_SENSE_RESISTOR 10 /* Charge sense resistor, mOhm */ #define CONFIG_CHARGER_SENSE_RESISTOR_AC 10 /* Input senso resistor, mOhm */ @@ -177,6 +178,9 @@ enum temp_sensor_id { TEMP_SENSOR_COUNT }; +/* Discharge battery when on AC power for factory test. */ +int board_discharge_on_ac(int enable); + #endif /* !__ASSEMBLER__ */ #endif /* __BOARD_H */ diff --git a/board/squawks/board.c b/board/squawks/board.c index 825d551c78..2b783f655f 100644 --- a/board/squawks/board.c +++ b/board/squawks/board.c @@ -7,6 +7,7 @@ #include "adc.h" #include "adc_chip.h" #include "backlight.h" +#include "charger.h" #include "common.h" #include "driver/temp_sensor/tmp432.h" #include "extpower.h" @@ -199,3 +200,11 @@ struct ec_thermal_config thermal_params[] = { {{0, 0, 0}, 0, 0}, }; BUILD_ASSERT(ARRAY_SIZE(thermal_params) == TEMP_SENSOR_COUNT); + +/** + * Discharge battery when on AC power for factory test. + */ +int board_discharge_on_ac(int enable) +{ + return charger_discharge_on_ac(enable); +} diff --git a/board/squawks/board.h b/board/squawks/board.h index 0d184ace96..05393040f4 100644 --- a/board/squawks/board.h +++ b/board/squawks/board.h @@ -15,6 +15,7 @@ #define CONFIG_BOARD_VERSION #define CONFIG_CHARGER #define CONFIG_CHARGER_BQ24715 +#define CONFIG_CHARGER_DISCHARGE_ON_AC #define CONFIG_CHARGER_INPUT_CURRENT 1700 /* 33 W adapter, 19 V, 1.75 A */ #define CONFIG_CHARGER_SENSE_RESISTOR 10 /* Charge sense resistor, mOhm */ #define CONFIG_CHARGER_SENSE_RESISTOR_AC 10 /* Input senso resistor, mOhm */ @@ -178,6 +179,9 @@ enum temp_sensor_id { TEMP_SENSOR_COUNT }; +/* Discharge battery when on AC power for factory test. */ +int board_discharge_on_ac(int enable); + #endif /* !__ASSEMBLER__ */ #endif /* __BOARD_H */ diff --git a/driver/charger/bq24715.c b/driver/charger/bq24715.c index 14779225fc..5731057e4e 100644 --- a/driver/charger/bq24715.c +++ b/driver/charger/bq24715.c @@ -190,3 +190,22 @@ int charger_post_init(void) rv = charger_set_input_current(CONFIG_CHARGER_INPUT_CURRENT); return rv; } + +int charger_discharge_on_ac(int enable) +{ + int rv; + int option; + + rv = charger_get_option(&option); + if (rv) + return rv; + + option &= ~OPT_LEARN_MASK; + if (enable) + option |= OPT_LEARN_ENABLE; + else + option |= OPT_LEARN_DISABLE; + rv = charger_set_option(option); + + return rv; +} diff --git a/driver/charger/bq24738.h b/driver/charger/bq24738.h index 402b801a0c..bb07f90480 100644 --- a/driver/charger/bq24738.h +++ b/driver/charger/bq24738.h @@ -54,7 +54,4 @@ #define ACPRES_DEGLITCH_150MS (0 << 15) #define ACPRES_DEGLITCH_1300MS_DEFAULT (1 << 15) -/* Discharge battery when on AC power. */ -int charger_discharge_on_ac(int enable); - #endif /* __CROS_EC_CHARGER_BQ24738_H */ diff --git a/include/charger.h b/include/charger.h index c3c2b06cd4..23a4cebb42 100644 --- a/include/charger.h +++ b/include/charger.h @@ -76,6 +76,9 @@ int charger_set_current(int current); int charger_get_voltage(int *voltage); int charger_set_voltage(int voltage); +/* Discharge battery when on AC power. */ +int charger_discharge_on_ac(int enable); + /* Other parameters that may be charger-specific, but are common so far. */ int charger_set_input_current(int input_current); int charger_get_input_current(int *input_current); -- cgit v1.2.1