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_ */