diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2019-04-09 10:56:57 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-04-11 09:32:36 -0700 |
commit | 7299e370e6c2ad7c86c90d9882a69c85958f24c7 (patch) | |
tree | 655580994f6db77fce6da9a6a2d166f5754e9599 | |
parent | 0edf521353afda4e3975352489d62a03df1927e8 (diff) | |
download | chrome-ec-7299e370e6c2ad7c86c90d9882a69c85958f24c7.tar.gz |
Flapjack: Use board_read_id to read BATT_ID
This patch makes Flapjack read BATT_ID using board_read_id. There is
no functional changes.
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
BUG=b/126770302
BRANCH=none
TEST=Buildall
Change-Id: Iae60f36d6df25cb1aa910fecd721d0740ebe29c0
Reviewed-on: https://chromium-review.googlesource.com/1559104
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
-rw-r--r-- | board/flapjack/battery.c | 24 | ||||
-rw-r--r-- | board/flapjack/board.c | 16 | ||||
-rw-r--r-- | board/flapjack/board.h | 9 |
3 files changed, 29 insertions, 20 deletions
diff --git a/board/flapjack/battery.c b/board/flapjack/battery.c index 6ba167b3fe..f7d5afc1ef 100644 --- a/board/flapjack/battery.c +++ b/board/flapjack/battery.c @@ -150,35 +150,19 @@ static const struct { }, }; -static struct { - enum battery_type type; - int expect_mv; -} const batteries[] = { +static const struct mv_to_id batteries[] = { { BATTERY_C18_ATL, 900 }, /* 100K */ { BATTERY_C19_ATL, 576 }, /* 47K */ }; BUILD_ASSERT(ARRAY_SIZE(batteries) < BATTERY_COUNT); -#define MARGIN_MV 56 /* Simply assume 1800/16/2 */ - static enum battery_type batt_type = BATTERY_UNKNOWN; static void board_get_battery_type(void) { - int mv; - int i; - - mv = adc_read_channel(ADC_BATT_ID); - if (mv == ADC_READ_ERROR) - mv = adc_read_channel(ADC_BATT_ID); - - for (i = 0; i < ARRAY_SIZE(batteries); i++) { - if (ABS(mv - batteries[i].expect_mv) < MARGIN_MV) { - batt_type = batteries[i].type; - break; - } - } - + int id = board_read_id(ADC_BATT_ID, batteries, ARRAY_SIZE(batteries)); + if (id != ADC_READ_ERROR) + batt_type = id; CPRINTS("Battery Type: %d", batt_type); } DECLARE_HOOK(HOOK_INIT, board_get_battery_type, HOOK_PRIO_FIRST); diff --git a/board/flapjack/board.c b/board/flapjack/board.c index 23f42c1cd4..862a6c12a4 100644 --- a/board/flapjack/board.c +++ b/board/flapjack/board.c @@ -54,6 +54,22 @@ uint16_t board_version; uint8_t oem; uint32_t sku; +int board_read_id(enum adc_channel ch, const struct mv_to_id *table, int size) +{ + int mv = adc_read_channel(ch); + int i; + + if (mv == ADC_READ_ERROR) + mv = adc_read_channel(ch); + + for (i = 0; i < size; i++) { + if (ABS(mv - table[i].median_mv) < ADC_MARGIN_MV) + return table[i].id; + } + + return ADC_READ_ERROR; +} + static void board_setup_panel(void) { uint8_t channel; diff --git a/board/flapjack/board.h b/board/flapjack/board.h index 1c41659577..ebe887d3cb 100644 --- a/board/flapjack/board.h +++ b/board/flapjack/board.h @@ -279,6 +279,15 @@ void emmc_cmd_interrupt(enum gpio_signal signal); void board_reset_pd_mcu(void); +#define ADC_MARGIN_MV 56 /* Simply assume 1800/16/2 */ + +struct mv_to_id { + int id; + int median_mv; +}; + +int board_read_id(enum adc_channel, const struct mv_to_id *table, int size); + #endif /* !__ASSEMBLER__ */ #endif /* __CROS_EC_BOARD_H */ |