summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorAbe Levkoy <alevkoy@chromium.org>2020-09-16 12:48:00 -0600
committerCommit Bot <commit-bot@chromium.org>2020-09-21 22:03:09 +0000
commit0ae00b445eafae62141e65576f39a91f0683f4bd (patch)
tree425eae1a68237707dafb30d3f841d8bb27e8daaf /util
parentcb4a02d5e0358631242ada9178bbc6d5b8367340 (diff)
downloadchrome-ec-0ae00b445eafae62141e65576f39a91f0683f4bd.tar.gz
TCPMv2: Define typeccontrol host command
For now, just support exiting the entered mode, if that mode happens to be DisplayPort (getting TBT3 and USB4 to work correctly will require some more work). Support this command in ectool. BUG=b:168030639 TEST=ectool typeccontrol 0 1; observe DP Exit Mode exchange in PD trace BRANCH=none Signed-off-by: Abe Levkoy <alevkoy@chromium.org> Change-Id: Ib30479cc88696115060e9ff74f6815ce074e6bf5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2415069 Reviewed-by: Diana Z <dzigterman@chromium.org>
Diffstat (limited to 'util')
-rw-r--r--util/ectool.c40
1 files changed, 39 insertions, 1 deletions
diff --git a/util/ectool.c b/util/ectool.c
index fc2f1888ad..2cb5eee3d3 100644
--- a/util/ectool.c
+++ b/util/ectool.c
@@ -307,6 +307,8 @@ const char help_str[] =
" Get/set TMP006 calibration\n"
" tmp006raw <tmp006_index>\n"
" Get raw TMP006 data\n"
+ " typeccontrol <port> <command>\n"
+ " Control USB PD policy\n"
" typecdiscovery <port> <type>\n"
" Get discovery information for port and type\n"
" uptimeinfo\n"
@@ -319,7 +321,7 @@ const char help_str[] =
" usbpd <port> <auto | "
"[toggle|toggle-off|sink|source] [none|usb|dp|dock] "
"[dr_swap|pr_swap|vconn_swap]>\n"
- " Control USB PD/type-C\n"
+ " Control USB PD/type-C [deprecated]\n"
" usbpdmuxinfo\n"
" Get USB-C SS mux info\n"
" usbpdpower [port]\n"
@@ -9385,6 +9387,41 @@ int cmd_pd_write_log(int argc, char *argv[])
return ec_command(EC_CMD_PD_WRITE_LOG_ENTRY, 0, &p, sizeof(p), NULL, 0);
}
+int cmd_typec_control(int argc, char *argv[])
+{
+ struct ec_params_typec_control p;
+ char *endptr;
+ int rv;
+
+ if (argc < 3) {
+ fprintf(stderr,
+ "Usage: %s <port> <command>\n"
+ " <port> is the type-c port to query\n"
+ " <type> is one of:\n"
+ " 0: Exit modes\n", argv[0]);
+ return -1;
+ }
+
+ p.port = strtol(argv[1], &endptr, 0);
+ if (endptr && *endptr) {
+ fprintf(stderr, "Bad port\n");
+ return -1;
+ }
+
+ p.command = strtol(argv[2], &endptr, 0);
+ if (endptr && *endptr) {
+ fprintf(stderr, "Bad command\n");
+ return -1;
+ }
+
+ rv = ec_command(EC_CMD_TYPEC_CONTROL, 0, &p, sizeof(p),
+ ec_inbuf, ec_max_insize);
+ if (rv < 0)
+ return -1;
+
+ return 0;
+}
+
int cmd_typec_discovery(int argc, char *argv[])
{
struct ec_params_typec_discovery p;
@@ -9902,6 +9939,7 @@ const struct command commands[] = {
{"tpframeget", cmd_tp_frame_get},
{"tmp006cal", cmd_tmp006cal},
{"tmp006raw", cmd_tmp006raw},
+ {"typeccontrol", cmd_typec_control},
{"typecdiscovery", cmd_typec_discovery},
{"uptimeinfo", cmd_uptimeinfo},
{"usbchargemode", cmd_usb_charge_set_mode},