[coreboot-gerrit] Change in coreboot[master]: chromeec: Add google_chromeec_get_alternate_mode

Daisuke Nojiri (Code Review) gerrit at coreboot.org
Wed Feb 14 03:56:46 CET 2018


Daisuke Nojiri has uploaded this change for review. ( https://review.coreboot.org/23744


Change subject: chromeec: Add google_chromeec_get_alternate_mode
......................................................................

chromeec: Add google_chromeec_get_alternate_mode

google_chromeec_get_alternate_mode checks whether TCPM is in an
specified alternate mode or not.

BUG=b:72387533
BRANCH=none
TEST=Boot Fizz in manual recovery mode. Verify recovery screen is
displayed.

Change-Id: Ib9b4ad06b61326fa167c77758603e038d817f928
Signed-off-by: Daisuke Nojiri <dnojiri at chromium.org>
---
M src/ec/google/chromeec/ec.c
M src/ec/google/chromeec/ec.h
2 files changed, 52 insertions(+), 0 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/44/23744/1

diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c
index 89241da..229a710 100644
--- a/src/ec/google/chromeec/ec.c
+++ b/src/ec/google/chromeec/ec.c
@@ -902,3 +902,54 @@
 #endif /* ! __SMM__ */
 
 #endif /* ! __PRE_RAM__ */
+
+/**
+ * Check if EC is in a alternate mode or not.
+ *
+ * @param svid SVID of the alternate mode to check
+ * @return     0: Not in the mode. -1: Error. 1: Yes.
+ */
+#define SVID_DISCOVERY_MAX 16	/* Defined in usb_pd.h */
+int google_chromeec_get_alternate_mode(uint16_t svid)
+{
+	struct ec_response_usb_pd_ports r;
+	struct chromeec_command cmd;
+	int i;
+
+	cmd.cmd_code = EC_CMD_USB_PD_PORTS;
+	cmd.cmd_version = 0;
+	cmd.cmd_data_in = NULL;
+	cmd.cmd_size_in = 0;
+	cmd.cmd_data_out = &r;
+	cmd.cmd_size_out = sizeof(r);
+	cmd.cmd_dev_index = 0;
+	if (google_chromeec_command(&cmd) < 0)
+		return -1;
+
+	for (i = 0; i < r.num_ports; i++) {
+		struct ec_params_usb_pd_get_mode_request p;
+		struct ec_params_usb_pd_get_mode_response res;
+
+		p.port = i;
+		p.svid_idx = 0;
+		cmd.cmd_code = EC_CMD_USB_PD_GET_AMODE;
+		cmd.cmd_version = 0;
+		cmd.cmd_data_in = &p;
+		cmd.cmd_size_in = sizeof(p);
+		cmd.cmd_data_out = &res;
+		cmd.cmd_size_out = sizeof(res);
+		cmd.cmd_dev_index = 0;
+
+		do {
+			if (google_chromeec_command(&cmd) < 0)
+				return -1;
+			if (!res.svid)
+				break;
+			if (res.svid == svid)
+				return 1;
+			p.svid_idx++;
+		} while (p.svid_idx < SVID_DISCOVERY_MAX);
+	}
+
+	return 0;
+}
diff --git a/src/ec/google/chromeec/ec.h b/src/ec/google/chromeec/ec.h
index 90bb6fa..dde23c1 100644
--- a/src/ec/google/chromeec/ec.h
+++ b/src/ec/google/chromeec/ec.h
@@ -36,6 +36,7 @@
 bool google_chromeec_is_uhepi_supported(void);
 int google_ec_running_ro(void);
 void google_chromeec_init(void);
+int google_chromeec_get_alternate_mode(uint16_t svid);
 
 /* Device events */
 uint64_t google_chromeec_get_device_enabled_events(void);

-- 
To view, visit https://review.coreboot.org/23744
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib9b4ad06b61326fa167c77758603e038d817f928
Gerrit-Change-Number: 23744
Gerrit-PatchSet: 1
Gerrit-Owner: Daisuke Nojiri <dnojiri at chromium.org>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180214/03a2e93e/attachment-0001.html>


More information about the coreboot-gerrit mailing list