| /* Copyright 2018 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. |
| */ |
| |
| /* TMP468 temperature sensor module for Chrome EC */ |
| |
| #ifndef __CROS_EC_TMP468_H |
| #define __CROS_EC_TMP468_H |
| |
| #define TMP468_I2C_ADDR_FLAGS (0x48 | I2C_FLAG_BIG_ENDIAN) |
| #define TMP468_SHIFT1 7 |
| |
| #define TMP468_LOCAL 0x00 |
| #define TMP468_REMOTE1 0x01 |
| #define TMP468_REMOTE2 0x02 |
| #define TMP468_REMOTE3 0x03 |
| #define TMP468_REMOTE4 0x04 |
| #define TMP468_REMOTE5 0x05 |
| #define TMP468_REMOTE6 0x06 |
| #define TMP468_REMOTE7 0x07 |
| #define TMP468_REMOTE8 0x08 |
| |
| #define TMP468_SRST 0x20 |
| #define TMP468_THERM 0x21 |
| #define TMP468_THERM2 0x22 |
| #define TMP468_ROPEN 0x23 |
| |
| #define TMP468_CONFIGURATION 0x30 |
| #define TMP468_THERM_HYST 0x38 |
| |
| #define TMP468_LOCAL_LOW_LIMIT 0x39 |
| #define TMP468_LOCAL_HIGH_LIMT 0x3a |
| |
| #define TMP468_REMOTE1_OFFSET 0x40 |
| #define TMP468_REMOTE1_NFACTOR 0x41 |
| #define TMP468_REMOTE1_LOW_LIMIT 0x41 |
| #define TMP468_REMOTE1_HIGH_LIMIT 0x42 |
| |
| #define TMP468_REMOTE2_OFFSET 0x48 |
| #define TMP468_REMOTE2_NFACTOR 0x49 |
| #define TMP468_REMOTE2_LOW_LIMIT 0x4a |
| #define TMP468_REMOTE2_HIGH_LIMIT 0x4b |
| |
| #define TMP468_REMOTE3_OFFSET 0x50 |
| #define TMP468_REMOTE3_NFACTOR 0x51 |
| #define TMP468_REMOTE3_LOW_LIMIT 0x52 |
| #define TMP468_REMOTE3_HIGH_LIMIT 0x53 |
| |
| #define TMP468_REMOTE4_OFFSET 0x58 |
| #define TMP468_REMOTE4_NFACTOR 0x59 |
| #define TMP468_REMOTE4_LOW_LIMIT 0x59 |
| #define TMP468_REMOTE4_HIGH_LIMIT 0x5a |
| |
| #define TMP468_REMOTE5_OFFSET 0x60 |
| #define TMP468_REMOTE5_NFACTOR 0x61 |
| #define TMP468_REMOTE5_LOW_LIMIT 0x62 |
| #define TMP468_REMOTE5_HIGH_LIMIT 0x63 |
| |
| #define TMP468_REMOTE6_OFFSET 0x68 |
| #define TMP468_REMOTE6_NFACTOR 0x69 |
| #define TMP468_REMOTE6_LOW_LIMIT 0x6a |
| #define TMP468_REMOTE6_HIGH_LIMIT 0x6b |
| |
| #define TMP468_REMOTE7_OFFSET 0x70 |
| #define TMP468_REMOTE7_NFACTOR 0x71 |
| #define TMP468_REMOTE7_LOW_LIMIT 0x72 |
| #define TMP468_REMOTE7_HIGH_LIMIT 0x73 |
| |
| #define TMP468_REMOTE8_OFFSET 0x78 |
| #define TMP468_REMOTE8_NFACTOR 0x79 |
| #define TMP468_REMOTE8_LOW_LIMIT 0x7a |
| #define TMP468_REMOTE8_HIGH_LIMIT 0x7b |
| |
| #define TMP468_LOCK 0xc4 |
| |
| #define TMP468_DEVICE_ID 0xfd |
| #define TMP468_MANUFACTURER_ID 0xfe |
| |
| #define TMP468_SHUTDOWN BIT(5) |
| |
| enum tmp468_channel_id { |
| TMP468_CHANNEL_LOCAL, |
| |
| TMP468_CHANNEL_REMOTE1, |
| TMP468_CHANNEL_REMOTE2, |
| TMP468_CHANNEL_REMOTE3, |
| TMP468_CHANNEL_REMOTE4, |
| TMP468_CHANNEL_REMOTE5, |
| TMP468_CHANNEL_REMOTE6, |
| TMP468_CHANNEL_REMOTE7, |
| TMP468_CHANNEL_REMOTE8, |
| |
| TMP468_CHANNEL_COUNT |
| }; |
| |
| enum tmp468_power_state { |
| TMP468_POWER_OFF = 0, |
| TMP468_POWER_ON, |
| |
| TMP468_POWER_COUNT |
| }; |
| |
| |
| /** |
| * Get the last polled value of a sensor. |
| * |
| * @param idx Index to read. Idx indicates whether to read die |
| * temperature or external temperature. |
| * @param temp_ptr Destination for temperature in K. |
| * |
| * @return EC_SUCCESS if successful, non-zero if error. |
| */ |
| int tmp468_get_val(int idx, int *temp_ptr); |
| |
| /** |
| * Power control function of tmp432 temperature sensor. |
| * |
| * @param power_on TMP468_POWER_ON: turn tmp468 sensor on. |
| * TMP468_POWER_OFF: shut tmp468 sensor down. |
| * |
| * @return EC_SUCCESS if successful, non-zero if error. |
| */ |
| int tmp468_set_power(enum tmp468_power_state power_on); |
| |
| #endif /* __CROS_EC_TMP468_H */ |