glados: Add PD device
Add the PD device to glados so it can be queried.
BUG=chrome-os-partner:42561
BRANCH=none
TEST=mosys pd info
Change-Id: I16590c25ccec9ae69f0495dccdc046784643c978
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/286874
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
diff --git a/platform/experimental/glados/ec.c b/platform/experimental/glados/ec.c
index 12d70b3..00dcd52 100644
--- a/platform/experimental/glados/ec.c
+++ b/platform/experimental/glados/ec.c
@@ -38,6 +38,10 @@
.device_name = CROS_EC_DEV_NAME,
};
+struct cros_ec_priv glados_pd_priv = {
+ .device_name = CROS_PD_DEV_NAME,
+};
+
int glados_ec_setup(struct platform_intf *intf)
{
int ret;
@@ -55,3 +59,21 @@
return ret;
}
+
+int glados_pd_setup(struct platform_intf *intf)
+{
+ int ret;
+
+ MOSYS_CHECK(intf->cb && intf->cb->pd);
+ intf->cb->pd->priv = &glados_pd_priv;
+
+ ret = cros_ec_probe_dev(intf, intf->cb->pd);
+ if (ret == 1)
+ lprintf(LOG_DEBUG, "CrOS PD found on LPC bus\n");
+ else if (ret == 0)
+ lprintf(LOG_DEBUG, "CrOS PD not found on LPC bus\n");
+ else
+ lprintf(LOG_ERR, "Error when probing CrOS PD on LPC bus\n");
+
+ return ret;
+}
diff --git a/platform/experimental/glados/glados.c b/platform/experimental/glados/glados.c
index c27dafc..856d67c 100644
--- a/platform/experimental/glados/glados.c
+++ b/platform/experimental/glados/glados.c
@@ -71,9 +71,9 @@
struct platform_cmd *glados_sub[] = {
&cmd_ec,
&cmd_eeprom,
- /*&cmd_gpio,*/
&cmd_memory,
&cmd_nvram,
+ &cmd_pd,
&cmd_platform,
&cmd_smbios,
&cmd_eventlog,
@@ -119,12 +119,13 @@
/* late setup routine; not critical to core functionality */
static int glados_setup_post(struct platform_intf *intf)
{
- int rc = 0;
+ if (glados_ec_setup(intf) <= 0)
+ return -1;
- rc |= glados_ec_setup(intf);
- if (rc)
- lprintf(LOG_DEBUG, "%s: failed\n", __func__);
- return rc;
+ if (glados_pd_setup(intf) <= 0)
+ return -1;
+
+ return 0;
}
static int glados_destroy(struct platform_intf *intf)
@@ -143,8 +144,8 @@
struct platform_cb glados_cb = {
.ec = &cros_ec_cb,
+ .pd = &cros_pd_cb,
.eeprom = &glados_eeprom_cb,
- /*.gpio = &glados_gpio_cb,*/
.memory = &glados_memory_cb,
.nvram = &glados_nvram_cb,
.smbios = &smbios_sysinfo_cb,
@@ -155,8 +156,8 @@
struct platform_intf platform_glados = {
.type = PLATFORM_X86_64,
.name = "Glados",
- .sub = glados_sub,
- .cb = &glados_cb,
+ .sub = &glados_sub,
+ .cb = &glados_cb,
.probe = &glados_probe,
.setup_post = &glados_setup_post,
.destroy = &glados_destroy,
diff --git a/platform/experimental/glados/glados.h b/platform/experimental/glados/glados.h
index 0f14b42..64beb5e 100644
--- a/platform/experimental/glados/glados.h
+++ b/platform/experimental/glados/glados.h
@@ -47,5 +47,6 @@
/* functions called by setup routines */
extern int glados_vpd_setup(struct platform_intf *intf);
extern int glados_ec_setup(struct platform_intf *intf);
+extern int glados_pd_setup(struct platform_intf *intf);
#endif /* EXPERIMENTAL_GLADOS_H_ */