diff options
author | Duncan Laurie <dlaurie@chromium.org> | 2013-10-21 08:37:37 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2013-10-21 18:36:24 +0000 |
commit | 992a61076187b858b1e8477eda1a4c54044891da (patch) | |
tree | 96595e4ec54c56d6231a02c8b419913c60300d8e | |
parent | ed00ca05764342f33465b6fdbfca91b0aa8b0a29 (diff) | |
download | chrome-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.c | 51 | ||||
-rw-r--r-- | board/samus/board.h | 29 |
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, |