diff options
author | Karthikeyan Ramasubramanian <kramasub@chromium.org> | 2018-09-17 16:19:34 -0600 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2018-09-20 17:15:26 +0000 |
commit | c80ff8437d61f0867eccc520cc68d19fe181af14 (patch) | |
tree | fd94a2103e48b08c5df10421952a945bc7d68a9e /src/mainboard | |
parent | 2beadeec3512d6087ae5057da681e50883d04acf (diff) | |
download | coreboot-c80ff8437d61f0867eccc520cc68d19fe181af14.tar.xz |
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 <kramasub@google.com>
Tested-by: Karthikeyan Ramasubramanian <kramasub@google.com>
Reviewed-on: https://review.coreboot.org/28576
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Jett Rink <jettrink@google.com>
Diffstat (limited to 'src/mainboard')
9 files changed, 43 insertions, 14 deletions
diff --git a/src/mainboard/google/auron/variants/samus/board_version.c b/src/mainboard/google/auron/variants/samus/board_version.c index c45b84e9e2..dfb7c248a1 100644 --- a/src/mainboard/google/auron/variants/samus/board_version.c +++ b/src/mainboard/google/auron/variants/samus/board_version.c @@ -18,7 +18,10 @@ const char *samus_board_version(void) { - switch (google_chromeec_get_board_version()) { + uint32_t board_version = SAMUS_EC_BOARD_VERSION_UNKNOWN; + + google_chromeec_get_board_version(&board_version); + switch (board_version) { case SAMUS_EC_BOARD_VERSION_EVT1: return "EVT1"; case SAMUS_EC_BOARD_VERSION_EVT2: diff --git a/src/mainboard/google/auron/variants/samus/include/variant/board_version.h b/src/mainboard/google/auron/variants/samus/include/variant/board_version.h index f5371a19fa..55c8360b0a 100644 --- a/src/mainboard/google/auron/variants/samus/include/variant/board_version.h +++ b/src/mainboard/google/auron/variants/samus/include/variant/board_version.h @@ -16,10 +16,13 @@ #ifndef SAMUS_BOARD_VERSION_H #define SAMUS_BOARD_VERSION_H +#include <boardid.h> + #define SAMUS_EC_BOARD_VERSION_EVT1 3 #define SAMUS_EC_BOARD_VERSION_EVT2 4 #define SAMUS_EC_BOARD_VERSION_EVT3 5 #define SAMUS_EC_BOARD_VERSION_EVT4 0 +#define SAMUS_EC_BOARD_VERSION_UNKNOWN BOARD_ID_UNKNOWN const char *samus_board_version(void); diff --git a/src/mainboard/google/link/mainboard.c b/src/mainboard/google/link/mainboard.c index 91b7e596b2..367e288c26 100644 --- a/src/mainboard/google/link/mainboard.c +++ b/src/mainboard/google/link/mainboard.c @@ -141,10 +141,13 @@ static int int15_handler(void) static void mainboard_init(struct device *dev) { + uint32_t board_version = 0; + /* Initialize the Embedded Controller */ link_ec_init(); - if (google_chromeec_get_board_version() == 0) { + google_chromeec_get_board_version(&board_version); + if (board_version == 0) { /* If running on proto1 - enable reversion of gpio11. */ u32 gpio_inv; u16 gpio_base = pci_read_config16 diff --git a/src/mainboard/google/slippy/variants/peppy/romstage.c b/src/mainboard/google/slippy/variants/peppy/romstage.c index bf21cbc6fc..e0162b311e 100644 --- a/src/mainboard/google/slippy/variants/peppy/romstage.c +++ b/src/mainboard/google/slippy/variants/peppy/romstage.c @@ -78,6 +78,7 @@ static void copy_spd(struct pei_data *peid) char *spd_file; size_t spd_file_len; size_t spd_len = sizeof(peid->spd_data[0]); + uint32_t board_version = PEPPY_BOARD_VERSION_PROTO; printk(BIOS_DEBUG, "SPD index %d\n", spd_index); spd_file = cbfs_boot_map_with_leak("spd.bin", CBFS_TYPE_SPD, @@ -95,7 +96,8 @@ static void copy_spd(struct pei_data *peid) memcpy(peid->spd_data[0], spd_file + (spd_index * spd_len), spd_len); - switch (google_chromeec_get_board_version()) { + google_chromeec_get_board_version(&board_version); + switch (board_version) { case PEPPY_BOARD_VERSION_PROTO: /* Index 0 is 2GB config with CH0 only. */ if (spd_index == 0) diff --git a/src/mainboard/google/zoombini/boardid.c b/src/mainboard/google/zoombini/boardid.c index 4b05c52190..4e431766b2 100644 --- a/src/mainboard/google/zoombini/boardid.c +++ b/src/mainboard/google/zoombini/boardid.c @@ -19,9 +19,9 @@ uint32_t board_id(void) { - MAYBE_STATIC int id = -1; + MAYBE_STATIC uint32_t id = BOARD_ID_INIT; - if (id < 0) + if (id == BOARD_ID_INIT) id = variant_board_id(); return id; diff --git a/src/mainboard/google/zoombini/variants/baseboard/boardid.c b/src/mainboard/google/zoombini/variants/baseboard/boardid.c index c8a5cf1073..21c39cf280 100644 --- a/src/mainboard/google/zoombini/variants/baseboard/boardid.c +++ b/src/mainboard/google/zoombini/variants/baseboard/boardid.c @@ -14,10 +14,16 @@ */ #include <baseboard/variants.h> +#include <boardid.h> #include <compiler.h> #include <ec/google/chromeec/ec.h> -uint8_t __weak variant_board_id(void) +int variant_board_id(void) { - return google_chromeec_get_board_version(); + uint32_t id = BOARD_ID_INIT; + + if (google_chromeec_get_board_version(&id)) + id = BOARD_ID_UNKNOWN; + + return id; } diff --git a/src/mainboard/google/zoombini/variants/baseboard/include/baseboard/variants.h b/src/mainboard/google/zoombini/variants/baseboard/include/baseboard/variants.h index eac0feea6f..e8c7c20601 100644 --- a/src/mainboard/google/zoombini/variants/baseboard/include/baseboard/variants.h +++ b/src/mainboard/google/zoombini/variants/baseboard/include/baseboard/variants.h @@ -23,7 +23,7 @@ #include <vendorcode/google/chromeos/chromeos.h> /* Return the board id for the current variant board. */ -uint8_t variant_board_id(void); +int variant_board_id(void); /* * The next set of functions return the gpio table and fill in the number of diff --git a/src/mainboard/intel/glkrvp/variants/baseboard/boardid.c b/src/mainboard/intel/glkrvp/variants/baseboard/boardid.c index 530c06a993..f6f31bbcd1 100644 --- a/src/mainboard/intel/glkrvp/variants/baseboard/boardid.c +++ b/src/mainboard/intel/glkrvp/variants/baseboard/boardid.c @@ -14,13 +14,21 @@ */ #include <baseboard/variants.h> +#include <boardid.h> #include <compiler.h> #include <ec/google/chromeec/ec.h> -uint8_t __weak variant_board_id(void) +int variant_board_id(void) { - if (IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC)) - return google_chromeec_get_board_version(); - else + MAYBE_STATIC uint32_t id = BOARD_ID_INIT; + + if (IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC)) { + if (id == BOARD_ID_INIT) { + if (google_chromeec_get_board_version(&id)) + id = BOARD_ID_UNKNOWN; + } + return id; + } else { return 0; + } } diff --git a/src/mainboard/intel/glkrvp/variants/baseboard/include/baseboard/variants.h b/src/mainboard/intel/glkrvp/variants/baseboard/include/baseboard/variants.h index c278cdee26..cf91a049e9 100644 --- a/src/mainboard/intel/glkrvp/variants/baseboard/include/baseboard/variants.h +++ b/src/mainboard/intel/glkrvp/variants/baseboard/include/baseboard/variants.h @@ -21,8 +21,12 @@ #include <stdint.h> #include <vendorcode/google/chromeos/chromeos.h> -/* Return the board id for the current variant board. */ -uint8_t variant_board_id(void); +/** + * variant_board_id() - Get the board id for the current board variant + * + * Return: board id on success, -1 on failure/error. + */ +int variant_board_id(void); /* The next set of functions return the gpio table and fill in the number of * entries for each table. */ |