summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@chromium.org>2013-10-21 08:37:37 -0700
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2013-10-21 18:36:24 +0000
commit992a61076187b858b1e8477eda1a4c54044891da (patch)
tree96595e4ec54c56d6231a02c8b419913c60300d8e
parented00ca05764342f33465b6fdbfca91b0aa8b0a29 (diff)
downloadchrome-ec-992a61076187b858b1e8477eda1a4c54044891da.tar.gz
samus: Add TMP006 sensors
Add the 6 on-board TMP006 sensors and I2C addresses. BUG=chrome-os-partner:23449 BRANCH=samus TEST=emerge-samus chromeos-ec Change-Id: Id7fe37a9dda12c63dfbe5b8e2865902976f4b476 Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/173835 Reviewed-by: Randall Spangler <rspangler@chromium.org>
-rw-r--r--board/samus/board.c51
-rw-r--r--board/samus/board.h29
2 files changed, 73 insertions, 7 deletions
diff --git a/board/samus/board.c b/board/samus/board.c
index 7ed634a2ed..19444fe088 100644
--- a/board/samus/board.c
+++ b/board/samus/board.c
@@ -197,12 +197,45 @@ const struct i2c_port_t i2c_ports[] = {
};
const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports);
+#define TEMP_U40_REG_ADDR ((0x40 << 1) | I2C_FLAG_BIG_ENDIAN)
+#define TEMP_U41_REG_ADDR ((0x44 << 1) | I2C_FLAG_BIG_ENDIAN)
+#define TEMP_U42_REG_ADDR ((0x41 << 1) | I2C_FLAG_BIG_ENDIAN)
+#define TEMP_U43_REG_ADDR ((0x45 << 1) | I2C_FLAG_BIG_ENDIAN)
+#define TEMP_U115_REG_ADDR ((0x42 << 1) | I2C_FLAG_BIG_ENDIAN)
+#define TEMP_U116_REG_ADDR ((0x43 << 1) | I2C_FLAG_BIG_ENDIAN)
+
+#define TEMP_U40_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U40_REG_ADDR)
+#define TEMP_U41_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U41_REG_ADDR)
+#define TEMP_U42_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U42_REG_ADDR)
+#define TEMP_U43_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U43_REG_ADDR)
+#define TEMP_U115_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U115_REG_ADDR)
+#define TEMP_U116_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U116_REG_ADDR)
+
+const struct tmp006_t tmp006_sensors[TMP006_COUNT] = {
+ {"Charger", TEMP_U40_ADDR},
+ {"CPU", TEMP_U41_ADDR},
+ {"Left C", TEMP_U42_ADDR},
+ {"Right C", TEMP_U43_ADDR},
+ {"Right D", TEMP_U115_ADDR},
+ {"Left D", TEMP_U116_ADDR},
+};
/* Temperature sensors data; must be in same order as enum temp_sensor_id. */
const struct temp_sensor_t temp_sensors[] = {
-/* HEY: Need correct I2C addresses and read function for external sensor */
- {"ECInternal", TEMP_SENSOR_TYPE_BOARD, chip_temp_sensor_get_val, 0, 4},
{"PECI", TEMP_SENSOR_TYPE_CPU, peci_temp_sensor_get_val, 0, 2},
+ {"ECInternal", TEMP_SENSOR_TYPE_BOARD, chip_temp_sensor_get_val, 0, 4},
+ {"I2C-Charger-Die", TEMP_SENSOR_TYPE_BOARD, tmp006_get_val, 0, 7},
+ {"I2C-Charger-Object", TEMP_SENSOR_TYPE_CASE, tmp006_get_val, 1, 7},
+ {"I2C-CPU-Die", TEMP_SENSOR_TYPE_BOARD, tmp006_get_val, 2, 7},
+ {"I2C-CPU-Object", TEMP_SENSOR_TYPE_CASE, tmp006_get_val, 3, 7},
+ {"I2C-Left C-Die", TEMP_SENSOR_TYPE_BOARD, tmp006_get_val, 4, 7},
+ {"I2C-Left C-Object", TEMP_SENSOR_TYPE_CASE, tmp006_get_val, 5, 7},
+ {"I2C-Right C-Die", TEMP_SENSOR_TYPE_BOARD, tmp006_get_val, 6, 7},
+ {"I2C-Right C-Object", TEMP_SENSOR_TYPE_CASE, tmp006_get_val, 7, 7},
+ {"I2C-Right D-Die", TEMP_SENSOR_TYPE_BOARD, tmp006_get_val, 8, 7},
+ {"I2C-Right D-Object", TEMP_SENSOR_TYPE_CASE, tmp006_get_val, 9, 7},
+ {"I2C-Left D-Die", TEMP_SENSOR_TYPE_BOARD, tmp006_get_val, 10, 7},
+ {"I2C-Left D-Object", TEMP_SENSOR_TYPE_CASE, tmp006_get_val, 11, 7},
};
BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT);
@@ -210,9 +243,21 @@ BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT);
* same order as enum temp_sensor_id. To always ignore any temp, use 0.
*/
struct ec_thermal_config thermal_params[] = {
- { {0, 0, 0}, 0, 0},
/* Only the AP affects the thermal limits and fan speed. */
{{C_TO_K(100), C_TO_K(114), C_TO_K(110)}, C_TO_K(60), C_TO_K(90)},
+ {{0, 0, 0}, 0, 0},
+ {{0, 0, 0}, 0, 0},
+ {{0, 0, 0}, 0, 0},
+ {{0, 0, 0}, 0, 0},
+ {{0, 0, 0}, 0, 0},
+ {{0, 0, 0}, 0, 0},
+ {{0, 0, 0}, 0, 0},
+ {{0, 0, 0}, 0, 0},
+ {{0, 0, 0}, 0, 0},
+ {{0, 0, 0}, 0, 0},
+ {{0, 0, 0}, 0, 0},
+ {{0, 0, 0}, 0, 0},
+ {{0, 0, 0}, 0, 0},
};
BUILD_ASSERT(ARRAY_SIZE(thermal_params) == TEMP_SENSOR_COUNT);
diff --git a/board/samus/board.h b/board/samus/board.h
index 5c53316f30..684a8a6774 100644
--- a/board/samus/board.h
+++ b/board/samus/board.h
@@ -45,6 +45,8 @@
#define CONFIG_PWM_KBLIGHT
#define CONFIG_SWITCH_DEDICATED_RECOVERY
#define CONFIG_TEMP_SENSOR
+#define CONFIG_TEMP_SENSOR_TMP006
+#define CONFIG_TEMP_SENSOR_POWER_GPIO GPIO_PP3300_DSW_GATED_EN
#define CONFIG_UART_HOST 2
#define CONFIG_WIRELESS
#define CONFIG_USB_PORT_POWER_SMART
@@ -192,16 +194,35 @@ enum pwm_channel {
};
enum temp_sensor_id {
- /* HEY - need two I2C sensor values, and put PECI first */
-
- /* EC internal temperature sensor */
- TEMP_SENSOR_EC_INTERNAL,
/* CPU die temperature via PECI */
TEMP_SENSOR_CPU_PECI,
+ /* EC internal temperature sensor */
+ TEMP_SENSOR_EC_INTERNAL,
+ /* TMP006 U40, die/object temperature near battery charger */
+ TEMP_SENSOR_I2C_U40_DIE,
+ TEMP_SENSOR_I2C_U40_OBJECT,
+ /* TMP006 U41, die/object temperature near CPU */
+ TEMP_SENSOR_I2C_U41_DIE,
+ TEMP_SENSOR_I2C_U41_OBJECT,
+ /* TMP006 U42, die/object temperature left side of C-case */
+ TEMP_SENSOR_I2C_U42_DIE,
+ TEMP_SENSOR_I2C_U42_OBJECT,
+ /* TMP006 U43, die/object temperature right side of C-case */
+ TEMP_SENSOR_I2C_U43_DIE,
+ TEMP_SENSOR_I2C_U43_OBJECT,
+ /* TMP006 U115, die/object temperature right side of D-case */
+ TEMP_SENSOR_I2C_U115_DIE,
+ TEMP_SENSOR_I2C_U115_OBJECT,
+ /* TMP006 U116, die/object temperature left side of D-case */
+ TEMP_SENSOR_I2C_U116_DIE,
+ TEMP_SENSOR_I2C_U116_OBJECT,
TEMP_SENSOR_COUNT
};
+/* The number of TMP006 sensor chips on the board. */
+#define TMP006_COUNT 6
+
/* Known board versions for system_get_board_version(). */
enum board_version {
BOARD_VERSION_PROTO1 = 0,