summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTodd Broch <tbroch@chromium.org>2014-09-05 08:41:54 -0700
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-09-11 20:00:03 +0000
commit5bb0fd6b053c8f62993ce521c43daffb50b69a66 (patch)
tree914eafbc074706cf2d25d314754bdc3bc8a2d6d7
parentd9c6380a66930b5bf22f25399491219756ec56e0 (diff)
downloadchrome-ec-5bb0fd6b053c8f62993ce521c43daffb50b69a66.tar.gz
PD: Cleanup 'pd' console command.
Cleanup pd commands that were unnecessarily parsing port argument. BRANCH=none BUG=chrome-os-partner:31361 TEST=manual, following commands work as intended pd dualrole pd dualrole off pd dualrole pd dump pd dump 1 pd dump pd enable 1 pd rwhashtable Change-Id: Id70af323ec2684aca04d13ba5f9417be8feb5765 Signed-off-by: Todd Broch <tbroch@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/216813 Reviewed-by: Vic Yang <victoryang@chromium.org> Reviewed-by: Alec Berg <alecaberg@chromium.org>
-rw-r--r--common/usb_pd_protocol.c116
1 files changed, 61 insertions, 55 deletions
diff --git a/common/usb_pd_protocol.c b/common/usb_pd_protocol.c
index ed358dbc56..5923164746 100644
--- a/common/usb_pd_protocol.c
+++ b/common/usb_pd_protocol.c
@@ -1644,7 +1644,62 @@ static int command_pd(int argc, char **argv)
if (argc < 2)
return EC_ERROR_PARAM_COUNT;
- if (!strncasecmp(argv[1], "rwhashtable", 3)) {
+ /* command: pd <subcmd> <args> */
+ if (!strcasecmp(argv[1], "dualrole")) {
+ if (argc < 3) {
+ ccprintf("dual-role toggling: ");
+ switch (drp_state) {
+ case PD_DRP_TOGGLE_ON:
+ ccprintf("on\n");
+ break;
+ case PD_DRP_TOGGLE_OFF:
+ ccprintf("off\n");
+ break;
+ case PD_DRP_FORCE_SINK:
+ ccprintf("force sink\n");
+ break;
+ case PD_DRP_FORCE_SOURCE:
+ ccprintf("force source\n");
+ break;
+ }
+ } else {
+ if (!strcasecmp(argv[2], "on"))
+ pd_set_dual_role(PD_DRP_TOGGLE_ON);
+ else if (!strcasecmp(argv[2], "off"))
+ pd_set_dual_role(PD_DRP_TOGGLE_OFF);
+ else if (!strcasecmp(argv[2], "sink"))
+ pd_set_dual_role(PD_DRP_FORCE_SINK);
+ else if (!strcasecmp(argv[2], "source"))
+ pd_set_dual_role(PD_DRP_FORCE_SOURCE);
+ else
+ return EC_ERROR_PARAM3;
+ }
+ return EC_SUCCESS;
+ } else if (!strcasecmp(argv[1], "dump")) {
+ int level;
+
+ if (argc < 3)
+ ccprintf("dump level: %d\n", debug_level);
+ else {
+ level = strtoi(argv[2], &e, 10);
+ if (*e)
+ return EC_ERROR_PARAM2;
+ debug_level = level;
+ }
+ return EC_SUCCESS;
+ } else if (!strcasecmp(argv[1], "enable")) {
+ int enable;
+
+ if (argc < 3)
+ return EC_ERROR_PARAM_COUNT;
+
+ enable = strtoi(argv[2], &e, 10);
+ if (*e)
+ return EC_ERROR_PARAM3;
+ pd_comm_enable(enable);
+ ccprintf("Ports %s\n", enable ? "enabled" : "disabled");
+ return EC_SUCCESS;
+ } else if (!strncasecmp(argv[1], "rwhashtable", 3)) {
int i, j;
struct ec_params_usb_pd_rw_hash_entry *p;
for (i = 0; i < RW_HASH_ENTRIES; i++) {
@@ -1656,6 +1711,8 @@ static int command_pd(int argc, char **argv)
}
return EC_SUCCESS;
}
+
+ /* command: pd <port> <subcmd> [args] */
port = strtoi(argv[1], &e, 10);
if (argc < 3)
return EC_ERROR_PARAM_COUNT;
@@ -1690,27 +1747,6 @@ static int command_pd(int argc, char **argv)
return EC_ERROR_PARAM2;
pd_set_clock(port, freq);
ccprintf("set TX frequency to %d Hz\n", freq);
- } else if (!strcasecmp(argv[2], "dump")) {
- int level;
-
- if (argc < 4)
- return EC_ERROR_PARAM2;
-
- level = strtoi(argv[3], &e, 10);
- if (*e)
- return EC_ERROR_PARAM2;
- debug_level = level;
- } else if (!strcasecmp(argv[2], "enable")) {
- int enable;
-
- if (argc < 4)
- return EC_ERROR_PARAM_COUNT;
-
- enable = strtoi(argv[3], &e, 10);
- if (*e)
- return EC_ERROR_PARAM3;
- pd_comm_enable(enable);
- ccprintf("Ports %s\n", enable ? "enabled" : "disabled");
} else if (!strncasecmp(argv[2], "hard", 4)) {
set_state(port, PD_STATE_HARD_RESET);
task_wake(PORT_TO_TASK_ID(port));
@@ -1754,35 +1790,6 @@ static int command_pd(int argc, char **argv)
} else {
return EC_ERROR_PARAM_COUNT;
}
- } else if (!strcasecmp(argv[2], "dualrole")) {
- if (argc < 4) {
- ccprintf("dual-role toggling: ");
- switch (drp_state) {
- case PD_DRP_TOGGLE_ON:
- ccprintf("on\n");
- break;
- case PD_DRP_TOGGLE_OFF:
- ccprintf("off\n");
- break;
- case PD_DRP_FORCE_SINK:
- ccprintf("force sink\n");
- break;
- case PD_DRP_FORCE_SOURCE:
- ccprintf("force source\n");
- break;
- }
- } else {
- if (!strcasecmp(argv[3], "on"))
- pd_set_dual_role(PD_DRP_TOGGLE_ON);
- else if (!strcasecmp(argv[3], "off"))
- pd_set_dual_role(PD_DRP_TOGGLE_OFF);
- else if (!strcasecmp(argv[3], "sink"))
- pd_set_dual_role(PD_DRP_FORCE_SINK);
- else if (!strcasecmp(argv[3], "source"))
- pd_set_dual_role(PD_DRP_FORCE_SOURCE);
- else
- return EC_ERROR_PARAM3;
- }
} else if (!strncasecmp(argv[2], "flash", 4)) {
return remote_flashing(argc, argv);
} else if (!strncasecmp(argv[2], "state", 5)) {
@@ -1807,10 +1814,9 @@ static int command_pd(int argc, char **argv)
return EC_SUCCESS;
}
DECLARE_CONSOLE_COMMAND(pd, command_pd,
- "<port> "
- "[tx|bist|charger|dev|dump|dualrole|enable"
- "|soft|hash|hard|clock|ping|state"
- "|vdm [ping | curr]]",
+ "dualrole|dump|enable [0|1]|rwhashtable|\n\t<port> "
+ "[tx|bist|charger|clock|dev"
+ "|soft|hash|hard|ping|state|vdm [ping | curr]]",
"USB PD",
NULL);