From 0825fdf352d29430c8a3415f80371e0d8dacd20e Mon Sep 17 00:00:00 2001 From: Vic Yang Date: Mon, 5 Jan 2015 15:58:07 -0800 Subject: [PATCH] Read ADC channels one by one for STM32F Currently, we are seeing problem with adc_read_all_channels() for STM32F, and thus 'adc' console command reports incorrect values. Before that's fixed, read ADC channels one by one to work around this problem. BRANCH=Ryu BUG=chrome-os-partner:33971 TEST='adc' on Ryu Signed-off-by: Vic Yang Change-Id: Iae92b82b24f6a843b9d46a8804da1e51d33ed7cb Reviewed-on: https://chromium-review.googlesource.com/231125 Reviewed-by: Vincent Palatin --- chip/stm32/adc-stm32f.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/chip/stm32/adc-stm32f.c b/chip/stm32/adc-stm32f.c index d1ffcd7f63..1d71b37c86 100644 --- a/chip/stm32/adc-stm32f.c +++ b/chip/stm32/adc-stm32f.c @@ -59,7 +59,7 @@ static void adc_configure(int ain_id) STM32_ADC_CR1 &= ~(1 << 8); } -static void adc_configure_all(void) +static void __attribute__((unused)) adc_configure_all(void) { int i; @@ -210,6 +210,11 @@ int adc_read_channel(enum adc_channel ch) value * adc->factor_mul / adc->factor_div + adc->shift; } +/* + * adc_read_all_channels() is not working properly on STM32F373. + * TODO(crosbug.com/p/33971): Fix it. + */ +#if 0 int adc_read_all_channels(int *data) { int i; @@ -255,6 +260,15 @@ exit_all_channels: mutex_unlock(&adc_lock); return ret; } +#endif + +int adc_read_all_channels(int *data) +{ + int i; + for (i = 0; i < ADC_CH_COUNT; ++i) + data[i] = adc_read_channel(i); + return EC_SUCCESS; +} static void adc_init(void) {