/* 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 */