blob: 6463155659cb248c48267309c28044272271a721 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
/* Copyright (c) 2013 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.
*/
/* G781 temperature sensor module for Chrome EC */
#ifndef __CROS_EC_TEMP_SENSOR_G781_H
#define __CROS_EC_TEMP_SENSOR_G781_H
#define G781_I2C_ADDR 0x98 /* 7-bit address is 0x4C */
#define G781_IDX_INTERNAL 0
#define G781_IDX_EXTERNAL 1
/* Chip-specific commands */
#define G781_TEMP_LOCAL 0x00
#define G781_TEMP_REMOTE 0x01
#define G781_STATUS 0x02
#define G781_CONFIGURATION_R 0x03
#define G781_CONVERSION_RATE_R 0x04
#define G781_LOCAL_TEMP_HIGH_LIMIT_R 0x05
#define G781_LOCAL_TEMP_LOW_LIMIT_R 0x06
#define G781_REMOTE_TEMP_HIGH_LIMIT_R 0x07
#define G781_REMOTE_TEMP_LOW_LIMIT_R 0x08
#define G781_CONFIGURATION_W 0x09
#define G781_CONVERSION_RATE_W 0x0a
#define G781_LOCAL_TEMP_HIGH_LIMIT_W 0x0b
#define G781_LOCAL_TEMP_LOW_LIMIT_W 0x0c
#define G781_REMOTE_TEMP_HIGH_LIMIT_W 0x0d
#define G781_REMOTE_TEMP_LOW_LIMIT_W 0x0e
#define G781_ONESHOT 0x0f
#define G781_REMOTE_TEMP_EXTENDED 0x10
#define G781_REMOTE_TEMP_OFFSET_HIGH 0x11
#define G781_REMOTE_TEMP_OFFSET_EXTD 0x12
#define G781_REMOTE_T_HIGH_LIMIT_EXTD 0x13
#define G781_REMOTE_T_LOW_LIMIT_EXTD 0x14
#define G781_REMOTE_TEMP_THERM_LIMIT 0x19
#define G781_LOCAL_TEMP_THERM_LIMIT 0x20
#define G781_THERM_HYSTERESIS 0x21
#define G781_ALERT_FAULT_QUEUE_CODE 0x22
#define G781_MANUFACTURER_ID 0xFE
#define G781_DEVICE_ID 0xFF
/* Config register bits */
#define G781_CONFIGURATION_STANDBY (1 << 6)
#define G781_CONFIGURATION_ALERT_MASK (1 << 7)
/* Status register bits */
#define G781_STATUS_LOCAL_TEMP_THERM_ALARM (1 << 0)
#define G781_STATUS_REMOTE_TEMP_THERM_ALARM (1 << 1)
#define G781_STATUS_REMOTE_TEMP_FAULT (1 << 2)
#define G781_STATUS_REMOTE_TEMP_LOW_ALARM (1 << 3)
#define G781_STATUS_REMOTE_TEMP_HIGH_ALARM (1 << 4)
#define G781_STATUS_LOCAL_TEMP_LOW_ALARM (1 << 5)
#define G781_STATUS_LOCAL_TEMP_HIGH_ALARM (1 << 6)
#define G781_STATUS_BUSY (1 << 7)
/**
* 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 g781_get_val(int idx, int *temp_ptr);
#endif /* __CROS_EC_TEMP_SENSOR_G781_H */
|