diff --git a/board/link/board.h b/board/link/board.h index 41809b5357..05ab9adebf 100644 --- a/board/link/board.h +++ b/board/link/board.h @@ -216,14 +216,28 @@ enum temp_sensor_id { TEMP_SENSOR_EC_INTERNAL, /* CPU die temperature via PECI */ TEMP_SENSOR_CPU_PECI, - - /* TODO: I2C remote temperature sensors. */ + /* Die temperature of U15 TMP006 temperature sensor */ + TEMP_SENSOR_I2C_U15_DIE, + /* Object temperature of U15 TMP006 temperature sensor */ + TEMP_SENSOR_I2C_U15_OBJECT, + /* Die temperature of U20 TMP006 temperature sensor */ + TEMP_SENSOR_I2C_U20_DIE, + /* Object temperature of U20 TMP006 temperature sensor */ + TEMP_SENSOR_I2C_U20_OBJECT, + /* Die temperature of U27 TMP006 temperature sensor */ + TEMP_SENSOR_I2C_U27_DIE, + /* Object temperature of U27 TMP006 temperature sensor */ + TEMP_SENSOR_I2C_U27_OBJECT, + /* Die temperature of U29 TMP006 temperature sensor */ + TEMP_SENSOR_I2C_U29_DIE, + /* Object temperature of U29 TMP006 temperature sensor */ + TEMP_SENSOR_I2C_U29_OBJECT, TEMP_SENSOR_COUNT }; /* The number of TMP006 sensor chips on the board. */ -#define TMP006_COUNT 4 +#define TMP006_COUNT 8 /* Target value for BOOTCFG. This is set to PE2/USB1_CTL1, which has an external * pullup. If this signal is pulled to ground when the EC boots, the EC will get diff --git a/board/link/board_temp_sensor.c b/board/link/board_temp_sensor.c index 10ced1984f..2bd4d1d87c 100644 --- a/board/link/board_temp_sensor.c +++ b/board/link/board_temp_sensor.c @@ -17,11 +17,19 @@ #define TEMP_PCH_REG_ADDR ((0x41 << 1) | I2C_FLAG_BIG_ENDIAN) #define TEMP_DDR_REG_ADDR ((0x45 << 1) | I2C_FLAG_BIG_ENDIAN) #define TEMP_CHARGER_REG_ADDR ((0x43 << 1) | I2C_FLAG_BIG_ENDIAN) +#define TEMP_U15_REG_ADDR ((0x47 << 1) | I2C_FLAG_BIG_ENDIAN) +#define TEMP_U20_REG_ADDR ((0x46 << 1) | I2C_FLAG_BIG_ENDIAN) +#define TEMP_U27_REG_ADDR ((0x44 << 1) | I2C_FLAG_BIG_ENDIAN) +#define TEMP_U29_REG_ADDR ((0x42 << 1) | I2C_FLAG_BIG_ENDIAN) #define TEMP_CPU_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_CPU_REG_ADDR) #define TEMP_PCH_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_PCH_REG_ADDR) #define TEMP_DDR_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_DDR_REG_ADDR) #define TEMP_CHARGER_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_CHARGER_REG_ADDR) +#define TEMP_U15_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U15_REG_ADDR) +#define TEMP_U20_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U20_REG_ADDR) +#define TEMP_U27_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U27_REG_ADDR) +#define TEMP_U29_ADDR TMP006_ADDR(I2C_PORT_THERMAL, TEMP_U29_REG_ADDR) /* Temperature sensors data. Must be in the same order as enum * temp_sensor_id. @@ -53,6 +61,24 @@ const struct temp_sensor_t temp_sensors[TEMP_SENSOR_COUNT] = { {"PECI", TEMP_SENSOR_POWER_CPU, TEMP_SENSOR_TYPE_CPU, peci_temp_sensor_get_val, 0, 2}, #endif +#ifdef CONFIG_TMP006 + {"I2C_U15-Die", TEMP_SENSOR_POWER_VS, TEMP_SENSOR_TYPE_IGNORED, + tmp006_get_val, 8, 7}, + {"I2C_U15-Object", TEMP_SENSOR_POWER_VS, TEMP_SENSOR_TYPE_IGNORED, + tmp006_get_val, 9, 7}, + {"I2C_U20-Die", TEMP_SENSOR_POWER_VS, TEMP_SENSOR_TYPE_IGNORED, + tmp006_get_val, 10, 7}, + {"I2C_U20-Object", TEMP_SENSOR_POWER_VS, TEMP_SENSOR_TYPE_IGNORED, + tmp006_get_val, 11, 7}, + {"I2C_U27-Die", TEMP_SENSOR_POWER_VS, TEMP_SENSOR_TYPE_IGNORED, + tmp006_get_val, 12, 7}, + {"I2C_U27-Object", TEMP_SENSOR_POWER_VS, TEMP_SENSOR_TYPE_IGNORED, + tmp006_get_val, 13, 7}, + {"I2C_U29-Die", TEMP_SENSOR_POWER_VS, TEMP_SENSOR_TYPE_IGNORED, + tmp006_get_val, 14, 7}, + {"I2C_U29-Object", TEMP_SENSOR_POWER_VS, TEMP_SENSOR_TYPE_IGNORED, + tmp006_get_val, 15, 7}, +#endif }; const struct tmp006_t tmp006_sensors[TMP006_COUNT] = { @@ -61,4 +87,8 @@ const struct tmp006_t tmp006_sensors[TMP006_COUNT] = { {"PCH", TEMP_PCH_ADDR, 14169}, {"DDR", TEMP_DDR_ADDR, 6400}, {"Charger", TEMP_CHARGER_ADDR, 10521}, + {"U15", TEMP_U15_ADDR, 6400}, + {"U20", TEMP_U20_ADDR, 6400}, + {"U27", TEMP_U27_ADDR, 6400}, + {"U29", TEMP_U29_ADDR, 6400}, };