diff options
author | james_chao <james_chao@asus.com> | 2016-01-14 17:26:04 +0800 |
---|---|---|
committer | ChromeOS bot <3su6n15k.default@developer.gserviceaccount.com> | 2016-01-14 17:46:58 +0000 |
commit | 3e16869227884e5f69f1594ee9973eda94669979 (patch) | |
tree | 0667a66d6fa0ded914cd5ebbdf8fae92538d0a3d | |
parent | 1f076054ebe5903cfbd22ee769bb8d3e82cbd3ed (diff) | |
download | chrome-ec-3e16869227884e5f69f1594ee9973eda94669979.tar.gz |
Terra11: use adc temperature for DPTF TSR2
For DPTF sensor 2 (TSR2),
terra11 use the temperature from adc channel,
terra13 use the temperature from tmp432 sensor remote 2.
BUG=none
BRANCH=firmware-strago-7287.B
TEST=none
Change-Id: I6748960a16b2c609135c7c2d27037166991fc87a
Signed-off-by: james_chao <james_chao@asus.com>
Reviewed-on: https://chromium-review.googlesource.com/322052
Reviewed-by: Shawn N <shawnn@chromium.org>
-rw-r--r-- | board/terra/board.c | 220 | ||||
-rw-r--r-- | board/terra/board.h | 4 | ||||
-rw-r--r-- | board/terra/gpio.inc | 1 |
3 files changed, 222 insertions, 3 deletions
diff --git a/board/terra/board.c b/board/terra/board.c index e262c05c02..7fa1affce6 100644 --- a/board/terra/board.c +++ b/board/terra/board.c @@ -4,6 +4,8 @@ */ /* Terra board-specific configuration */ +#include "adc.h" +#include "adc_chip.h" #include "charge_state.h" #include "driver/charger/bq24773.h" #include "driver/temp_sensor/tmp432.h" @@ -47,6 +49,14 @@ const enum gpio_signal hibernate_wake_pins[] = { const int hibernate_wake_pins_used = ARRAY_SIZE(hibernate_wake_pins); +const struct adc_t adc_channels[] = { + [ADC_TEMP] = {"ADC1", 1, 1, 0, 0}, +}; +BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT); + +/* Forward declaration */ +static int terra_get_temp_sensor2(int index, int *temp_ptr); + /* * Temperature sensors data; must be in same order as enum temp_sensor_id. * Sensor index and name must match those present in coreboot: @@ -57,7 +67,7 @@ const struct temp_sensor_t temp_sensors[] = { TMP432_IDX_LOCAL, 4}, {"TMP432_Sensor_1", TEMP_SENSOR_TYPE_BOARD, tmp432_get_val, TMP432_IDX_REMOTE1, 4}, - {"TMP432_Sensor_2", TEMP_SENSOR_TYPE_BOARD, tmp432_get_val, + {"TMP432_Sensor_2", TEMP_SENSOR_TYPE_BOARD, terra_get_temp_sensor2, TMP432_IDX_REMOTE2, 4}, {"Battery", TEMP_SENSOR_TYPE_BATTERY, charge_temp_sensor_get_val, 0, 4}, @@ -131,3 +141,211 @@ int board_get_version(void) return v; } + +struct adc_temp_t { + int adc; + int temp; +}; + +const struct adc_temp_t adc_temp[] = { + { 65, 125 }, + { 66, 124 }, + { 68, 123 }, + { 69, 122 }, + { 71, 121 }, + { 73, 120 }, + { 75, 119 }, + { 77, 118 }, + { 79, 117 }, + { 81, 116 }, + { 83, 115 }, + { 85, 114 }, + { 87, 113 }, + { 89, 112 }, + { 92, 111 }, + { 94, 110 }, + { 96, 109 }, + { 99, 108 }, + { 102, 107 }, + { 104, 106 }, + { 107, 105 }, + { 110, 104 }, + { 113, 103 }, + { 116, 102 }, + { 119, 101 }, + { 122, 100 }, + { 125, 99 }, + { 129, 98 }, + { 132, 97 }, + { 136, 96 }, + { 139, 95 }, + { 143, 94 }, + { 147, 93 }, + { 151, 92 }, + { 155, 91 }, + { 159, 90 }, + { 163, 89 }, + { 168, 88 }, + { 172, 87 }, + { 177, 86 }, + { 182, 85 }, + { 187, 84 }, + { 192, 83 }, + { 197, 82 }, + { 202, 81 }, + { 208, 80 }, + { 213, 79 }, + { 219, 78 }, + { 225, 77 }, + { 231, 76 }, + { 237, 75 }, + { 244, 74 }, + { 250, 73 }, + { 257, 72 }, + { 264, 71 }, + { 271, 70 }, + { 278, 69 }, + { 285, 68 }, + { 293, 67 }, + { 301, 66 }, + { 309, 65 }, + { 317, 64 }, + { 325, 63 }, + { 333, 62 }, + { 342, 61 }, + { 351, 60 }, + { 360, 59 }, + { 369, 58 }, + { 378, 57 }, + { 388, 56 }, + { 397, 55 }, + { 407, 54 }, + { 417, 53 }, + { 427, 52 }, + { 437, 51 }, + { 448, 50 }, + { 458, 49 }, + { 469, 48 }, + { 480, 47 }, + { 491, 46 }, + { 502, 45 }, + { 513, 44 }, + { 525, 43 }, + { 536, 42 }, + { 548, 41 }, + { 559, 40 }, + { 571, 39 }, + { 583, 38 }, + { 594, 37 }, + { 606, 36 }, + { 618, 35 }, + { 630, 34 }, + { 642, 33 }, + { 654, 32 }, + { 666, 31 }, + { 678, 30 }, + { 690, 29 }, + { 701, 28 }, + { 713, 27 }, + { 725, 26 }, + { 736, 25 }, + { 748, 24 }, + { 759, 23 }, + { 770, 22 }, + { 782, 21 }, + { 793, 20 }, + { 803, 19 }, + { 814, 18 }, + { 825, 17 }, + { 835, 16 }, + { 845, 15 }, + { 855, 14 }, + { 865, 13 }, + { 875, 12 }, + { 884, 11 }, + { 893, 10 }, + { 902, 9 }, + { 911, 8 }, + { 920, 7 }, + { 928, 6 }, + { 936, 5 }, + { 944, 4 }, + { 952, 3 }, + { 959, 2 }, + { 967, 1 }, + { 974, 0 }, + { 981, -1 }, + { 987, -2 }, + { 993, -3 }, + { 1000, -4 }, + { 1006, -5 }, + { 1011, -6 }, + { 1017, -7 }, + { 1022, -8 }, + { 1027, -9 }, + { 1032, -10 }, + { 1037, -11 }, + { 1042, -12 }, + { 1046, -13 }, + { 1050, -14 }, + { 1054, -15 }, + { 1058, -16 }, + { 1062, -17 }, + { 1065, -18 }, + { 1069, -19 }, + { 1072, -20 }, + { 1075, -21 }, + { 1078, -22 }, + { 1081, -23 }, + { 1083, -24 }, + { 1086, -25 }, + { 1088, -26 }, + { 1090, -27 }, + { 1093, -28 }, + { 1095, -29 }, + { 1096, -30 }, + { 1098, -31 }, + { 1100, -32 }, + { 1102, -33 }, + { 1103, -34 }, + { 1105, -35 }, + { 1106, -36 }, + { 1107, -37 }, + { 1109, -38 }, + { 1110, -39 }, + { 1111, -40 }, +}; + +static int adc_to_temp(int adc) +{ + static int i; + + if (adc < adc_temp[0].adc) + return 125; + else if (adc > adc_temp[ARRAY_SIZE(adc_temp)-1].adc) + return -40; + + while (1) { + if (adc < adc_temp[i].adc) + --i; + else if (adc > adc_temp[i+1].adc) + ++i; + else + return adc_temp[i].temp; + } +} + +static int terra_adc_get_val(int idx, int *temp_ptr) +{ + *temp_ptr = C_TO_K(adc_to_temp(adc_read_channel(idx))); + return EC_SUCCESS; +} + +static int terra_get_temp_sensor2(int idx, int *temp_ptr) +{ + if (gpio_get_level(GPIO_IMAGE_SEL)) + return tmp432_get_val(idx, temp_ptr); + else + return terra_adc_get_val(ADC_TEMP, temp_ptr); +} + diff --git a/board/terra/board.h b/board/terra/board.h index a92a9a9785..22527f0032 100644 --- a/board/terra/board.h +++ b/board/terra/board.h @@ -45,6 +45,8 @@ #define CONFIG_USB_PORT_POWER_SMART_DEFAULT_MODE USB_CHARGE_MODE_CDP #define CONFIG_USB_PORT_POWER_SMART_SIMPLE +#define CONFIG_ADC + #define CONFIG_TEMP_SENSOR #define CONFIG_TEMP_SENSOR_TMP432 @@ -78,7 +80,6 @@ #undef CONFIG_PSTORE #undef CONFIG_PECI #undef CONFIG_FANS -#undef CONFIG_ADC #ifndef __ASSEMBLER__ #include "gpio_signal.h" @@ -91,6 +92,7 @@ /* ADC signal */ enum adc_channel { + ADC_TEMP, /* Number of ADC channels */ ADC_CH_COUNT }; diff --git a/board/terra/gpio.inc b/board/terra/gpio.inc index 26f03edea0..4cb9323b46 100644 --- a/board/terra/gpio.inc +++ b/board/terra/gpio.inc @@ -48,7 +48,6 @@ GPIO(PCH_SUS_STAT_L, PIN(51), GPIO_INT_FALLING) /* Signal to inf GPIO(NC_GPIO52, PIN(52), GPIO_INPUT | GPIO_PULL_UP) /* NC */ GPIO(TRACKPAD_PWREN, PIN(53), GPIO_OUT_HIGH) /* Enable power for Track Pad */ GPIO(USB_OC0_L, PIN(55), GPIO_INT_FALLING) /* Over current signal of the BC1.2 charger to EC */ -GPIO(ADC_TEMP_SENSOR_1, PIN(56), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_GPIO57, PIN(57), GPIO_INPUT | GPIO_PULL_UP) /* NC */ GPIO(ADC_BC_PMON, PIN(60), GPIO_INPUT | GPIO_PULL_UP) GPIO(NC_GPIO61, PIN(61), GPIO_INPUT | GPIO_PULL_UP) /* NC */ |