diff options
author | Andrew McRae <amcrae@google.com> | 2020-05-21 17:17:12 +1000 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-05-27 03:36:33 +0000 |
commit | 85d87528a69a65f2c4b50ccd3e8357db14453020 (patch) | |
tree | e6cb6ca0ee6bf79c7bb8c5c463fed07a11618213 /common/usb_common.c | |
parent | 8f409a3716c4bdb8e288e54a559da75ff30f375b (diff) | |
download | chrome-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.c | 48 |
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) */ |