summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Chase <jnchase@google.com>2020-08-13 23:54:07 -0400
committerCommit Bot <commit-bot@chromium.org>2020-08-22 16:50:37 +0000
commita2f07380ebb39235261fe53ef0c32d9f2c1858b0 (patch)
treef1059bf6e097fb99ef9cd27e5e437b0fb780d980
parent7e70fc5301b425ce8e0265b6e7ebb3cf9e7109bb (diff)
downloadchrome-ec-a2f07380ebb39235261fe53ef0c32d9f2c1858b0.tar.gz
ectool: add pse host command
BUG=b:163786867 TEST=manual BRANCH=none Change-Id: Ibc595f8a887e3fe63a45dc9b29f3bc4f75feb8ad Signed-off-by: Jeff Chase <jnchase@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2354545 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Commit-Queue: Joe Tessler <jrt@chromium.org> (cherry picked from commit a97e14e93cac85a96fa86b50727dbe8a9a23a705) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2370522 Reviewed-by: Joe Tessler <jrt@chromium.org> Tested-by: Joe Tessler <jrt@chromium.org>
-rw-r--r--util/ectool.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/util/ectool.c b/util/ectool.c
index 3f96f5e7ee..b435a4a809 100644
--- a/util/ectool.c
+++ b/util/ectool.c
@@ -228,6 +228,8 @@ const char help_str[] =
" Prints power-related information\n"
" protoinfo\n"
" Prints EC host protocol information\n"
+ " pse\n"
+ " Get and set PoE PSE port power status\n"
" pstoreinfo\n"
" Prints information on the EC host persistent storage\n"
" pstoreread <offset> <size> <outfile>\n"
@@ -6185,6 +6187,69 @@ int cmd_power_info(int argc, char *argv[])
}
+int cmd_pse(int argc, char *argv[])
+{
+ struct ec_params_pse p;
+ struct ec_response_pse_status r;
+ int rsize = 0;
+ char *e;
+ int rv;
+
+ if (argc < 2 || argc > 3 || !strcmp(argv[1], "help")) {
+ printf("Usage: %s <port> [<subcmd>]\n", argv[0]);
+ printf("'pse <port> [status]' - Get port status\n");
+ printf("'pse <port> disable' - Disable port\n");
+ printf("'pse <port> enable' - Enable port\n");
+ return -1;
+ }
+
+ p.port = strtol(argv[1], &e, 0);
+ if (e && *e) {
+ fprintf(stderr, "Bad port.\n");
+ return -1;
+ }
+
+ if (argc == 2 || !strcmp(argv[2], "status")) {
+ p.cmd = EC_PSE_STATUS;
+ rsize = sizeof(r);
+ } else if (!strcmp(argv[2], "disable")) {
+ p.cmd = EC_PSE_DISABLE;
+ } else if (!strcmp(argv[2], "enable")) {
+ p.cmd = EC_PSE_ENABLE;
+ } else {
+ fprintf(stderr, "Unknown command: %s\n", argv[2]);
+ return -1;
+ }
+
+ rv = ec_command(EC_CMD_PSE, 0, &p, sizeof(p), &r, rsize);
+ if (rv < 0)
+ return rv;
+
+ if (p.cmd == EC_PSE_STATUS) {
+ const char *status;
+
+ switch (r.status) {
+ case EC_PSE_STATUS_DISABLED:
+ status = "disabled";
+ break;
+ case EC_PSE_STATUS_ENABLED:
+ status = "enabled";
+ break;
+ case EC_PSE_STATUS_POWERED:
+ status = "powered";
+ break;
+ default:
+ status = "unknown";
+ break;
+ }
+
+ printf("Port %d: %s\n", p.port, status);
+ }
+
+ return 0;
+}
+
+
int cmd_pstore_info(int argc, char *argv[])
{
struct ec_response_pstore_info r;
@@ -9566,6 +9631,7 @@ const struct command commands[] = {
{"pdwritelog", cmd_pd_write_log},
{"powerinfo", cmd_power_info},
{"protoinfo", cmd_proto_info},
+ {"pse", cmd_pse},
{"pstoreinfo", cmd_pstore_info},
{"pstoreread", cmd_pstore_read},
{"pstorewrite", cmd_pstore_write},