From 5936367096413abf294aa4584df53ec80bf8ef4c Mon Sep 17 00:00:00 2001 From: Karthikeyan Ramasubramanian Date: Wed, 12 Jun 2019 11:30:49 -0600 Subject: ec_commands: Rename 'renew' to 'live' in EC_CMD_USB_PD_CHIP_INFO Semantics of renew field in EC_CMD_USB_PD_CHIP_INFO is changing as follows: 0 -> Return hard-coded info for Vendor ID/Product ID and cached info for the Firmware Version 1 -> Return the live chip info for Vendor ID/Product ID/Firmware Version Also rename the 'renew' field to 'live' to match the new semantics. BUG=b:128820536,b:119046668 BRANCH=None TEST=make -j buildall; Boot to ChromeOS. Change-Id: Ie3dd022336b0be5c9728bb0ebabef32b7a6b5d57 Signed-off-by: Karthikeyan Ramasubramanian Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1617893 Tested-by: Karthikeyan Ramasubramanian Reviewed-by: Daisuke Nojiri Reviewed-by: Diana Z Commit-Queue: Karthikeyan Ramasubramanian Auto-Submit: Karthikeyan Ramasubramanian --- common/usb_pd_protocol.c | 5 +++-- driver/tcpm/anx74xx.c | 6 +++--- driver/tcpm/it83xx.c | 2 +- driver/tcpm/ps8xxx.c | 6 +++--- driver/tcpm/tcpci.c | 6 +++--- driver/tcpm/tcpci.h | 2 +- driver/tcpm/tcpm.h | 4 ++-- fuzz/usb_pd_fuzz.c | 2 +- include/ec_commands.h | 7 ++++++- include/usb_pd_tcpm.h | 4 ++-- util/ectool.c | 14 +++++++++----- 11 files changed, 34 insertions(+), 24 deletions(-) diff --git a/common/usb_pd_protocol.c b/common/usb_pd_protocol.c index 2ba0401446..d4677fbefa 100644 --- a/common/usb_pd_protocol.c +++ b/common/usb_pd_protocol.c @@ -2880,7 +2880,8 @@ void pd_task(void *u) if (!res) { struct ec_response_pd_chip_info_v1 *info; - if (tcpm_get_chip_info(port, 0, &info) == EC_SUCCESS) { + if (tcpm_get_chip_info(port, 0, &info) == + EC_SUCCESS) { CPRINTS("TCPC p%d VID:0x%x PID:0x%x DID:0x%x FWV:0x%lx", port, info->vendor_id, info->product_id, info->device_id, info->fw_version_number); @@ -5569,7 +5570,7 @@ static int hc_remote_pd_chip_info(struct host_cmd_handler_args *args) if (p->port >= CONFIG_USB_PD_PORT_COUNT) return EC_RES_INVALID_PARAM; - if (tcpm_get_chip_info(p->port, p->renew, &info)) + if (tcpm_get_chip_info(p->port, p->live, &info)) return EC_RES_ERROR; /* diff --git a/driver/tcpm/anx74xx.c b/driver/tcpm/anx74xx.c index 8973a34213..bf75e21e07 100644 --- a/driver/tcpm/anx74xx.c +++ b/driver/tcpm/anx74xx.c @@ -1099,17 +1099,17 @@ static int anx74xx_tcpm_init(int port) return EC_SUCCESS; } -static int anx74xx_get_chip_info(int port, int renew, +static int anx74xx_get_chip_info(int port, int live, struct ec_response_pd_chip_info_v1 **chip_info) { - int rv = tcpci_get_chip_info(port, renew, chip_info); + int rv = tcpci_get_chip_info(port, live, chip_info); int val; if (rv) return rv; if ((*chip_info)->fw_version_number == 0 || - (*chip_info)->fw_version_number == -1 || renew) { + (*chip_info)->fw_version_number == -1 || live) { rv = tcpc_read(port, ANX74XX_REG_FW_VERSION, &val); if (rv) diff --git a/driver/tcpm/it83xx.c b/driver/tcpm/it83xx.c index da0cdf35e1..ac0383f719 100644 --- a/driver/tcpm/it83xx.c +++ b/driver/tcpm/it83xx.c @@ -577,7 +577,7 @@ static int it83xx_tcpm_transmit(int port, return EC_SUCCESS; } -static int it83xx_tcpm_get_chip_info(int port, int renew, +static int it83xx_tcpm_get_chip_info(int port, int live, struct ec_response_pd_chip_info_v1 **chip_info) { static struct ec_response_pd_chip_info_v1 i; diff --git a/driver/tcpm/ps8xxx.c b/driver/tcpm/ps8xxx.c index 6e49e8429d..590e642ab0 100644 --- a/driver/tcpm/ps8xxx.c +++ b/driver/tcpm/ps8xxx.c @@ -131,17 +131,17 @@ static int ps8xxx_tcpm_release(int port) return tcpci_tcpm_release(port); } -static int ps8xxx_get_chip_info(int port, int renew, +static int ps8xxx_get_chip_info(int port, int live, struct ec_response_pd_chip_info_v1 **chip_info) { int val; - int rv = tcpci_get_chip_info(port, renew, chip_info); + int rv = tcpci_get_chip_info(port, live, chip_info); if (rv) return rv; if ((*chip_info)->fw_version_number == 0 || - (*chip_info)->fw_version_number == -1 || renew) { + (*chip_info)->fw_version_number == -1 || live) { rv = tcpc_read(port, FW_VER_REG, &val); if (rv) diff --git a/driver/tcpm/tcpci.c b/driver/tcpm/tcpci.c index 6765ce7bdc..129adf3da9 100644 --- a/driver/tcpm/tcpci.c +++ b/driver/tcpm/tcpci.c @@ -666,7 +666,7 @@ void tcpci_tcpc_alert(int port) * Once it's called, the chip info will be stored in cache, which can be * accessed by tcpm_get_chip_info without worrying about chip states. */ -int tcpci_get_chip_info(int port, int renew, +int tcpci_get_chip_info(int port, int live, struct ec_response_pd_chip_info_v1 **chip_info) { static struct ec_response_pd_chip_info_v1 @@ -685,8 +685,8 @@ int tcpci_get_chip_info(int port, int renew, if (chip_info) *chip_info = i; - /* If already populated and renewal is not asked, return cache value */ - if (i->vendor_id && !renew) + /* If already cached && live data is not asked, return cached value */ + if (i->vendor_id && !live) return EC_SUCCESS; error = tcpc_read16(port, TCPC_REG_VENDOR_ID, &val); diff --git a/driver/tcpm/tcpci.h b/driver/tcpm/tcpci.h index 674d227dca..285cba1f57 100644 --- a/driver/tcpm/tcpci.h +++ b/driver/tcpm/tcpci.h @@ -161,7 +161,7 @@ int tcpci_tcpm_mux_init(int i2c_addr); int tcpci_tcpm_mux_set(int i2c_addr, mux_state_t mux_state); int tcpci_tcpm_mux_get(int i2c_addr, mux_state_t *mux_state); int tcpci_tcpm_mux_enter_low_power(int port); -int tcpci_get_chip_info(int port, int renew, +int tcpci_get_chip_info(int port, int live, struct ec_response_pd_chip_info_v1 **chip_info); #ifdef CONFIG_USBC_PPC int tcpci_tcpm_set_snk_ctrl(int port, int enable); diff --git a/driver/tcpm/tcpm.h b/driver/tcpm/tcpm.h index fb67eb315b..9d03f52500 100644 --- a/driver/tcpm/tcpm.h +++ b/driver/tcpm/tcpm.h @@ -238,11 +238,11 @@ static inline int tcpc_i2c_write__7bf(const int port, const uint16_t addr__7bf, } #endif -static inline int tcpm_get_chip_info(int port, int renew, +static inline int tcpm_get_chip_info(int port, int live, struct ec_response_pd_chip_info_v1 **info) { if (tcpc_config[port].drv->get_chip_info) - return tcpc_config[port].drv->get_chip_info(port, renew, info); + return tcpc_config[port].drv->get_chip_info(port, live, info); return EC_ERROR_UNIMPLEMENTED; } diff --git a/fuzz/usb_pd_fuzz.c b/fuzz/usb_pd_fuzz.c index 01f0568e8a..fd2df968c1 100644 --- a/fuzz/usb_pd_fuzz.c +++ b/fuzz/usb_pd_fuzz.c @@ -39,7 +39,7 @@ static int mock_tcpm_set_rx_enable(int port, int enable) { return EC_SUCCESS; } static int mock_tcpm_transmit(int port, enum tcpm_transmit_type type, uint16_t header, const uint32_t *data) { return EC_SUCCESS; } static void mock_tcpc_alert(int port) {} -static int mock_tcpci_get_chip_info(int port, int renew, +static int mock_tcpci_get_chip_info(int port, int live, struct ec_response_pd_chip_info_v1 **info) { return EC_ERROR_UNIMPLEMENTED; diff --git a/include/ec_commands.h b/include/ec_commands.h index fb1523b479..0861b3c34e 100644 --- a/include/ec_commands.h +++ b/include/ec_commands.h @@ -5171,7 +5171,12 @@ struct ec_response_usb_pd_mux_info { struct ec_params_pd_chip_info { uint8_t port; /* USB-C port number */ - uint8_t renew; /* Force renewal */ + /* + * Fetch the live chip info or hard-coded + cached chip info + * 0: hardcoded value for VID/PID, cached value for FW version + * 1: live chip value for VID/PID/FW Version + */ + uint8_t live; } __ec_align1; struct ec_response_pd_chip_info { diff --git a/include/usb_pd_tcpm.h b/include/usb_pd_tcpm.h index 9ca23e7ecb..858e7003d0 100644 --- a/include/usb_pd_tcpm.h +++ b/include/usb_pd_tcpm.h @@ -270,12 +270,12 @@ struct tcpm_drv { * Get firmware version. * * @param port Type-C port number - * @param renew Force renewal + * @param live Fetch live chip info or hard-coded + cached info * @param info Pointer to pointer to PD chip info * * @return EC_SUCCESS or error */ - int (*get_chip_info)(int port, int renew, + int (*get_chip_info)(int port, int live, struct ec_response_pd_chip_info_v1 **info); #ifdef CONFIG_USBC_PPC diff --git a/util/ectool.c b/util/ectool.c index fa08cb7917..46f98be760 100644 --- a/util/ectool.c +++ b/util/ectool.c @@ -8259,7 +8259,12 @@ int cmd_pd_chip_info(int argc, char *argv[]) int cmdver = 1; if (argc < 2 || 3 < argc) { - fprintf(stderr, "Usage: %s [renew(on/off)]\n", argv[0]); + fprintf(stderr, "Usage: %s []\n" + "live parameter can take values 0 or 1\n" + "0 -> Return hard-coded value for VID/PID and\n" + " cached value for Firmware Version\n" + "1 -> Return live chip value for VID/PID/FW Version\n", + argv[0]); return -1; } @@ -8269,14 +8274,13 @@ int cmd_pd_chip_info(int argc, char *argv[]) return -1; } - p.renew = 0; + p.live = 0; if (argc == 3) { - int val; - if (!parse_bool(argv[2], &val)) { + p.live = strtol(argv[2], &e, 0); + if (e && *e) { fprintf(stderr, "invalid arg \"%s\"\n", argv[2]); return -1; } - p.renew = val; } if (!ec_cmd_version_supported(EC_CMD_PD_CHIP_INFO, cmdver)) -- cgit v1.2.1