summaryrefslogtreecommitdiff
path: root/common/usb_common.c
diff options
context:
space:
mode:
authorAndrew McRae <amcrae@google.com>2020-05-21 17:17:12 +1000
committerCommit Bot <commit-bot@chromium.org>2020-05-27 03:36:33 +0000
commit85d87528a69a65f2c4b50ccd3e8357db14453020 (patch)
treee6cb6ca0ee6bf79c7bb8c5c463fed07a11618213 /common/usb_common.c
parent8f409a3716c4bdb8e288e54a559da75ff30f375b (diff)
downloadchrome-ec-85d87528a69a65f2c4b50ccd3e8357db14453020.tar.gz
Extend the tcpci register dump.
Extend the tcpci register dump command to allow chip specific register dumps to be displayed. BUG=b:157206143 TEST=Display ANX3447 registers on Puff. BRANCH=none Change-Id: Ib2bf1adcbe3bce75ff54c36c4306b17356eae96f Signed-off-by: Andrew McRae <amcrae@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2208344 Tested-by: Andrew McRae <amcrae@chromium.org> Auto-Submit: Andrew McRae <amcrae@chromium.org> Reviewed-by: Peter Marheine <pmarheine@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Commit-Queue: Andrew McRae <amcrae@chromium.org>
Diffstat (limited to 'common/usb_common.c')
-rw-r--r--common/usb_common.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/common/usb_common.c b/common/usb_common.c
index f3607f7aa5..156dc816cb 100644
--- a/common/usb_common.c
+++ b/common/usb_common.c
@@ -727,3 +727,51 @@ int pd_is_vbus_present(int port)
{
return pd_check_vbus_level(port, VBUS_PRESENT);
}
+
+#ifdef CONFIG_CMD_TCPC_DUMP
+/*
+ * Dump TCPC registers.
+ */
+void tcpc_dump_registers(int port, const struct tcpc_reg_dump_map *reg,
+ int count)
+{
+ int i, val;
+
+ for (i = 0; i < count; i++, reg++) {
+ switch (reg->size) {
+ case 1:
+ tcpc_read(port, reg->addr, &val);
+ ccprintf(" %-30s(0x%02x) = 0x%02x\n",
+ reg->name, reg->addr, (uint8_t)val);
+ break;
+ case 2:
+ tcpc_read16(port, reg->addr, &val);
+ ccprintf(" %-30s(0x%02x) = 0x%04x\n",
+ reg->name, reg->addr, (uint16_t)val);
+ break;
+ }
+ cflush();
+ }
+
+}
+
+static int command_tcpc_dump(int argc, char **argv)
+{
+ int port;
+
+ if (argc < 2)
+ return EC_ERROR_PARAM_COUNT;
+
+ port = atoi(argv[1]);
+ if ((port < 0) || (port >= board_get_usb_pd_port_count())) {
+ CPRINTS("%s(%d) Invalid port!", __func__, port);
+ return EC_ERROR_INVAL;
+ }
+ /* Dump TCPC registers. */
+ tcpm_dump_registers(port);
+
+ return EC_SUCCESS;
+}
+DECLARE_CONSOLE_COMMAND(tcpci_dump, command_tcpc_dump, "<Type-C port>",
+ "dump the TCPC regs");
+#endif /* defined(CONFIG_CMD_TCPC_DUMP) */