nautilus: Support tristate board id strapping pin

With 3 binary strapping pins, we only have 7 available board ids:
000, 001, 010, 011, 100, 101, 110, 111.

Let's make the MSB of board id tristate. So we can have 4 more
board ids to use:
Z00, Z01, Z10, Z11.

BUG=b:77731277
BRANCH=poppy
TEST=build nautilus

Change-Id: I7aebb89437d2ccb9eea6c477155b25d964983232
Signed-off-by: Philip Chen <philipchen@google.com>
Reviewed-on: https://chromium-review.googlesource.com/1000875
Commit-Ready: Philip Chen <philipchen@chromium.org>
Tested-by: Philip Chen <philipchen@chromium.org>
Reviewed-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
This commit is contained in:
Philip Chen
2018-04-06 18:03:12 -07:00
committed by chrome-bot
parent 45fbc3b938
commit eab54036ea
2 changed files with 29 additions and 0 deletions

View File

@@ -580,6 +580,34 @@ void board_hibernate(void)
;
}
int board_get_version(void)
{
static int ver = -1;
uint8_t id3;
if (ver != -1)
return ver;
ver = 0;
/* First 2 strappings are binary. */
if (gpio_get_level(GPIO_BOARD_VERSION1))
ver |= 0x01;
if (gpio_get_level(GPIO_BOARD_VERSION2))
ver |= 0x02;
/*
* The 3rd strapping pin is tristate.
* id3 = 2 if Hi-Z, id3 = 1 if high, and id3 = 0 if low.
*/
id3 = gpio_get_ternary(GPIO_BOARD_VERSION3);
ver |= id3 * 0x04;
CPRINTS("Board ID = %d", ver);
return ver;
}
/* Lid Sensor mutex */
static struct mutex g_lid_mutex;
static struct mutex g_base_mutex;

View File

@@ -18,6 +18,7 @@
#define CONFIG_ADC
#define CONFIG_BACKLIGHT_LID
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_FORCE_RESET_PIN
#define CONFIG_CASE_CLOSED_DEBUG_EXTERNAL
#define CONFIG_DPTF