summaryrefslogtreecommitdiff
path: root/include/driver/temp_sensor/tmp112.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/driver/temp_sensor/tmp112.h')
-rw-r--r--include/driver/temp_sensor/tmp112.h66
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 */