diff options
author | Vijay Hiremath <vijay.p.hiremath@intel.com> | 2020-01-17 12:51:28 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-01-24 09:23:34 +0000 |
commit | 07fd9cc41e3aba4eb3e82f50d03d9ff738ced2b3 (patch) | |
tree | 40c458b04c287ac2f3af366392141d66c21bf4c7 | |
parent | 1a7e28d8d7c0539dd4a29d10932a8a4b802d36e9 (diff) | |
download | chrome-ec-07fd9cc41e3aba4eb3e82f50d03d9ff738ced2b3.tar.gz |
TCPMv1/v2: Move EC_CMD_USB_PD_DEV_INFO host command to common file
BUG=b:142911453
BRANCH=none
TEST=make buildall -j
Change-Id: If9d902ef77da7d56a123c0c78b1ebbcd0d95bc3b
Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2008301
Reviewed-by: Keith Short <keithshort@chromium.org>
-rw-r--r-- | common/usb_pd_host_cmd.c | 25 | ||||
-rw-r--r-- | common/usb_pd_protocol.c | 33 | ||||
-rw-r--r-- | common/usbc/usb_tc_drp_acc_trysrc_sm.c | 32 | ||||
-rw-r--r-- | include/usb_pd.h | 11 | ||||
-rw-r--r-- | test/fake_usbc.c | 5 |
5 files changed, 59 insertions, 47 deletions
diff --git a/common/usb_pd_host_cmd.c b/common/usb_pd_host_cmd.c index 1b08d522d0..d93dad714d 100644 --- a/common/usb_pd_host_cmd.c +++ b/common/usb_pd_host_cmd.c @@ -138,4 +138,29 @@ DECLARE_HOST_COMMAND(EC_CMD_USB_PD_SET_AMODE, EC_VER_MASK(0)); #endif /* CONFIG_USB_PD_ALT_MODE_DFP */ +#ifdef CONFIG_COMMON_RUNTIME +static enum ec_status hc_remote_pd_dev_info(struct host_cmd_handler_args *args) +{ + const uint8_t *port = args->params; + struct ec_params_usb_pd_rw_hash_entry *r = args->response; + uint16_t dev_id; + uint32_t current_image; + + if (*port >= board_get_usb_pd_port_count()) + return EC_RES_INVALID_PARAM; + + pd_dev_get_rw_hash(*port, &dev_id, r->dev_rw_hash, ¤t_image); + + r->dev_id = dev_id; + r->current_image = current_image; + + args->response_size = sizeof(*r); + + return EC_RES_SUCCESS; +} +DECLARE_HOST_COMMAND(EC_CMD_USB_PD_DEV_INFO, + hc_remote_pd_dev_info, + EC_VER_MASK(0)); +#endif /* CONFIG_COMMON_RUNTIME */ + #endif /* HAS_TASK_HOSTCMD */ diff --git a/common/usb_pd_protocol.c b/common/usb_pd_protocol.c index ac241cb0f0..9188f2720b 100644 --- a/common/usb_pd_protocol.c +++ b/common/usb_pd_protocol.c @@ -2316,6 +2316,15 @@ int pd_dev_store_rw_hash(int port, uint16_t dev_id, uint32_t *rw_hash, return 0; } +void pd_dev_get_rw_hash(int port, uint16_t *dev_id, uint8_t *rw_hash, + uint32_t *current_image) +{ + *dev_id = pd[port].dev_id; + *current_image = pd[port].current_image; + if (*dev_id) + memcpy(rw_hash, pd[port].dev_rw_hash, PD_RW_HASH_SIZE); +} + #if defined(CONFIG_POWER_COMMON) || defined(CONFIG_USB_PD_ALT_MODE_DFP) static void exit_dp_mode(int port) { @@ -5585,30 +5594,6 @@ DECLARE_HOST_COMMAND(EC_CMD_USB_PD_FW_UPDATE, EC_VER_MASK(0)); #endif /* CONFIG_HOSTCMD_FLASHPD */ -static enum ec_status hc_remote_pd_dev_info(struct host_cmd_handler_args *args) -{ - const uint8_t *port = args->params; - struct ec_params_usb_pd_rw_hash_entry *r = args->response; - - if (*port >= board_get_usb_pd_port_count()) - return EC_RES_INVALID_PARAM; - - r->dev_id = pd[*port].dev_id; - - if (r->dev_id) { - memcpy(r->dev_rw_hash, pd[*port].dev_rw_hash, - PD_RW_HASH_SIZE); - } - - r->current_image = pd[*port].current_image; - - args->response_size = sizeof(*r); - return EC_RES_SUCCESS; -} -DECLARE_HOST_COMMAND(EC_CMD_USB_PD_DEV_INFO, - hc_remote_pd_dev_info, - EC_VER_MASK(0)); - #endif /* HAS_TASK_HOSTCMD */ #ifdef CONFIG_CMD_PD_CONTROL diff --git a/common/usbc/usb_tc_drp_acc_trysrc_sm.c b/common/usbc/usb_tc_drp_acc_trysrc_sm.c index 02e6684d1e..06c2b82e50 100644 --- a/common/usbc/usb_tc_drp_acc_trysrc_sm.c +++ b/common/usbc/usb_tc_drp_acc_trysrc_sm.c @@ -475,6 +475,15 @@ int pd_dev_store_rw_hash(int port, uint16_t dev_id, uint32_t *rw_hash, return 0; } +void pd_dev_get_rw_hash(int port, uint16_t *dev_id, uint8_t *rw_hash, + uint32_t *current_image) +{ + *dev_id = tc[port].dev_id; + *current_image = tc[port].current_image; + if (*dev_id) + memcpy(rw_hash, tc[port].dev_rw_hash, PD_RW_HASH_SIZE); +} + void pd_got_frs_signal(int port) { pe_got_frs_signal(port); @@ -1360,29 +1369,6 @@ DECLARE_HOST_COMMAND(EC_CMD_USB_PD_FW_UPDATE, hc_remote_flash, EC_VER_MASK(0)); -static enum ec_status hc_remote_pd_dev_info(struct host_cmd_handler_args *args) -{ - const uint8_t *port = args->params; - struct ec_params_usb_pd_rw_hash_entry *r = args->response; - - if (*port >= board_get_usb_pd_port_count()) - return EC_RES_INVALID_PARAM; - - r->dev_id = tc[*port].dev_id; - - if (r->dev_id) - memcpy(r->dev_rw_hash, tc[*port].dev_rw_hash, PD_RW_HASH_SIZE); - - r->current_image = tc[*port].current_image; - - args->response_size = sizeof(*r); - return EC_RES_SUCCESS; -} - -DECLARE_HOST_COMMAND(EC_CMD_USB_PD_DEV_INFO, - hc_remote_pd_dev_info, - EC_VER_MASK(0)); - #ifdef CONFIG_HOSTCMD_EVENTS void pd_notify_dp_alt_mode_entry(void) { diff --git a/include/usb_pd.h b/include/usb_pd.h index f8e416141a..094de8f2a4 100644 --- a/include/usb_pd.h +++ b/include/usb_pd.h @@ -1673,6 +1673,17 @@ int pd_dev_store_rw_hash(int port, uint16_t dev_id, uint32_t *rw_hash, uint32_t ec_current_image); /** + * Get Device ID & RW hash of device + * + * @param port USB-C port number + * @param dev_id pointer to device identifier + * @param rw_hash pointer to rw_hash + * @param current_image pointer to current image: RW or RO + */ +void pd_dev_get_rw_hash(int port, uint16_t *dev_id, uint8_t *rw_hash, + uint32_t *current_image); + +/** * Fast Role Swap was detected * * @param port USB-C port number diff --git a/test/fake_usbc.c b/test/fake_usbc.c index d1c111701e..6953d07190 100644 --- a/test/fake_usbc.c +++ b/test/fake_usbc.c @@ -136,3 +136,8 @@ enum pd_dual_role_states pd_get_dual_role(int port) { return PD_DRP_TOGGLE_ON; } + +void pd_dev_get_rw_hash(int port, uint16_t *dev_id, uint8_t *rw_hash, + uint32_t *current_image) +{ +} |