diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2016-04-21 11:09:53 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-04-29 14:38:06 -0700 |
commit | 43a0c703465d22cadff185792ba34932c4b4ba3f (patch) | |
tree | a0b08e2844adfff6728ab3872b481e7146d37532 | |
parent | 90145968b22e9578cc2f008fa4a6947f6168d48a (diff) | |
download | chrome-ec-43a0c703465d22cadff185792ba34932c4b4ba3f.tar.gz |
kevin: Decode board version
Decode board version from analog voltage on BOARD_ID.
BUG=chrome-os-partner:52642
BRANCH=None
TEST=Verify 'ver' shows "Board: 0" on proto 1 board.
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Change-Id: Ifdbdd2e975e463ab45d81ee6eaa4ba017a2f29c0
Reviewed-on: https://chromium-review.googlesource.com/340241
Commit-Ready: Shawn N <shawnn@chromium.org>
Tested-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
-rw-r--r-- | board/kevin/board.c | 43 | ||||
-rw-r--r-- | board/kevin/board.h | 3 |
2 files changed, 46 insertions, 0 deletions
diff --git a/board/kevin/board.c b/board/kevin/board.c index b3169f9738..059055a84b 100644 --- a/board/kevin/board.c +++ b/board/kevin/board.c @@ -202,3 +202,46 @@ static void board_init(void) } } DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT); + +enum kevin_board_version { + BOARD_VERSION_UNKNOWN = -1, + BOARD_VERSION_PROTO1 = 0, + BOARD_VERSION_PROTO2 = 1, + BOARD_VERSION_FUTURE = 2, + BOARD_VERSION_COUNT, +}; + +struct { + enum kevin_board_version version; + int thresh_mv; +} const kevin_board_versions[] = { + { BOARD_VERSION_PROTO1, 150 }, /* 2.2 - 3.3 ohm */ + { BOARD_VERSION_PROTO2, 250 }, /* 6.8 - 7.32 ohm */ + { BOARD_VERSION_FUTURE, 3300 }, /* ??? ohm */ +}; +BUILD_ASSERT(ARRAY_SIZE(kevin_board_versions) == BOARD_VERSION_COUNT); + +int board_get_version(void) +{ + static int version = BOARD_VERSION_UNKNOWN; + int mv; + int i; + + if (version != BOARD_VERSION_UNKNOWN) + return version; + + gpio_set_level(GPIO_EC_BOARD_ID_EN_L, 0); + /* Wait to allow cap charge */ + msleep(1); + mv = adc_read_channel(ADC_BOARD_ID); + gpio_set_level(GPIO_EC_BOARD_ID_EN_L, 1); + + for (i = 0; i < BOARD_VERSION_COUNT; ++i) { + if (mv < kevin_board_versions[i].thresh_mv) { + version = kevin_board_versions[i].version; + break; + } + } + + return version; +} diff --git a/board/kevin/board.h b/board/kevin/board.h index 05f46339ee..c2356576e8 100644 --- a/board/kevin/board.h +++ b/board/kevin/board.h @@ -18,6 +18,8 @@ #define CONFIG_SYSTEM_UNLOCKED /* Allow dangerous commands for testing */ /* Optional features */ +#define CONFIG_BOARD_VERSION +#define CONFIG_BOARD_SPECIFIC_VERSION #define CONFIG_BUTTON_COUNT 2 #define CONFIG_FLASH_SIZE 0x00080000 /* 512KB spi flash */ #define CONFIG_I2C @@ -126,6 +128,7 @@ enum power_signal { #include "registers.h" void board_reset_pd_mcu(void); +int board_get_version(void); #endif /* !__ASSEMBLER__ */ |