From c80ff8437d61f0867eccc520cc68d19fe181af14 Mon Sep 17 00:00:00 2001 From: Karthikeyan Ramasubramanian Date: Mon, 17 Sep 2018 16:19:34 -0600 Subject: ec/google/chromeec: Update google_chromeec_get_board_version prototype The helper function to get the board version from EC returns 0 on failure. But 0 is also a valid board version. Update the helper function to return -1 on failure and update the use-cases. BUG=b:114001972,b:114677884,b:114677887 Change-Id: I93e8dbce2ff26e76504b132055985f53cbf07d31 Signed-off-by: Karthikeyan Ramasubramanian Tested-by: Karthikeyan Ramasubramanian Reviewed-on: https://review.coreboot.org/28576 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin Reviewed-by: Jett Rink --- src/ec/google/chromeec/ec.c | 9 +++++---- src/ec/google/chromeec/ec.h | 11 ++++++++++- src/ec/google/chromeec/ec_boardid.c | 8 +++++--- 3 files changed, 20 insertions(+), 8 deletions(-) (limited to 'src/ec') diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c index 09550d57b3..90fcc3d96c 100644 --- a/src/ec/google/chromeec/ec.c +++ b/src/ec/google/chromeec/ec.c @@ -637,7 +637,7 @@ int google_chromeec_cbi_get_dram_part_num(char *buf, size_t bufsize) } #ifndef __SMM__ -u16 google_chromeec_get_board_version(void) +int google_chromeec_get_board_version(uint32_t *version) { struct chromeec_command cmd; struct ec_response_board_version board_v; @@ -649,10 +649,11 @@ u16 google_chromeec_get_board_version(void) cmd.cmd_data_out = &board_v; cmd.cmd_dev_index = 0; - if (google_chromeec_command(&cmd) != 0) - return 0; + if (google_chromeec_command(&cmd)) + return -1; - return board_v.board_version; + *version = board_v.board_version; + return 0; } u32 google_chromeec_get_sku_id(void) diff --git a/src/ec/google/chromeec/ec.h b/src/ec/google/chromeec/ec.h index 2c6f1d6b8c..419870c35c 100644 --- a/src/ec/google/chromeec/ec.h +++ b/src/ec/google/chromeec/ec.h @@ -46,7 +46,16 @@ uint64_t google_chromeec_get_device_current_events(void); int google_chromeec_check_feature(int feature); uint8_t google_chromeec_calc_checksum(const uint8_t *data, int size); -u16 google_chromeec_get_board_version(void); + +/** + * google_chromeec_get_board_version() - Get the board version + * @version: Out parameter to retrieve the board Version + * + * Return: 0 on success or -1 on failure/error. + * + * This function is used to get the board version information from EC. + */ +int google_chromeec_get_board_version(uint32_t *version); u32 google_chromeec_get_sku_id(void); int google_chromeec_set_sku_id(u32 skuid); uint64_t google_chromeec_get_events_b(void); diff --git a/src/ec/google/chromeec/ec_boardid.c b/src/ec/google/chromeec/ec_boardid.c index 9ec058d1ae..01e3c90e3a 100644 --- a/src/ec/google/chromeec/ec_boardid.c +++ b/src/ec/google/chromeec/ec_boardid.c @@ -18,10 +18,12 @@ uint32_t board_id(void) { - MAYBE_STATIC int id = -1; + MAYBE_STATIC uint32_t id = BOARD_ID_INIT; - if (id < 0) - id = google_chromeec_get_board_version(); + if (id == BOARD_ID_INIT) { + if (google_chromeec_get_board_version(&id)) + id = BOARD_ID_UNKNOWN; + } return id; } -- cgit v1.2.3