/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ /* Temperature sensor module for Chrome EC */ #ifndef __CROS_EC_TEMP_SENSOR_H #define __CROS_EC_TEMP_SENSOR_H #include "common.h" /* "enum temp_sensor_id" must be defined for each board in board.h. */ enum temp_sensor_id; /* Type of temperature sensors. */ enum temp_sensor_type { /* Ignore this temperature sensor. */ TEMP_SENSOR_TYPE_IGNORED = -1, /* CPU temperature sensors. */ TEMP_SENSOR_TYPE_CPU = 0, /* Other on-board temperature sensors. */ TEMP_SENSOR_TYPE_BOARD, /* Case temperature sensors. */ TEMP_SENSOR_TYPE_CASE, /* Battery temperature sensors. */ TEMP_SENSOR_TYPE_BATTERY, TEMP_SENSOR_TYPE_COUNT }; struct temp_sensor_t { const char *name; /* Temperature sensor type. */ enum temp_sensor_type type; /* Read sensor value in K into temp_ptr; return non-zero if error. */ int (*read)(int idx, int *temp_ptr); /* Index among the same kind of sensors. */ int idx; /* Delay between reading temperature and taking action about it, * in seconds. */ int action_delay_sec; }; #ifdef CONFIG_TEMP_SENSOR /* * Defined in board_temp_sensor.c. Must be in the same order as * in enum temp_sensor_id. */ extern const struct temp_sensor_t temp_sensors[]; #endif /** * Get the most recently measured temperature (in degrees K) for the sensor. * * @param id Sensor ID * @param temp_ptr Destination for temperature * * @return EC_SUCCESS, or non-zero if error. */ int temp_sensor_read(enum temp_sensor_id id, int *temp_ptr); #endif /* __CROS_EC_TEMP_SENSOR_H */