summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2019-04-09 10:56:57 -0700
committerchrome-bot <chrome-bot@chromium.org>2019-04-11 09:32:36 -0700
commit7299e370e6c2ad7c86c90d9882a69c85958f24c7 (patch)
tree655580994f6db77fce6da9a6a2d166f5754e9599
parent0edf521353afda4e3975352489d62a03df1927e8 (diff)
downloadchrome-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.c24
-rw-r--r--board/flapjack/board.c16
-rw-r--r--board/flapjack/board.h9
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 */