diff options
author | Diana Z <dzigterman@chromium.org> | 2020-03-19 14:22:17 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-03-26 00:28:16 +0000 |
commit | 002db692bc570732d5a2c347085d71bec77c1402 (patch) | |
tree | 57eeccc0d301de095f8820e275ab0888452a3411 | |
parent | 44a4f02980689e156c74161a32943b1a0b30ec0e (diff) | |
download | chrome-ec-002db692bc570732d5a2c347085d71bec77c1402.tar.gz |
Waddledee: Set up ADC thresholds for PP3300_A_PGOOD
This configures the ADC threshold interrupts for ITE dedede variants,
and has them set the baseboard pp3300_a_pgood flag.
BUG=b:149094481
BRANCH=None
TEST=make -j buildall
Signed-off-by: Diana Z <dzigterman@chromium.org>
Change-Id: I0a0af6f8c7093a5ce3a618cf04d25b062e6a96d5
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2110975
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
-rw-r--r-- | baseboard/dedede/baseboard.h | 8 | ||||
-rw-r--r-- | baseboard/dedede/variant_ec_it8320.c | 56 |
2 files changed, 63 insertions, 1 deletions
diff --git a/baseboard/dedede/baseboard.h b/baseboard/dedede/baseboard.h index a7e7168b28..40bd6b0224 100644 --- a/baseboard/dedede/baseboard.h +++ b/baseboard/dedede/baseboard.h @@ -54,6 +54,8 @@ #define I2C_ADDR_EEPROM_FLAGS 0x50 + #define CONFIG_ADC_VOLTAGE_COMPARATOR /* ITE ADC thresholds */ + #define CONFIG_CHARGER_SM5803 /* C0 and C1: Charger */ #define CONFIG_FPU /* For charger calculations */ #define CONFIG_USB_PD_VBUS_DETECT_CHARGER @@ -222,6 +224,12 @@ ADC_SUB_ANALOG, /* ADC13 */ ADC_CH_COUNT }; + + enum board_vcmp { + VCMP_SNS_PP3300_LOW, + VCMP_SNS_PP3300_HIGH, + VCMP_COUNT + }; #else #error "Must define a VARIANT_DEDEDE_EC!" #endif diff --git a/baseboard/dedede/variant_ec_it8320.c b/baseboard/dedede/variant_ec_it8320.c index 8fa134ab1b..ed1d13b360 100644 --- a/baseboard/dedede/variant_ec_it8320.c +++ b/baseboard/dedede/variant_ec_it8320.c @@ -6,6 +6,7 @@ /* Common code for VARIANT_DEDEDE_IT8320 configuration */ #include "adc_chip.h" +#include "atomic.h" #include "charge_manager.h" #include "charge_state_v2.h" #include "charger.h" @@ -45,7 +46,60 @@ const struct adc_t adc_channels[] = { }; BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT); -/* TODO(b/149094481): Set up ADC comparator interrupts for ITE */ +static void pp3300_a_pgood_low(void) +{ + atomic_clear(&pp3300_a_pgood, 1); + + /* Disable low interrupt while asserted */ + vcmp_enable(VCMP_SNS_PP3300_LOW, 0); + + /* Enable high interrupt */ + vcmp_enable(VCMP_SNS_PP3300_HIGH, 1); + + /* + * Call power_signal_interrupt() with a dummy GPIO in order for the + * chipset task to pick up the change in power sequencing signals. + */ + power_signal_interrupt(GPIO_PG_EC_DSW_PWROK); +} + +static void pp3300_a_pgood_high(void) +{ + atomic_or(&pp3300_a_pgood, 1); + + /* Disable high interrupt while asserted */ + vcmp_enable(VCMP_SNS_PP3300_HIGH, 0); + + /* Enable low interrupt */ + vcmp_enable(VCMP_SNS_PP3300_LOW, 1); + + /* + * Call power_signal_interrupt() with a dummy GPIO in order for the + * chipset task to pick up the change in power sequencing signals. + */ + power_signal_interrupt(GPIO_PG_EC_DSW_PWROK); +} + +const struct vcmp_t vcmp_list[] = { + [VCMP_SNS_PP3300_LOW] = { + .name = "VCMP_SNS_PP3300_LOW", + .threshold = 600, /* mV */ + .flag = LESS_EQUAL_THRESHOLD, + .vcmp_thresh_cb = &pp3300_a_pgood_low, + .scan_period = VCMP_SCAN_PERIOD_600US, + .adc_ch = CHIP_ADC_CH0, + }, + [VCMP_SNS_PP3300_HIGH] = { + .name = "VCMP_SNS_PP3300_HIGH", + .threshold = 2700, /* mV */ + .flag = GREATER_THRESHOLD, + .vcmp_thresh_cb = &pp3300_a_pgood_high, + .scan_period = VCMP_SCAN_PERIOD_600US, + .adc_ch = CHIP_ADC_CH0, + }, +}; +BUILD_ASSERT(ARRAY_SIZE(vcmp_list) <= CHIP_VCMP_COUNT); +BUILD_ASSERT(ARRAY_SIZE(vcmp_list) == VCMP_COUNT); /* BC12 chips */ const struct pi3usb9201_config_t pi3usb9201_bc12_chips[] = { |