system: update board version to return an error if encountered

Now that board version can come from CBI, we can have a real error
reading it. We should pass that error to the console or to the
AP on the host command and let the AP firmware (or user) decided how to
handle that error case

Also update the CONFIG_BOARD_VERSION to be derived instead of needed
in most cases.

BRANCH=none
BUG=b:77972120
TEST=Error reported on EC console and AP console when CBI is
 invalid on yorp

Change-Id: Ib8d80f610ea226265a61e68b61965150cdc9bb04
Signed-off-by: Jett Rink <jettrink@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1015776
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
This commit is contained in:
Jett Rink
2018-04-17 10:46:31 -06:00
committed by chrome-bot
parent d9386134c1
commit ff9248fbaa
34 changed files with 101 additions and 81 deletions

View File

@@ -25,8 +25,7 @@
/* EC */
#define CONFIG_ADC
#define CONFIG_BACKLIGHT_LID
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
#define CONFIG_BOARD_FORCE_RESET_PIN
#define CONFIG_DPTF
#define CONFIG_FPU

View File

@@ -20,7 +20,7 @@
#define CONFIG_BATTERY_PRESENT_GPIO GPIO_BAT_PRESENT_L
#define CONFIG_BATTERY_SMART
#define CONFIG_BOARD_HAS_RTC_RESET
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_GPIO
#define CONFIG_CHARGE_MANAGER
#define CONFIG_CHARGE_RAMP_HW

View File

@@ -114,8 +114,7 @@
/* EC */
#define CONFIG_ADC
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
#define CONFIG_EXTPOWER_GPIO
#undef CONFIG_EXTPOWER_DEBOUNCE_MS
#define CONFIG_EXTPOWER_DEBOUNCE_MS 1000

View File

@@ -74,7 +74,7 @@
#define CONFIG_VBOOT_HASH
#undef CONFIG_WATCHDOG_HELP
#define CONFIG_SWITCH
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_GPIO
#undef CONFIG_UART_CONSOLE
#define CONFIG_UART_CONSOLE 1
#define CONFIG_TEMP_SENSOR

View File

@@ -25,8 +25,7 @@
/* EC */
#define CONFIG_ADC
#define CONFIG_BACKLIGHT_LID
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
#define CONFIG_BOARD_FORCE_RESET_PIN
#define CONFIG_DEVICE_EVENT
#define CONFIG_DPTF

View File

