yorp: use cbi for board version

Replace ADC-based board version with CBI/EEPROM board version. This will
cause all of the existing boards to report -1 (or 65535) as their
board version until you can update it from the kernel.

To set your board version to 0 run the following command in
the AP console when WP if off (e.g. battery removed)

$ ectool cbi set 0 0 1 2

BRANCH=none
BUG=b:77551185,b:77900842
TEST=wrote to cbi from ap console and verify flash state on
ap and ec console

Change-Id: I03987cc89ca4c14580dcf61de23780fe5304663b
Signed-off-by: Jett Rink <jettrink@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1008832
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
Jett Rink
2018-04-11 16:54:10 -06:00
committed by chrome-bot
parent 133fe0668c
commit 7824f5656d
3 changed files with 3 additions and 87 deletions

View File

@@ -89,12 +89,6 @@ const struct adc_t adc_channels[] = {
/* Vbus C1 sensing (10x voltage divider). PPVAR_USB_C1_VBUS */
[ADC_VBUS_C1] = {
"VBUS_C1", NPCX_ADC_CH9, ADC_MAX_VOLT*10, ADC_READ_MAX+1, 0},
/* Board ID 1. Least Significant nibble */
[ADC_BRD_ID1] = {
"BRD_ID1", NPCX_ADC_CH6, ADC_MAX_VOLT, ADC_READ_MAX+1, 0},
/* Board ID 2. Most Significant nibble */
[ADC_BRD_ID2] = {
"BRD_ID2", NPCX_ADC_CH7, ADC_MAX_VOLT, ADC_READ_MAX+1, 0},
};
BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
@@ -327,82 +321,6 @@ uint16_t tcpc_get_alert_status(void)
return status;
}
static const int UNKNOWN_BRD_ID = -1;
static const int board_id_thresh_mv[] = {
/* Vin = 3.3V, Ideal voltage, R2 values listed below */
/* R1 = 51.1 kOhm */
200, /* 124 mV, 2.0 Kohm */
366, /* 278 mV, 4.7 Kohm */
550, /* 456 mV, 8.2 Kohm */
752, /* 644 mV, 12.4 Kohm */
927, /* 860 mV, 18.0 Kohm */
1073, /* 993 mV, 22.0 Kohm */
1235, /* 1152 mV, 27.4 Kohm */
1386, /* 1318 mV, 34.0 Kohm */
1552, /* 1453 mV, 40.2 Kohm */
/* R1 = 10.0 kOhm */
1739, /* 1650 mV, 10.0 Kohm */
1976, /* 1827 mV, 12.4 Kohm */
2197, /* 2121 mV, 18.0 Kohm */
2344, /* 2269 mV, 22.0 Kohm */
2484, /* 2418 mV, 27.4 Kohm */
2636, /* 2550 mV, 34.0 Kohm */
2823, /* 2721 mV, 47.0 Kohm */
};
static int read_board_id_adc(enum adc_channel chan)
{
int mv;
int i;
mv = adc_read_channel(chan);
cprints(CC_SYSTEM, "BOARD ID ADC %d = %d mV",
chan == ADC_BRD_ID1 ? 1 : 2, mv);
if (mv == ADC_READ_ERROR)
return UNKNOWN_BRD_ID;
for (i = 0; i < ARRAY_SIZE(board_id_thresh_mv); i++)
if (mv < board_id_thresh_mv[i])
return i;
return UNKNOWN_BRD_ID;
}
int board_get_version(void)
{
static int version = UNKNOWN_BRD_ID;
int level;
if (version != UNKNOWN_BRD_ID)
return version;
/* Enabled Board ID circuit and wait for it to stabilize. */
gpio_set_level(GPIO_EC_BRD_ID_EN, 1);
msleep(1);
level = read_board_id_adc(ADC_BRD_ID1);
if (level == UNKNOWN_BRD_ID)
goto error;
version = level & 0x0F;
level = read_board_id_adc(ADC_BRD_ID2);
if (level == UNKNOWN_BRD_ID)
goto error;
version = version | ((level & 0x0F) << 4);
gpio_set_level(GPIO_EC_BRD_ID_EN, 0);
cprints(CC_SYSTEM, "Board version: %d", version);
return version;
error:
gpio_set_level(GPIO_EC_BRD_ID_EN, 0);
cprints(CC_SYSTEM, "Board version unknown!");
version = UNKNOWN_BRD_ID;
return version;
}
/* Keyboard scan setting */
struct keyboard_scan_config keyscan_config = {
/*

View File

@@ -32,6 +32,8 @@
#define CONFIG_VSTORE_SLOT_COUNT 1
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_CRC8
#define CONFIG_CROS_BOARD_INFO
/* Keyboard */
#define CONFIG_CMD_KEYBOARD
#define CONFIG_KEYBOARD_BOARD_CONFIG
@@ -120,6 +122,7 @@
#define I2C_PORT_EEPROM NPCX_I2C_PORT3_0
#define I2C_PORT_CHARGER NPCX_I2C_PORT4_1
#define I2C_PORT_SENSOR NPCX_I2C_PORT7_0
#define I2C_ADDR_EEPROM 0xA0
/* Sensors */
#define CONFIG_ACCEL_KX022 /* Lid accel */
@@ -160,8 +163,6 @@
enum adc_channel {
ADC_VBUS_C0,
ADC_VBUS_C1,
ADC_BRD_ID1,
ADC_BRD_ID2,
ADC_CH_COUNT
};

View File

@@ -106,9 +106,6 @@ GPIO(USB_C1_HPD_1V8_ODL, PIN(C, 6), GPIO_INPUT | /* C1 DP Hotplug Detect */
GPIO(BAT_LED_ORANGE_L, PIN(C, 3), GPIO_OUT_HIGH) /* LED_1_L */
GPIO(BAT_LED_BLUE_L, PIN(C, 4), GPIO_OUT_HIGH) /* LED_2_L */
/* Board IDs */
GPIO(EC_BRD_ID_EN, PIN(9, 6), GPIO_OUT_LOW)
/* Keyboard pins */
ALTERNATE(PIN_MASK(3, 0x03), 0, MODULE_KEYBOARD_SCAN, GPIO_INPUT) /* KSI_00-01 */
ALTERNATE(PIN_MASK(2, 0xFC), 0, MODULE_KEYBOARD_SCAN, GPIO_INPUT) /* KSI_02-07 */