diff options
author | Eric Yilun Lin <yllin@chromium.org> | 2021-04-07 17:55:47 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-04-08 03:30:45 +0000 |
commit | 8d70ee4c035e949d5e59655d93c43ebd81060c87 (patch) | |
tree | 1944058e21741d47bee13b1a131abe1f09675234 /common/usb_common.c | |
parent | ee5451a866ad69461ae08e9e7e9b0bf818621d34 (diff) | |
download | chrome-ec-8d70ee4c035e949d5e59655d93c43ebd81060c87.tar.gz |
pd commands: support PD console command srccaps
This allows servo querying DUT's srccap easier.
BUG=b:140256624
TEST=on servo_v4 (TCPMv1) and Asurada (TCPMv2) tested that
1. plug adapter `pd 0 srccaps` show the PDOs
2. unplug adapter `pd 0 srccaps` show nothing
sample output:
> pd 1 srccaps
0: 5000mV/3000mA
1: 9000mV/2000mA
2: 12000mV/1500mA
3: 3300mV-5900mV/3000mA
4: 3300mV-11000mV/2000mA
BRANCH=servo
Change-Id: Iadf9f9d91359c96b188509a28b3dc42a7e7b2223
Signed-off-by: Eric Yilun Lin <yllin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2804008
Reviewed-by: Wai-Hong Tam <waihong@google.com>
Diffstat (limited to 'common/usb_common.c')
-rw-r--r-- | common/usb_common.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/common/usb_common.c b/common/usb_common.c index 6fde61cfab..7a21eb1676 100644 --- a/common/usb_common.c +++ b/common/usb_common.c @@ -904,6 +904,26 @@ DECLARE_CONSOLE_COMMAND(tcpci_dump, command_tcpc_dump, "<Type-C port>", "dump the TCPC regs"); #endif /* defined(CONFIG_CMD_TCPC_DUMP) */ +void pd_srccaps_dump(int port) +{ + int i; + const uint32_t *const srccaps = pd_get_src_caps(port); + + for (i = 0; i < pd_get_src_cap_cnt(port); ++i) { + uint32_t max_ma, max_mv, min_mv; + + pd_extract_pdo_power(srccaps[i], &max_ma, &max_mv, &min_mv); + + if ((srccaps[i] & PDO_TYPE_MASK) == PDO_TYPE_AUGMENTED) { + if (IS_ENABLED(CONFIG_USB_PD_REV30)) + ccprintf("%d: %dmV-%dmV/%dmA\n", i, min_mv, + max_mv, max_ma); + } else { + ccprintf("%d: %dmV/%dmA\n", i, max_mv, max_ma); + } + } +} + int pd_build_alert_msg(uint32_t *msg, uint32_t *len, enum pd_power_role pr) { if (msg == NULL || len == NULL) |