diff options
Diffstat (limited to 'include/driver/temp_sensor/tmp112.h')
-rw-r--r-- | include/driver/temp_sensor/tmp112.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/include/driver/temp_sensor/tmp112.h b/include/driver/temp_sensor/tmp112.h new file mode 100644 index 0000000000..d1b97b138c --- /dev/null +++ b/include/driver/temp_sensor/tmp112.h @@ -0,0 +1,66 @@ +/* Copyright 2016 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. + */ + +#ifndef __CROS_EC_TMP112_H +#define __CROS_EC_TMP112_H + +#include "i2c.h" + +#define TMP112_I2C_ADDR_FLAGS0 (0x48 | I2C_FLAG_BIG_ENDIAN) +#define TMP112_I2C_ADDR_FLAGS1 (0x49 | I2C_FLAG_BIG_ENDIAN) +#define TMP112_I2C_ADDR_FLAGS2 (0x4A | I2C_FLAG_BIG_ENDIAN) +#define TMP112_I2C_ADDR_FLAGS3 (0x4B | I2C_FLAG_BIG_ENDIAN) + +#define TMP112_REG_TEMP 0x00 +#define TMP112_REG_CONF 0x01 +#define TMP112_REG_HYST 0x02 +#define TMP112_REG_MAX 0x03 + +/* + * I2C port and address information for all the board TMP112 sensors should be + * defined in an array of the following structures, with an enum tmp112_sensor + * indexing the array. The enum tmp112_sensor shall end with a TMP112_COUNT + * defining the maximum number of sensors for the board. + */ + +struct tmp112_sensor_t { + int i2c_port; + int i2c_addr_flags; +}; + +extern const struct tmp112_sensor_t tmp112_sensors[]; + +/** + * Get the last polled value of a sensor. + * + * @param idx Index to read, from board's enum tmp112_sensor + * definition + * + * @param temp_k_ptr Destination for temperature in K. + * + * @return EC_SUCCESS if successful, non-zero if error. + */ +int tmp112_get_val_k(int idx, int *temp_k_ptr); + +/** + * Get the last polled value of a sensor. + * + * @param idx Index to read, from board's enum tmp112_sensor + * definition + * + * @param temp_mk_ptr Destination for temperature in mK. + * + * @return EC_SUCCESS if successful, non-zero if error. + */ +int tmp112_get_val_mk(int idx, int *temp_mk_ptr); + +/** + * Init the sensors. Note, this will run automatically on HOOK_INIT, but is + * made available for boards which may not always power the sensor in all + * states. + */ +void tmp112_init(void); + +#endif /* __CROS_EC_TMP112_H */ |