From 85d87528a69a65f2c4b50ccd3e8357db14453020 Mon Sep 17 00:00:00 2001 From: Andrew McRae Date: Thu, 21 May 2020 17:17:12 +1000 Subject: 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 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2208344 Tested-by: Andrew McRae Auto-Submit: Andrew McRae Reviewed-by: Peter Marheine Reviewed-by: Jett Rink Commit-Queue: Andrew McRae --- common/usb_common.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'common/usb_common.c') 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, "", + "dump the TCPC regs"); +#endif /* defined(CONFIG_CMD_TCPC_DUMP) */ -- cgit v1.2.1