diff options
Diffstat (limited to 'board/berknip')
-rw-r--r-- | board/berknip/board.c | 48 | ||||
-rw-r--r-- | board/berknip/board.h | 2 | ||||
-rw-r--r-- | board/berknip/gpio.inc | 2 |
3 files changed, 51 insertions, 1 deletions
diff --git a/board/berknip/board.c b/board/berknip/board.c index 634168dc89..74b1654f9c 100644 --- a/board/berknip/board.c +++ b/board/berknip/board.c @@ -30,6 +30,7 @@ #include "system.h" #include "task.h" #include "temp_sensor.h" +#include "thermistor.h" #include "usb_charge.h" #include "usb_mux.h" @@ -317,7 +318,48 @@ const struct fan_t fans[] = { }; BUILD_ASSERT(ARRAY_SIZE(fans) == FAN_CH_COUNT); +__override int board_get_temp(int idx, int *temp_k) +{ + int mv; + int temp_c; + enum adc_channel channel; + + /* idx is the sensor index set in board temp_sensors[] */ + switch (idx) { + case TEMP_SENSOR_CHARGER: + channel = ADC_TEMP_SENSOR_CHARGER; + break; + case TEMP_SENSOR_SOC: + /* thermistor is not powered in G3 */ + if (chipset_in_state(CHIPSET_STATE_HARD_OFF)) + return EC_ERROR_NOT_POWERED; + + channel = ADC_TEMP_SENSOR_SOC; + break; + case TEMP_SENSOR_5V_REGULATOR: + channel = ADC_TEMP_SENSOR_5V_REGULATOR; + break; + default: + return EC_ERROR_INVAL; + } + + mv = adc_read_channel(channel); + if (mv < 0) + return EC_ERROR_INVAL; + + temp_c = thermistor_linear_interpolate(mv, &thermistor_info); + *temp_k = C_TO_K(temp_c); + return EC_SUCCESS; +} + const struct adc_t adc_channels[] = { + [ADC_TEMP_SENSOR_5V_REGULATOR] = { + .name = "5V_REGULATOR", + .input_ch = NPCX_ADC_CH0, + .factor_mul = ADC_MAX_VOLT, + .factor_div = ADC_READ_MAX + 1, + .shift = 0, + }, [ADC_TEMP_SENSOR_CHARGER] = { .name = "CHARGER", .input_ch = NPCX_ADC_CH2, @@ -354,6 +396,12 @@ const struct temp_sensor_t temp_sensors[] = { .read = sb_tsi_get_val, .idx = 0, }, + [TEMP_SENSOR_5V_REGULATOR] = { + .name = "5V_REGULATOR", + .type = TEMP_SENSOR_TYPE_BOARD, + .read = board_get_temp, + .idx = TEMP_SENSOR_5V_REGULATOR, + }, }; BUILD_ASSERT(ARRAY_SIZE(temp_sensors) == TEMP_SENSOR_COUNT); diff --git a/board/berknip/board.h b/board/berknip/board.h index 83e5614ab6..9fa3da69f4 100644 --- a/board/berknip/board.h +++ b/board/berknip/board.h @@ -70,6 +70,7 @@ #ifndef __ASSEMBLER__ enum adc_channel { + ADC_TEMP_SENSOR_5V_REGULATOR, ADC_TEMP_SENSOR_CHARGER, ADC_TEMP_SENSOR_SOC, ADC_CH_COUNT @@ -97,6 +98,7 @@ enum temp_sensor_id { TEMP_SENSOR_CHARGER = 0, TEMP_SENSOR_SOC, TEMP_SENSOR_CPU, + TEMP_SENSOR_5V_REGULATOR, TEMP_SENSOR_COUNT }; diff --git a/board/berknip/gpio.inc b/board/berknip/gpio.inc index f9d7a502ae..3195c2336e 100644 --- a/board/berknip/gpio.inc +++ b/board/berknip/gpio.inc @@ -122,7 +122,7 @@ ALTERNATE(PIN_MASK(3, BIT(3) | BIT(6)), 0, MODULE_I2C, 0) /* I2C5 */ ALTERNATE(PIN_MASK(E, BIT(3) | BIT(4)), 0, MODULE_I2C, 0) /* I2C6 */ ALTERNATE(PIN_MASK(B, BIT(2) | BIT(3)), 0, MODULE_I2C, 0) /* I2C7 */ -ALTERNATE(PIN_MASK(4, BIT(2) | BIT(3)), 0, MODULE_ADC, 0) /* ADC2, ADC3 Temp Sensors */ +ALTERNATE(PIN_MASK(4, BIT(0) | BIT(2) | BIT(3)), 0, MODULE_ADC, 0) /* ADC0, ADC2, ADC3 Temp Sensors */ ALTERNATE(PIN_MASK(C, BIT(3)), 0, MODULE_PWM, 0) /* PWM0 LED */ ALTERNATE(PIN_MASK(C, BIT(4)), 0, MODULE_PWM, 0) /* PWM2 - EC_FAN_PWM */ |