ryu: Add rev-id to platform version string
BUG=chrome-os-partner:34261
BRANCH=None
TEST=mosys platform version on p1 prints 'google,ryu-rev1'
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://chromium-review.googlesource.com/233583
Trybot-Ready: Furquan Shaikh <furquan@chromium.org>
Tested-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-by: David Hendricks <dhendrix@chromium.org>
Commit-Queue: Furquan Shaikh <furquan@chromium.org>
(cherry picked from commit 9e7e0d245b62682501ca8692938db6dcc3578542)
Change-Id: I09fc747dbee9af4020acf803654b8f52dccbb6d1
Reviewed-on: https://chromium-review.googlesource.com/252310
Reviewed-by: Furquan Shaikh <furquan@chromium.org>
Commit-Queue: Vic Yang <victoryang@chromium.org>
Tested-by: Vic Yang <victoryang@chromium.org>
diff --git a/platform/google/rush/rush.c b/platform/google/rush/rush.c
index 23e3576..c75bd30 100644
--- a/platform/google/rush/rush.c
+++ b/platform/google/rush/rush.c
@@ -32,6 +32,7 @@
#include <stdlib.h>
#include <unistd.h>
+#include "mosys/alloc.h"
#include "mosys/command_list.h"
#include "mosys/platform.h"
#include "mosys/intf_list.h"
@@ -47,11 +48,22 @@
#include "rush.h"
+struct board_id_gpio {
+ int num;
+ gpio_t *gpios;
+};
+
const char *rush_ryu_id_list[] = {
"google,ryu",
NULL,
};
+static gpio_t rush_ryu_boardid_gpio[] = {GPIO(Q3), GPIO(Q4)};
+
+static struct board_id_gpio rush_ryu_gpio_list[] = {
+ {ARRAY_SIZE(rush_ryu_boardid_gpio), rush_ryu_boardid_gpio},
+};
+
struct platform_cmd *rush_sub[] = {
&cmd_ec,
&cmd_eeprom,
@@ -62,6 +74,23 @@
NULL
};
+static void update_platform_version(struct platform_intf *intf,
+ struct board_id_gpio *gpio,
+ const char *str_id)
+{
+ char *str;
+ int value;
+
+ str = mosys_malloc(strlen(str_id) + strlen("-revXX") + 1);
+ if (str == NULL)
+ return;
+
+ value = gpio_get_in_tristate_values(intf, gpio->gpios, gpio->num);
+
+ sprintf(str, "%s-rev%d", str_id, value);
+ intf->version_id = str;
+}
+
int rush_probe(struct platform_intf *intf)
{
int index;
@@ -71,6 +100,14 @@
if (index >= 0) {
lprintf(LOG_DEBUG, "Found platform \"%s\" via FDT compatible "
"node.\n", rush_ryu_id_list[index]);
+
+ /* This condition should never be true */
+ if (index >= ARRAY_SIZE(rush_ryu_gpio_list))
+ return 0;
+
+ update_platform_version(intf, &rush_ryu_gpio_list[index],
+ rush_ryu_id_list[index]);
+
return 1;
}