<p>Karthik Ramasubramanian has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/28576">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">ec/google/chromeec: Update google_chromeec_get_board_version prototype<br><br>The helper function to get the board version from EC returns 0 on<br>failure. But 0 is also a valid board version. Update the helper function<br>to return -1 on failure and update the use-cases.<br><br>BUG=b:114001972,b:114677884,b:114677887<br><br>Change-Id: I93e8dbce2ff26e76504b132055985f53cbf07d31<br>Signed-off-by: Karthikeyan Ramasubramanian <kramasub@google.com><br>Tested-by: Karthikeyan Ramasubramanian <kramasub@google.com><br>---<br>M src/ec/google/chromeec/ec.c<br>M src/ec/google/chromeec/ec.h<br>M src/ec/google/chromeec/ec_boardid.c<br>M src/mainboard/google/link/mainboard.c<br>M src/mainboard/google/slippy/onboard.h<br>M src/mainboard/google/slippy/variants/peppy/romstage.c<br>M src/mainboard/google/zoombini/boardid.c<br>M src/mainboard/google/zoombini/variants/baseboard/boardid.c<br>M src/mainboard/google/zoombini/variants/baseboard/include/baseboard/variants.h<br>M src/mainboard/intel/glkrvp/variants/baseboard/boardid.c<br>M src/mainboard/intel/glkrvp/variants/baseboard/include/baseboard/variants.h<br>11 files changed, 29 insertions(+), 11 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/76/28576/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c</span><br><span>index 449eaf3..24a597d 100644</span><br><span>--- a/src/ec/google/chromeec/ec.c</span><br><span>+++ b/src/ec/google/chromeec/ec.c</span><br><span>@@ -633,10 +633,11 @@</span><br><span> }</span><br><span> </span><br><span> #ifndef __SMM__</span><br><span style="color: hsl(0, 100%, 40%);">-u16 google_chromeec_get_board_version(void)</span><br><span style="color: hsl(120, 100%, 40%);">+int google_chromeec_get_board_version(void)</span><br><span> {</span><br><span>       struct chromeec_command cmd;</span><br><span>         struct ec_response_board_version board_v;</span><br><span style="color: hsl(120, 100%, 40%);">+     int rv;</span><br><span> </span><br><span>  cmd.cmd_code = EC_CMD_GET_BOARD_VERSION;</span><br><span>     cmd.cmd_version = 0;</span><br><span>@@ -645,8 +646,9 @@</span><br><span>   cmd.cmd_data_out = &board_v;</span><br><span>     cmd.cmd_dev_index = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      if (google_chromeec_command(&cmd) != 0)</span><br><span style="color: hsl(0, 100%, 40%);">-             return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+     rv = google_chromeec_command(&cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (rv)</span><br><span style="color: hsl(120, 100%, 40%);">+               return -1;</span><br><span> </span><br><span>       return board_v.board_version;</span><br><span> }</span><br><span>diff --git a/src/ec/google/chromeec/ec.h b/src/ec/google/chromeec/ec.h</span><br><span>index 2c6f1d6..6a63b14 100644</span><br><span>--- a/src/ec/google/chromeec/ec.h</span><br><span>+++ b/src/ec/google/chromeec/ec.h</span><br><span>@@ -46,7 +46,15 @@</span><br><span> </span><br><span> int google_chromeec_check_feature(int feature);</span><br><span> uint8_t google_chromeec_calc_checksum(const uint8_t *data, int size);</span><br><span style="color: hsl(0, 100%, 40%);">-u16 google_chromeec_get_board_version(void);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/**</span><br><span style="color: hsl(120, 100%, 40%);">+ * google_chromeec_get_board_version() - Get the board version</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Return: non-negative board version on success, -1 on failure.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This function is used to get the board version information from EC.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+int google_chromeec_get_board_version(void);</span><br><span> u32 google_chromeec_get_sku_id(void);</span><br><span> int google_chromeec_set_sku_id(u32 skuid);</span><br><span> uint64_t  google_chromeec_get_events_b(void);</span><br><span>diff --git a/src/ec/google/chromeec/ec_boardid.c b/src/ec/google/chromeec/ec_boardid.c</span><br><span>index 9ec058d..09e7f99 100644</span><br><span>--- a/src/ec/google/chromeec/ec_boardid.c</span><br><span>+++ b/src/ec/google/chromeec/ec_boardid.c</span><br><span>@@ -19,9 +19,12 @@</span><br><span> uint32_t board_id(void)</span><br><span> {</span><br><span>       MAYBE_STATIC int id = -1;</span><br><span style="color: hsl(120, 100%, 40%);">+     MAYBE_STATIC bool done_once = false;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        if (id < 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        if (!done_once) {</span><br><span>            id = google_chromeec_get_board_version();</span><br><span style="color: hsl(120, 100%, 40%);">+             done_once = true;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span>        return id;</span><br><span> }</span><br><span>diff --git a/src/mainboard/google/link/mainboard.c b/src/mainboard/google/link/mainboard.c</span><br><span>index 91b7e59..a5a9e05 100644</span><br><span>--- a/src/mainboard/google/link/mainboard.c</span><br><span>+++ b/src/mainboard/google/link/mainboard.c</span><br><span>@@ -144,7 +144,7 @@</span><br><span>       /* Initialize the Embedded Controller */</span><br><span>     link_ec_init();</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     if (google_chromeec_get_board_version() == 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+       if (google_chromeec_get_board_version() <= 0) {</span><br><span>           /* If running on proto1 - enable reversion of gpio11. */</span><br><span>             u32 gpio_inv;</span><br><span>                u16 gpio_base = pci_read_config16</span><br><span>diff --git a/src/mainboard/google/slippy/onboard.h b/src/mainboard/google/slippy/onboard.h</span><br><span>index 9e1dc8b..cd48f6b 100644</span><br><span>--- a/src/mainboard/google/slippy/onboard.h</span><br><span>+++ b/src/mainboard/google/slippy/onboard.h</span><br><span>@@ -33,6 +33,7 @@</span><br><span> #define BOARD_TOUCHSCREEN_I2C_BUS     2       /* I2C1 */</span><br><span> #define BOARD_TOUCHSCREEN_I2C_ADDR        0x4a</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define PEPPY_BOARD_VERSION_UNKNOWN   -1</span><br><span> #define PEPPY_BOARD_VERSION_PROTO 0</span><br><span> #define PEPPY_BOARD_VERSION_EVT            1</span><br><span> </span><br><span>diff --git a/src/mainboard/google/slippy/variants/peppy/romstage.c b/src/mainboard/google/slippy/variants/peppy/romstage.c</span><br><span>index bf21cbc..6447174 100644</span><br><span>--- a/src/mainboard/google/slippy/variants/peppy/romstage.c</span><br><span>+++ b/src/mainboard/google/slippy/variants/peppy/romstage.c</span><br><span>@@ -96,6 +96,7 @@</span><br><span>   memcpy(peid->spd_data[0], spd_file + (spd_index * spd_len), spd_len);</span><br><span> </span><br><span>         switch (google_chromeec_get_board_version()) {</span><br><span style="color: hsl(120, 100%, 40%);">+        case PEPPY_BOARD_VERSION_UNKNOWN:</span><br><span>    case PEPPY_BOARD_VERSION_PROTO:</span><br><span>              /* Index 0 is 2GB config with CH0 only. */</span><br><span>           if (spd_index == 0)</span><br><span>diff --git a/src/mainboard/google/zoombini/boardid.c b/src/mainboard/google/zoombini/boardid.c</span><br><span>index 4b05c52..4f39444 100644</span><br><span>--- a/src/mainboard/google/zoombini/boardid.c</span><br><span>+++ b/src/mainboard/google/zoombini/boardid.c</span><br><span>@@ -20,9 +20,12 @@</span><br><span> uint32_t board_id(void)</span><br><span> {</span><br><span>    MAYBE_STATIC int id = -1;</span><br><span style="color: hsl(120, 100%, 40%);">+     MAYBE_STATIC bool done_once = false;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        if (id < 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        if (!done_once) {</span><br><span>            id = variant_board_id();</span><br><span style="color: hsl(120, 100%, 40%);">+              done_once = true;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span> </span><br><span>        return id;</span><br><span> }</span><br><span>diff --git a/src/mainboard/google/zoombini/variants/baseboard/boardid.c b/src/mainboard/google/zoombini/variants/baseboard/boardid.c</span><br><span>index c8a5cf1..ad7e3ad 100644</span><br><span>--- a/src/mainboard/google/zoombini/variants/baseboard/boardid.c</span><br><span>+++ b/src/mainboard/google/zoombini/variants/baseboard/boardid.c</span><br><span>@@ -17,7 +17,7 @@</span><br><span> #include <compiler.h></span><br><span> #include <ec/google/chromeec/ec.h></span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-uint8_t __weak variant_board_id(void)</span><br><span style="color: hsl(120, 100%, 40%);">+int __weak variant_board_id(void)</span><br><span> {</span><br><span>         return google_chromeec_get_board_version();</span><br><span> }</span><br><span>diff --git a/src/mainboard/google/zoombini/variants/baseboard/include/baseboard/variants.h b/src/mainboard/google/zoombini/variants/baseboard/include/baseboard/variants.h</span><br><span>index eac0fee..e8c7c20 100644</span><br><span>--- a/src/mainboard/google/zoombini/variants/baseboard/include/baseboard/variants.h</span><br><span>+++ b/src/mainboard/google/zoombini/variants/baseboard/include/baseboard/variants.h</span><br><span>@@ -23,7 +23,7 @@</span><br><span> #include <vendorcode/google/chromeos/chromeos.h></span><br><span> </span><br><span> /* Return the board id for the current variant board. */</span><br><span style="color: hsl(0, 100%, 40%);">-uint8_t variant_board_id(void);</span><br><span style="color: hsl(120, 100%, 40%);">+int variant_board_id(void);</span><br><span> </span><br><span> /*</span><br><span>  * The next set of functions return the gpio table and fill in the number of</span><br><span>diff --git a/src/mainboard/intel/glkrvp/variants/baseboard/boardid.c b/src/mainboard/intel/glkrvp/variants/baseboard/boardid.c</span><br><span>index 530c06a..1aac275 100644</span><br><span>--- a/src/mainboard/intel/glkrvp/variants/baseboard/boardid.c</span><br><span>+++ b/src/mainboard/intel/glkrvp/variants/baseboard/boardid.c</span><br><span>@@ -17,7 +17,7 @@</span><br><span> #include <compiler.h></span><br><span> #include <ec/google/chromeec/ec.h></span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-uint8_t __weak variant_board_id(void)</span><br><span style="color: hsl(120, 100%, 40%);">+int __weak variant_board_id(void)</span><br><span> {</span><br><span>       if (IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC))</span><br><span>           return google_chromeec_get_board_version();</span><br><span>diff --git a/src/mainboard/intel/glkrvp/variants/baseboard/include/baseboard/variants.h b/src/mainboard/intel/glkrvp/variants/baseboard/include/baseboard/variants.h</span><br><span>index c278cde..4ed7a73 100644</span><br><span>--- a/src/mainboard/intel/glkrvp/variants/baseboard/include/baseboard/variants.h</span><br><span>+++ b/src/mainboard/intel/glkrvp/variants/baseboard/include/baseboard/variants.h</span><br><span>@@ -22,7 +22,7 @@</span><br><span> #include <vendorcode/google/chromeos/chromeos.h></span><br><span> </span><br><span> /* Return the board id for the current variant board. */</span><br><span style="color: hsl(0, 100%, 40%);">-uint8_t variant_board_id(void);</span><br><span style="color: hsl(120, 100%, 40%);">+int variant_board_id(void);</span><br><span> </span><br><span> /* The next set of functions return the gpio table and fill in the number of</span><br><span>  * entries for each table. */</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/28576">change 28576</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/28576"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I93e8dbce2ff26e76504b132055985f53cbf07d31 </div>
<div style="display:none"> Gerrit-Change-Number: 28576 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Karthik Ramasubramanian <kramasub@google.com> </div>