mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-27 18:25:05 +00:00
Include battery fuel gauge temp sensor in temperature sensors
This gives the AP a way to see that temperature for DPTF. Alarm
thresholds were defined on a per-sensor basis, so they come along for
free.
BUG=chrome-os-partner:25585
BRANCH=rambi
TEST=temps command shows same temp for battery as battery command (other
than rounding error; battery command shows with 0.1C accuracy).
'ectool temps all' shows the battery temp as the last temperature.
Unplug battery and temps command shows error for the battery temp,
as does 'ectool temps all'.
Change-Id: I1bce72f164d9fb1be631e7241a4ea24ddf409d7a
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/185444
Reviewed-by: Dave Parker <dparker@chromium.org>
This commit is contained in:
committed by
chrome-internal-fetch
parent
683beb8737
commit
3192264679
@@ -7,6 +7,7 @@
|
||||
#include "adc.h"
|
||||
#include "adc_chip.h"
|
||||
#include "backlight.h"
|
||||
#include "charge_state.h"
|
||||
#include "charger.h"
|
||||
#include "common.h"
|
||||
#include "driver/temp_sensor/tmp432.h"
|
||||
@@ -185,6 +186,7 @@ const struct temp_sensor_t temp_sensors[] = {
|
||||
TMP432_IDX_REMOTE1, 4},
|
||||
{"TMP432_CPU_bottom", TEMP_SENSOR_TYPE_BOARD, tmp432_get_val,
|
||||
TMP432_IDX_REMOTE2, 4},
|
||||
{"Battery", TEMP_SENSOR_TYPE_BATTERY, charge_temp_sensor_get_val, 0, 4},
|
||||
};
|
||||
BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT);
|
||||
|
||||
@@ -196,6 +198,7 @@ struct ec_thermal_config thermal_params[] = {
|
||||
{{0, 0, 0}, 0, 0},
|
||||
{{0, 0, 0}, 0, 0},
|
||||
{{0, 0, 0}, 0, 0},
|
||||
{{0, 0, 0}, 0, 0},
|
||||
};
|
||||
BUILD_ASSERT(ARRAY_SIZE(thermal_params) == TEMP_SENSOR_COUNT);
|
||||
|
||||
|
||||
@@ -179,6 +179,9 @@ enum temp_sensor_id {
|
||||
TEMP_SENSOR_I2C_TMP432_REMOTE1,
|
||||
TEMP_SENSOR_I2C_TMP432_REMOTE2,
|
||||
|
||||
/* Battery temperature sensor */
|
||||
TEMP_SENSOR_BATTERY,
|
||||
|
||||
TEMP_SENSOR_COUNT
|
||||
};
|
||||
|
||||
|
||||
@@ -664,6 +664,17 @@ int charge_get_percent(void)
|
||||
return task_ctx.curr.batt.state_of_charge;
|
||||
}
|
||||
|
||||
int charge_temp_sensor_get_val(int idx, int *temp_ptr)
|
||||
{
|
||||
const struct batt_params *batt = &task_ctx.curr.batt;
|
||||
|
||||
if (!(batt->flags & BATT_FLAG_RESPONSIVE))
|
||||
return EC_ERROR_UNKNOWN;
|
||||
|
||||
*temp_ptr = C_TO_K(DECI_KELVIN_TO_CELSIUS(batt->temperature));
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
|
||||
int charge_want_shutdown(void)
|
||||
{
|
||||
return (charge_get_state() == PWR_STATE_DISCHARGE) &&
|
||||
|
||||
@@ -143,5 +143,16 @@ int charge_want_shutdown(void);
|
||||
#else
|
||||
static inline int charge_want_shutdown(void) { return 0; }
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Get the last polled battery/charger temperature.
|
||||
*
|
||||
* @param idx Sensor index to read.
|
||||
* @param temp_ptr Destination for temperature in K.
|
||||
*
|
||||
* @return EC_SUCCESS if successful, non-zero if error.
|
||||
*/
|
||||
int charge_temp_sensor_get_val(int idx, int *temp_ptr);
|
||||
|
||||
#endif /* __CROS_EC_CHARGE_STATE_H */
|
||||
|
||||
|
||||
@@ -23,6 +23,8 @@ enum temp_sensor_type {
|
||||
TEMP_SENSOR_TYPE_BOARD,
|
||||
/* Case temperature sensors. */
|
||||
TEMP_SENSOR_TYPE_CASE,
|
||||
/* Battery temperature sensors. */
|
||||
TEMP_SENSOR_TYPE_BATTERY,
|
||||
|
||||
TEMP_SENSOR_TYPE_COUNT
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user