mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-01 21:02:27 +00:00
coral: Update board version table to account for 16 levels
Coral has 16 voltage levels utilized for board ID. Compared to 8 for Reef. This CL updates the board_version table to account for 16 board version entries. In addition, insted of using a fixed error percentage upper error bar, the table entries have been set to be the mid point between two consecutive voltage levels. MOdified the existing board_get_version() function so that it calls a common function since this needs to be repeated for both board ID and board SKUs. Modified gpio enable signal name to match the schematic. Coral uses an active high enable. Added an EC console command with options id|sku0|sku1 to test each option. This CL does not include the function which will be used with the host command interface so the AP can retrieve the sku 0|1 values. BUG=b:62519010 BRANCH=none TEST=MANUAL Using the console command board_id shows the following: > board_id Wrong number of params Usage: board_id <id | sku0 | sku1> > board_id id [44.484516 ID/SKU ADC 2 = 123 mV] Board id|sku: chan 2 = 0 > board_id sku0 [56.850566 ID/SKU ADC 4 = 123 mV] Board id|sku: chan 4 = 0 > board_id sku1 [65.547598 ID/SKU ADC 3 = 123 mV] Board id|sku: chan 3 = 0 Change-Id: Iaba146c12c6d9d2c57973569d51c1b7ad3212455 Signed-off-by: Scott Collyer <scollyer@google.com> Reviewed-on: https://chromium-review.googlesource.com/530907 Commit-Ready: Scott Collyer <scollyer@chromium.org> Tested-by: Scott Collyer <scollyer@chromium.org> Reviewed-by: Patrick Georgi <pgeorgi@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
32d883ff53
commit
3423baba30
@@ -148,6 +148,12 @@ const struct adc_t adc_channels[] = {
|
||||
[ADC_BOARD_ID] = {
|
||||
"BRD_ID", NPCX_ADC_CH2, ADC_MAX_VOLT, ADC_READ_MAX + 1, 0
|
||||
},
|
||||
[ADC_BOARD_SKU_1] = {
|
||||
"BRD_SKU_1", NPCX_ADC_CH3, ADC_MAX_VOLT, ADC_READ_MAX + 1, 0
|
||||
},
|
||||
[ADC_BOARD_SKU_0] = {
|
||||
"BRD_SKU_0", NPCX_ADC_CH4, ADC_MAX_VOLT, ADC_READ_MAX + 1, 0
|
||||
},
|
||||
};
|
||||
BUILD_ASSERT(ARRAY_SIZE(adc_channels) == ADC_CH_COUNT);
|
||||
|
||||
@@ -1078,35 +1084,42 @@ struct {
|
||||
enum coral_board_version version;
|
||||
int thresh_mv;
|
||||
} const coral_board_versions[] = {
|
||||
/* Vin = 3.3V, R1 = 46.4K, R2 values listed below */
|
||||
{ BOARD_VERSION_1, 328 * 1.03 }, /* 5.11 Kohm */
|
||||
{ BOARD_VERSION_2, 670 * 1.03 }, /* 11.8 Kohm */
|
||||
{ BOARD_VERSION_3, 1012 * 1.03 }, /* 20.5 Kohm */
|
||||
{ BOARD_VERSION_4, 1357 * 1.03 }, /* 32.4 Kohm */
|
||||
{ BOARD_VERSION_5, 1690 * 1.03 }, /* 48.7 Kohm */
|
||||
{ BOARD_VERSION_6, 2020 * 1.03 }, /* 73.2 Kohm */
|
||||
{ BOARD_VERSION_7, 2352 * 1.03 }, /* 115 Kohm */
|
||||
{ BOARD_VERSION_8, 2802 * 1.03 }, /* 261 Kohm */
|
||||
/* Vin = 3.3V, Ideal voltage, R2 values listed below */
|
||||
/* R1 = 51.1 kOhm */
|
||||
{ BOARD_VERSION_1, 200 }, /* 124 mV, 2.0 Kohm */
|
||||
{ BOARD_VERSION_2, 366 }, /* 278 mV, 4.7 Kohm */
|
||||
{ BOARD_VERSION_3, 550 }, /* 456 mV, 8.2 Kohm */
|
||||
{ BOARD_VERSION_4, 752 }, /* 644 mV, 12.4 Kohm */
|
||||
{ BOARD_VERSION_5, 927}, /* 860 mV, 18.0 Kohm */
|
||||
{ BOARD_VERSION_6, 1073 }, /* 993 mV, 22.0 Kohm */
|
||||
{ BOARD_VERSION_7, 1235 }, /* 1152 mV, 27.4 Kohm */
|
||||
{ BOARD_VERSION_8, 1386 }, /* 1318 mV, 34.0 Kohm */
|
||||
{ BOARD_VERSION_9, 1552 }, /* 1453 mV, 40.2 Kohm */
|
||||
/* R1 = 10.0 kOhm */
|
||||
{ BOARD_VERSION_10, 1739 }, /* 1650 mV, 10.0 Kohm */
|
||||
{ BOARD_VERSION_11, 1976 }, /* 1827 mV, 12.4 Kohm */
|
||||
{ BOARD_VERSION_12, 2197 }, /* 2121 mV, 18.0 Kohm */
|
||||
{ BOARD_VERSION_13, 2344 }, /* 2269 mV, 22.0 Kohm */
|
||||
{ BOARD_VERSION_14, 2484 }, /* 2418 mV, 27.4 Kohm */
|
||||
{ BOARD_VERSION_15, 2636 }, /* 2550 mV, 34.0 Kohm */
|
||||
{ BOARD_VERSION_16, 2823 }, /* 2721 mV, 47.0 Kohm */
|
||||
};
|
||||
BUILD_ASSERT(ARRAY_SIZE(coral_board_versions) == BOARD_VERSION_COUNT);
|
||||
|
||||
int board_get_version(void)
|
||||
static int board_read_version(enum adc_channel chan)
|
||||
{
|
||||
static int version = BOARD_VERSION_UNKNOWN;
|
||||
int mv, i;
|
||||
int mv;
|
||||
int i;
|
||||
int version;
|
||||
|
||||
if (version != BOARD_VERSION_UNKNOWN)
|
||||
return version;
|
||||
|
||||
/* FIXME(dhendrix): enable ADC */
|
||||
gpio_set_flags(GPIO_EC_BRD_ID_EN_ODL, GPIO_ODR_HIGH);
|
||||
gpio_set_level(GPIO_EC_BRD_ID_EN_ODL, 0);
|
||||
/* ID/SKU enable is active high */
|
||||
gpio_set_flags(GPIO_EC_BRD_ID_EN, GPIO_OUT_HIGH);
|
||||
/* Wait to allow cap charge */
|
||||
msleep(1);
|
||||
mv = adc_read_channel(ADC_BOARD_ID);
|
||||
/* FIXME(dhendrix): disable ADC */
|
||||
gpio_set_level(GPIO_EC_BRD_ID_EN_ODL, 1);
|
||||
gpio_set_flags(GPIO_EC_BRD_ID_EN_ODL, GPIO_INPUT);
|
||||
mv = adc_read_channel(chan);
|
||||
CPRINTS("ID/SKU ADC %d = %d mV", chan, mv);
|
||||
/* Disable ID/SKU circuit */
|
||||
gpio_set_flags(GPIO_EC_BRD_ID_EN, GPIO_INPUT);
|
||||
|
||||
if (mv == ADC_READ_ERROR) {
|
||||
version = BOARD_VERSION_UNKNOWN;
|
||||
@@ -1120,10 +1133,47 @@ int board_get_version(void)
|
||||
}
|
||||
}
|
||||
|
||||
return version;
|
||||
}
|
||||
|
||||
int board_get_version(void)
|
||||
{
|
||||
static int version = BOARD_VERSION_UNKNOWN;
|
||||
|
||||
if (version != BOARD_VERSION_UNKNOWN)
|
||||
return version;
|
||||
|
||||
version = board_read_version(ADC_BOARD_ID);
|
||||
|
||||
CPRINTS("Board version: %d", version);
|
||||
return version;
|
||||
}
|
||||
|
||||
static int command_board_id(int argc, char **argv)
|
||||
{
|
||||
enum adc_channel chan;
|
||||
|
||||
if (argc < 2)
|
||||
return EC_ERROR_PARAM_COUNT;
|
||||
|
||||
if (!strcasecmp(argv[1], "id"))
|
||||
chan = ADC_BOARD_ID;
|
||||
else if (!strcasecmp(argv[1], "sku0"))
|
||||
chan = ADC_BOARD_SKU_0;
|
||||
else if (!strcasecmp(argv[1], "sku1"))
|
||||
chan = ADC_BOARD_SKU_1;
|
||||
else
|
||||
return EC_ERROR_PARAM1;
|
||||
|
||||
ccprintf("Board id|sku: chan %d = %d\n", chan,
|
||||
board_read_version(chan));
|
||||
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
DECLARE_CONSOLE_COMMAND(board_id, command_board_id,
|
||||
"<id|sku0|sku1>",
|
||||
"Get board id or sku");
|
||||
|
||||
/* Keyboard scan setting */
|
||||
struct keyboard_scan_config keyscan_config = {
|
||||
/*
|
||||
|
||||
@@ -226,6 +226,8 @@ enum adc_channel {
|
||||
ADC_TEMP_SENSOR_CHARGER, /* ADC0 */
|
||||
ADC_TEMP_SENSOR_AMB, /* ADC1 */
|
||||
ADC_BOARD_ID, /* ADC2 */
|
||||
ADC_BOARD_SKU_1, /* ADC3 */
|
||||
ADC_BOARD_SKU_0, /* ADC4 */
|
||||
ADC_CH_COUNT
|
||||
};
|
||||
|
||||
@@ -290,6 +292,14 @@ enum coral_board_version {
|
||||
BOARD_VERSION_6,
|
||||
BOARD_VERSION_7,
|
||||
BOARD_VERSION_8,
|
||||
BOARD_VERSION_9,
|
||||
BOARD_VERSION_10,
|
||||
BOARD_VERSION_11,
|
||||
BOARD_VERSION_12,
|
||||
BOARD_VERSION_13,
|
||||
BOARD_VERSION_14,
|
||||
BOARD_VERSION_15,
|
||||
BOARD_VERSION_16,
|
||||
BOARD_VERSION_COUNT,
|
||||
};
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ GPIO(PCH_SCI_L, PIN(A, 7), GPIO_ODR_HIGH | GPIO_SEL_1P8V) /* EC_SCI_ODL */
|
||||
GPIO(PCH_SLP_S0_L, PIN(7, 5), GPIO_INPUT) /* SLP_S0_L */
|
||||
|
||||
/* Enable for board and SKU ID ADCs */
|
||||
GPIO(EC_BRD_ID_EN_ODL, PIN(3, 5), GPIO_INPUT)
|
||||
GPIO(EC_BRD_ID_EN, PIN(3, 5), GPIO_INPUT)
|
||||
|
||||
GPIO(CCD_MODE_ODL, PIN(6, 3), GPIO_INPUT)
|
||||
GPIO(EC_HAVEN_RESET_ODL, PIN(0, 2), GPIO_ODR_HIGH)
|
||||
|
||||
Reference in New Issue
Block a user