summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVijay Hiremath <vijay.p.hiremath@intel.com>2020-01-17 12:51:28 -0800
committerCommit Bot <commit-bot@chromium.org>2020-01-24 09:23:34 +0000
commit07fd9cc41e3aba4eb3e82f50d03d9ff738ced2b3 (patch)
tree40c458b04c287ac2f3af366392141d66c21bf4c7
parent1a7e28d8d7c0539dd4a29d10932a8a4b802d36e9 (diff)
downloadchrome-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.c25
-rw-r--r--common/usb_pd_protocol.c33
-rw-r--r--common/usbc/usb_tc_drp_acc_trysrc_sm.c32
-rw-r--r--include/usb_pd.h11
-rw-r--r--test/fake_usbc.c5
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, &current_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)
+{
+}