summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiana Z <dzigterman@chromium.org>2020-03-19 14:22:17 -0600
committerCommit Bot <commit-bot@chromium.org>2020-03-26 00:28:16 +0000
commit002db692bc570732d5a2c347085d71bec77c1402 (patch)
tree57eeccc0d301de095f8820e275ab0888452a3411
parent44a4f02980689e156c74161a32943b1a0b30ec0e (diff)
downloadchrome-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.h8
-rw-r--r--baseboard/dedede/variant_ec_it8320.c56
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[] = {