summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorVic Yang <victoryang@chromium.org>2014-12-25 01:24:00 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-01-07 17:48:15 +0000
commit140aa369049a616a4d07de1a0f3f4c946b11ac40 (patch)
tree03fdd58987ae4ada9984694fd0c109a6b0aa3cb1 /util
parent35ea0a968caacc73e6ece2bd68db465cc21f07c2 (diff)
downloadchrome-ec-140aa369049a616a4d07de1a0f3f4c946b11ac40.tar.gz
pd: Show literal PD state name for 'ectool usbpd'
Currently, 'ectool usbpd' shows PD task state in numerical format. Every time we add/remove a state, the number changes, and this makes the command difficult to use. Modify the command to print the name of the PD task state. BRANCH=Samus,Ryu BUG=chrome-os-partner:34296 TEST=Run 'ectool usbpd 0' with different combination of new/old PD firmware and new/old ectool. Change-Id: Ic0daa03e9f7565c1322166713c2cce3b7cb93a30 Signed-off-by: Vic Yang <victoryang@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/237623 Reviewed-by: Alec Berg <alecaberg@chromium.org> Commit-Queue: Alec Berg <alecaberg@chromium.org> Tested-by: Alec Berg <alecaberg@chromium.org>
Diffstat (limited to 'util')
-rw-r--r--util/ectool.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/util/ectool.c b/util/ectool.c
index 4e03a90f62..8a5e63a9f4 100644
--- a/util/ectool.c
+++ b/util/ectool.c
@@ -2841,17 +2841,23 @@ int cmd_usb_pd(int argc, char *argv[])
const char *role_str[] = {"", "toggle", "toggle-off", "sink", "source"};
const char *mux_str[] = {"", "none", "usb", "dp", "dock", "auto"};
struct ec_params_usb_pd_control p;
+ struct ec_response_usb_pd_control_v1 *r_v1 =
+ (struct ec_response_usb_pd_control_v1 *)ec_inbuf;
struct ec_response_usb_pd_control *r =
(struct ec_response_usb_pd_control *)ec_inbuf;
int rv, i, j;
int option_ok;
char *e;
+ int cmdver = 1;
BUILD_ASSERT(ARRAY_SIZE(role_str) == USB_PD_CTRL_ROLE_COUNT);
BUILD_ASSERT(ARRAY_SIZE(mux_str) == USB_PD_CTRL_MUX_COUNT);
p.role = USB_PD_CTRL_ROLE_NO_CHANGE;
p.mux = USB_PD_CTRL_MUX_NO_CHANGE;
+ if (!ec_cmd_version_supported(EC_CMD_USB_PD_CONTROL, cmdver))
+ cmdver = 0;
+
if (argc < 2) {
fprintf(stderr, "No port specified.\n");
return -1;
@@ -2910,14 +2916,23 @@ int cmd_usb_pd(int argc, char *argv[])
}
}
- rv = ec_command(EC_CMD_USB_PD_CONTROL, 0, &p, sizeof(p),
+ rv = ec_command(EC_CMD_USB_PD_CONTROL, cmdver, &p, sizeof(p),
ec_inbuf, ec_max_insize);
- if ((rv >= 0) && (argc == 2))
+ if (rv < 0 || argc != 2)
+ return (rv < 0) ? rv : 0;
+
+ if (cmdver == 0) {
printf("Port C%d is %sabled, Role:%s Polarity:CC%d State:%d\n",
p.port, (r->enabled) ? "en" : "dis",
r->role == PD_ROLE_SOURCE ? "SRC" : "SNK",
r->polarity + 1, r->state);
+ } else {
+ printf("Port C%d is %sabled, Role:%s Polarity:CC%d State:%s\n",
+ p.port, (r_v1->enabled) ? "en" : "dis",
+ r_v1->role == PD_ROLE_SOURCE ? "SRC" : "SNK",
+ r_v1->polarity + 1, r_v1->state);
+ }
return (rv < 0 ? rv : 0);
}