mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-11 18:35:28 +00:00
poppy: Add 4th board id strap, with ternary encoding
The first 3 board id straps stay binary, and the 4th is a tristate, set as Z on all existing boards, so we translate Z=>0, 0=>1, 1=>2. A few examples: Z000 => rev0 (Z=>0 * 8 + 0b000 = 0) Z010 => rev2 (Z=>0 * 8 + 0b010 = 2) Z111 => rev7 (Z=>0 * 8 + 0b111 = 7) 0000 => rev8 (0=>1 * 8 + 0b000 = 8) 1001 => rev17 (1=>2 * 8 + 0b001 = 17) BRANCH=none BUG=b:62242438 TEST=make BOARD=poppy -j, flash, rev0/1/2 shows "Board ID" correctly. Change-Id: Ifde5e1200b19a17a677875b0464775bd1cd8af1f Reviewed-on: https://chromium-review.googlesource.com/522083 Commit-Ready: Nicolas Boichat <drinkcat@chromium.org> Tested-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-by: Furquan Shaikh <furquan@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
3a8bba3bc3
commit
32d883ff53
@@ -705,6 +705,36 @@ void board_hibernate(void)
|
||||
;
|
||||
}
|
||||
|
||||
int board_get_version(void)
|
||||
{
|
||||
static int ver = -1;
|
||||
uint8_t id4;
|
||||
|
||||
if (ver != -1)
|
||||
return ver;
|
||||
|
||||
ver = 0;
|
||||
|
||||
/* First 3 strappings are binary. */
|
||||
if (gpio_get_level(GPIO_BOARD_VERSION1))
|
||||
ver |= 0x01;
|
||||
if (gpio_get_level(GPIO_BOARD_VERSION2))
|
||||
ver |= 0x02;
|
||||
if (gpio_get_level(GPIO_BOARD_VERSION3))
|
||||
ver |= 0x04;
|
||||
|
||||
/*
|
||||
* 4th bit is using tristate strapping, ternary encoding:
|
||||
* Hi-Z (id4=2) => 0, (id4=0) => 1, (id4=1) => 2
|
||||
*/
|
||||
id4 = gpio_get_ternary(GPIO_BOARD_VERSION4);
|
||||
ver |= ((id4 + 1) % 3) * 0x08;
|
||||
|
||||
CPRINTS("Board ID = %d", ver);
|
||||
|
||||
return ver;
|
||||
}
|
||||
|
||||
/* Lid Sensor mutex */
|
||||
static struct mutex g_lid_mutex;
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
/* EC */
|
||||
#define CONFIG_ADC
|
||||
#define CONFIG_BOARD_VERSION
|
||||
#define CONFIG_BOARD_SPECIFIC_VERSION
|
||||
#define CONFIG_BUTTON_COUNT 2
|
||||
#define CONFIG_BUTTON_RECOVERY
|
||||
#define CONFIG_CASE_CLOSED_DEBUG_EXTERNAL
|
||||
|
||||
@@ -115,6 +115,7 @@ GPIO(LED_WHITE_C1, PIN(3, 0), GPIO_OUT_LOW)
|
||||
GPIO(BOARD_VERSION1, PIN(C, 4), GPIO_INPUT) /* Board ID bit0 */
|
||||
GPIO(BOARD_VERSION2, PIN(C, 2), GPIO_INPUT) /* Board ID bit1 */
|
||||
GPIO(BOARD_VERSION3, PIN(1, 3), GPIO_INPUT) /* Board ID bit2 */
|
||||
GPIO(BOARD_VERSION4, PIN(1, 7), GPIO_INPUT) /* Board ID strap 3 (ternary) */
|
||||
|
||||
/* Alternate functions GPIO definitions */
|
||||
ALTERNATE(PIN_MASK(6, 0x30), 1, MODULE_UART, 0) /* GPIO64-65 */ /* UART from EC to Servo */
|
||||
|
||||
Reference in New Issue
Block a user