@@ -17,8 +17,7 @@
/* EC */
#define CONFIG_ADC
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CBI
#define CONFIG_CRC8
#define CONFIG_CROS_BOARD_INFO
#define CONFIG_DEDICATED_RECOVERY_BUTTON
@@ -239,7 +238,6 @@ enum mft_channel {
#define PD_MAX_VOLTAGE_MV 20000
/* Board specific handlers */
int board_get_version(void);
void board_reset_pd_mcu(void);
void board_set_tcpc_power_mode(int port, int mode);
int board_get_battery_soc(void);

View File

@@ -22,7 +22,7 @@
#define CONFIG_BATTERY_CUT_OFF
#define CONFIG_BATTERY_PRESENT_GPIO GPIO_BAT_PRESENT_L
#define CONFIG_BATTERY_SMART
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_GPIO
#define CONFIG_CHARGE_MANAGER
#define CONFIG_CHARGE_RAMP_HW

View File

@@ -86,8 +86,7 @@
#define CONFIG_POWER_TRACK_HOST_SLEEP_STATE
/* EC */
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
#define CONFIG_VOLUME_BUTTONS
#define GPIO_VOLUME_UP_L GPIO_EC_VOLUP_BTN_ODL
#define GPIO_VOLUME_DOWN_L GPIO_EC_VOLDN_BTN_ODL

View File

@@ -86,8 +86,7 @@
#define CONFIG_POWER_TRACK_HOST_SLEEP_STATE
/* EC */
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
#define CONFIG_VOLUME_BUTTONS
#define CONFIG_LID_SWITCH
#define CONFIG_WP_ALWAYS

View File

@@ -33,7 +33,7 @@
#define CONFIG_ADC
#define CONFIG_BACKLIGHT_LID
#define CONFIG_BACKLIGHT_LID_ACTIVE_LOW
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_GPIO
#define CONFIG_HOSTCMD_SKUID
#define CONFIG_I2C
#define CONFIG_I2C_MASTER

View File

@@ -13,7 +13,7 @@
/* Optional features */
#define CONFIG_BATTERY_SMART
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_GPIO
#define CONFIG_FANS 1
#define CONFIG_I2C
#define CONFIG_I2C_MASTER

View File

@@ -93,8 +93,7 @@
/* EC */
#define CONFIG_ADC
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
#define CONFIG_EXTPOWER_GPIO
#undef CONFIG_EXTPOWER_DEBOUNCE_MS
#define CONFIG_EXTPOWER_DEBOUNCE_MS 1000

View File

@@ -48,8 +48,7 @@
#define CONFIG_RAM_SIZE (CONFIG_DATA_RAM_SIZE - 0x800)
/* Optional features */
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
#define CONFIG_FLASH_SIZE 0x00080000 /* 512KB spi flash */
#define CONFIG_HOST_COMMAND_STATUS
#define CONFIG_HOSTCMD_SECTION_SORTED /* Host commands are sorted. */

View File

@@ -143,7 +143,7 @@
#define CONFIG_BATTERY_CUT_OFF
#define CONFIG_BATTERY_PRESENT_GPIO GPIO_BAT_PRESENT_L
#define CONFIG_BATTERY_SMART
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_GPIO
#define CONFIG_BUTTON_COUNT 2
/* #define CONFIG_CHARGE_MANAGER */
/* #define CONFIG_CHARGE_RAMP_SW */

View File

@@ -18,8 +18,7 @@
#define CONFIG_ADC
#define CONFIG_BACKLIGHT_LID
#define CONFIG_BACKLIGHT_LID_ACTIVE_LOW
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CBI
#define CONFIG_BOARD_FORCE_RESET_PIN
#define CONFIG_CRC8
#define CONFIG_CROS_BOARD_INFO
@@ -282,7 +281,6 @@ enum oem_id {
#define PD_MAX_VOLTAGE_MV 20000
/* Board specific handlers */
int board_get_version(void);
void board_reset_pd_mcu(void);
void board_set_tcpc_power_mode(int port, int mode);

View File

@@ -17,8 +17,7 @@
/* EC */
#define CONFIG_ADC
#define CONFIG_BACKLIGHT_LID
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
#define CONFIG_BOARD_FORCE_RESET_PIN
#define CONFIG_CASE_CLOSED_DEBUG_EXTERNAL
#define CONFIG_DPTF

View File

@@ -26,7 +26,7 @@
#define CONFIG_ESPI_VW_SIGNALS /* Use VW signals instead of GPIOs */
/* Optional features */
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_GPIO
#define CONFIG_EXTPOWER_GPIO
#define CONFIG_I2C_MASTER
#define CONFIG_KEYBOARD_BOARD_CONFIG

View File

@@ -29,7 +29,7 @@
#define CONFIG_POWER_BUTTON
#define CONFIG_VBOOT_HASH
#define CONFIG_PWM_KBLIGHT
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_GPIO
/* Optional features for test commands */
#define CONFIG_CMD_TASKREADY

View File

@@ -25,7 +25,7 @@
#define CONFIG_POWER_BUTTON
#define CONFIG_VBOOT_HASH
#define CONFIG_PWM_KBLIGHT
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_GPIO
/* Optional features for test commands */
#define CONFIG_CMD_TASKREADY

View File

@@ -105,7 +105,7 @@
#define CONFIG_VBOOT_HASH
#undef CONFIG_WATCHDOG_HELP
#define CONFIG_SWITCH
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_GPIO
#undef CONFIG_UART_CONSOLE
#define CONFIG_UART_CONSOLE 1
#define CONFIG_TEMP_SENSOR

View File

@@ -17,8 +17,7 @@
/* EC */
#define CONFIG_ADC
#define CONFIG_BACKLIGHT_LID
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
#define CONFIG_BOARD_FORCE_RESET_PIN
#define CONFIG_BUTTON_TRIGGERED_RECOVERY
#define CONFIG_DPTF

View File

@@ -41,8 +41,7 @@
/* Optional features */
#define CONFIG_BOARD_PRE_INIT
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
#define CONFIG_BUTTON_TRIGGERED_RECOVERY
#define CONFIG_CHARGER_ILIM_PIN_DISABLED
#define CONFIG_FORCE_CONSOLE_RESUME

View File

@@ -112,8 +112,7 @@
/* EC */
#define CONFIG_ADC
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
#define CONFIG_EXTPOWER_GPIO
#undef CONFIG_EXTPOWER_DEBOUNCE_MS
#define CONFIG_EXTPOWER_DEBOUNCE_MS 1000

View File

@@ -97,8 +97,7 @@
/* EC */
#define CONFIG_ADC
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
#define CONFIG_EXTPOWER_GPIO
#undef CONFIG_EXTPOWER_DEBOUNCE_MS
#define CONFIG_EXTPOWER_DEBOUNCE_MS 1000

View File

@@ -19,7 +19,7 @@
#define CONFIG_ACCEL_KXCJ9
#define CONFIG_ACCEL_STD_REF_FRAME_OLD
#define CONFIG_ALS_ISL29035
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_GPIO
#define CONFIG_CMD_ACCELS
#define CONFIG_CMD_ACCEL_INFO
#undef CONFIG_BATTERY_CRITICAL_SHUTDOWN_TIMEOUT

View File

@@ -46,8 +46,7 @@
/* Optional features */
#define CONFIG_BOARD_PRE_INIT
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
#define CONFIG_BUTTON_TRIGGERED_RECOVERY
#define CONFIG_CHARGER_ILIM_PIN_DISABLED
#define CONFIG_FORCE_CONSOLE_RESUME

View File

@@ -15,8 +15,7 @@
* id from previous versions.
*/
#define BOARD_VERSION_BLACK 3
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
/* 48 MHz SYSCLK clock frequency */
#define CPU_CLOCK 48000000

View File

@@ -15,7 +15,7 @@
#define CONFIG_CHIPSET_BRASWELL
#define CONFIG_SCI_GPIO GPIO_PCH_SCI_L
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_GPIO
#define CONFIG_KEYBOARD_COL2_INVERTED
#define CONFIG_KEYBOARD_IRQ_GPIO GPIO_KBD_IRQ_L

View File

@@ -16,7 +16,7 @@
#define CONFIG_BATTERY_CUT_OFF
#define CONFIG_BATTERY_PRESENT_GPIO GPIO_BAT_PRESENT_L
#define CONFIG_BATTERY_SMART
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_VERSION_GPIO
#define CONFIG_CHARGE_MANAGER
#define CONFIG_BOARD_FORCE_RESET_PIN

View File

@@ -30,8 +30,7 @@
#define CONFIG_VBOOT_HASH
#define CONFIG_VSTORE
#define CONFIG_VSTORE_SLOT_COUNT 1
#define CONFIG_BOARD_VERSION
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CBI
#define CONFIG_CRC8
#define CONFIG_CROS_BOARD_INFO
/* Keyboard */

View File

@@ -75,9 +75,13 @@
#define CONFIG_BATTERY_REVIVE_DISCONNECT
#define CONFIG_BATTERY_PRESENT_GPIO GPIO_BAT_PRESENT_L
#define CONFIG_BOARD_VERSION
#ifdef BOARD_MEOWTH
#define CONFIG_BOARD_SPECIFIC_VERSION
#define CONFIG_BOARD_VERSION_CUSTOM
#else
#define CONFIG_BOARD_VERSION_GPIO
#endif
#ifdef BOARD_MEOWTH
#define CONFIG_BUTTON_TRIGGERED_RECOVERY
#endif /* defined(BOARD_MEOWTH) */

View File

@@ -241,18 +241,6 @@ int cbi_get_oem_id(uint32_t *id)
return cbi_get_board_info(CBI_TAG_OEM_ID, (uint8_t *)id, &size);
}
/*
* For backward compatibility. New code should use cbi_get_board_version.
*/
int board_get_version(void)
{
uint32_t ver;
uint8_t size = sizeof(ver);
if (cbi_get_board_info(CBI_TAG_BOARD_VERSION, (uint8_t *)&ver, &size))
return -1;
return ver;
}
static int hc_cbi_get(struct host_cmd_handler_args *args)
{
const struct __ec_align4 ec_params_get_cbi *p = args->params;

View File

@@ -10,6 +10,7 @@
#include "common.h"
#include "console.h"
#include "cpu.h"
#include "cros_board_info.h"
#include "dma.h"
#include "flash.h"
#include "gpio.h"
@@ -756,24 +757,32 @@ int system_get_image_used(enum system_image_copy_t copy)
return data ? MAX((int)data->size, 0) : 0;
}
/*
* Returns positive board version if successfully retrieved. Otherwise the
* value is a negative version of an EC return code. Without this optimization
* multiple boards run out of flash size.
*/
int system_get_board_version(void)
{
int v = 0;
#if defined(CONFIG_BOARD_VERSION_CUSTOM)
return board_get_version();
#elif defined(CONFIG_BOARD_VERSION_GPIO)
return
(!!gpio_get_level(GPIO_BOARD_VERSION1) << 0) |
(!!gpio_get_level(GPIO_BOARD_VERSION2) << 1) |
(!!gpio_get_level(GPIO_BOARD_VERSION3) << 2);
#elif defined(CONFIG_BOARD_VERSION_CBI)
int error;
int32_t version;
#ifdef CONFIG_BOARD_VERSION
#ifdef CONFIG_BOARD_SPECIFIC_VERSION
v = board_get_version();
error = cbi_get_board_version(&version);
if (error)
return -error;
else
return version;
#else
if (gpio_get_level(GPIO_BOARD_VERSION1))
v |= 0x01;
if (gpio_get_level(GPIO_BOARD_VERSION2))
v |= 0x02;
if (gpio_get_level(GPIO_BOARD_VERSION3))
v |= 0x04;
return 0;
#endif
#endif
return v;
}
__attribute__((weak)) /* Weird chips may need their own implementations */
@@ -1063,9 +1072,17 @@ static void print_build_string(void)
static int command_version(int argc, char **argv)
{
int board_version;
ccprintf("Chip: %s %s %s\n", system_get_chip_vendor(),
system_get_chip_name(), system_get_chip_revision());
ccprintf("Board: %d\n", system_get_board_version());
board_version = system_get_board_version();
if (board_version < 0)
ccprintf("Board: Error %d\n", -board_version);
else
ccprintf("Board: %d\n", board_version);
#ifdef CHIP_HAS_RO_B
{
enum system_image_copy_t active;
@@ -1375,9 +1392,15 @@ DECLARE_HOST_COMMAND(EC_CMD_GET_CHIP_INFO,
int host_command_get_board_version(struct host_cmd_handler_args *args)
{
struct ec_response_board_version *r = args->response;
int board_version;
r->board_version = (uint16_t) system_get_board_version();
board_version = system_get_board_version();
if (board_version < 0) {
CPRINTS("Failed (%d) getting board version", -board_version);
return EC_RES_ERROR;
}
r->board_version = board_version;
args->response_size = sizeof(*r);
return EC_RES_SUCCESS;

View File

@@ -412,10 +412,21 @@
*/
#undef CONFIG_BOARD_PRE_INIT
/* EC has GPIOs attached to board version stuffing resistors */
/*
* EC has the notion of board version either through resistors or EEPROM.
* The common CONFIG_BOARD_VERSION is defined automatically when one of the
* specific options is used.
*/
#undef CONFIG_BOARD_VERSION
/* The decoding of the GPIOs defining board version is defined in board code */
#undef CONFIG_BOARD_SPECIFIC_VERSION
/* The board version comes from Cros Board Info within EEPROM. */
#undef CONFIG_BOARD_VERSION_CBI
/* The board version function is defined in board code. */
#undef CONFIG_BOARD_VERSION_CUSTOM
/*
* The board version is encoded with 3 GPIO signals where GPIO_BOARD_VERSION1
* is the LSB.
*/
#undef CONFIG_BOARD_VERSION_GPIO
/* EC responses to a board defined I2C slave address */
#undef CONFIG_BOARD_I2C_SLAVE_ADDR
@@ -3324,6 +3335,19 @@
#define CONFIG_CRC8
#endif /* defined(CONFIG_EXPERIMENTAL_CONSOLE) */
/******************************************************************************/
/*
* Automatically define common CONFIG_BOARD_VERSION if any specific option is
* used.
*/
#if defined(CONFIG_BOARD_VERSION_CBI) || \
defined(CONFIG_BOARD_VERSION_CUSTOM) || \
defined(CONFIG_BOARD_VERSION_GPIO)
#define CONFIG_BOARD_VERSION
#endif
/******************************************************************************/
/*
* Throttle AP must have temperature sensor enabled to get the readings for