summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVijay Hiremath <vijay.p.hiremath@intel.com>2020-01-27 17:25:45 -0800
committerCommit Bot <commit-bot@chromium.org>2020-01-28 23:51:32 +0000
commit786dedfb15f333ac5a70b83a110eb37805f3be7d (patch)
treedaa30ee49f9e261eb23b0776ec207c2c86ad7da9
parent9e06e793bb953817a6f6b56da19970f04f09c84e (diff)
downloadchrome-ec-786dedfb15f333ac5a70b83a110eb37805f3be7d.tar.gz
TCPMv1/v2: Move EC_CMD_USB_PD_DISCOVERY host command to common file
BUG=b:142911453 BRANCH=none TEST=make buildall -j Change-Id: Ia2ad22669a908e9b9c23c4b73e97872399049e75 Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2024427 Reviewed-by: Keith Short <keithshort@chromium.org> Reviewed-by: Denis Brockus <dbrockus@chromium.org>
-rw-r--r--common/usb_pd_host_cmd.c22
-rw-r--r--common/usb_pd_policy.c26
-rw-r--r--common/usbc/usb_pe_drp_sm.c26
-rw-r--r--include/usb_pd.h8
4 files changed, 39 insertions, 43 deletions
diff --git a/common/usb_pd_host_cmd.c b/common/usb_pd_host_cmd.c
index d93dad714d..0a4f756e58 100644
--- a/common/usb_pd_host_cmd.c
+++ b/common/usb_pd_host_cmd.c
@@ -136,6 +136,28 @@ static enum ec_status hc_remote_pd_set_amode(struct host_cmd_handler_args *args)
DECLARE_HOST_COMMAND(EC_CMD_USB_PD_SET_AMODE,
hc_remote_pd_set_amode,
EC_VER_MASK(0));
+
+static enum ec_status hc_remote_pd_discovery(struct host_cmd_handler_args *args)
+{
+ const uint8_t *port = args->params;
+ struct ec_params_usb_pd_discovery_entry *r = args->response;
+
+ if (*port >= board_get_usb_pd_port_count())
+ return EC_RES_INVALID_PARAM;
+
+ r->vid = pd_get_identity_vid(*port);
+ r->ptype = pd_get_product_type(*port);
+
+ /* pid only included if vid is assigned */
+ if (r->vid)
+ r->pid = pd_get_identity_pid(*port);
+
+ args->response_size = sizeof(*r);
+ return EC_RES_SUCCESS;
+}
+DECLARE_HOST_COMMAND(EC_CMD_USB_PD_DISCOVERY,
+ hc_remote_pd_discovery,
+ EC_VER_MASK(0));
#endif /* CONFIG_USB_PD_ALT_MODE_DFP */
#ifdef CONFIG_COMMON_RUNTIME
diff --git a/common/usb_pd_policy.c b/common/usb_pd_policy.c
index f220293434..fbe7910442 100644
--- a/common/usb_pd_policy.c
+++ b/common/usb_pd_policy.c
@@ -782,6 +782,11 @@ uint16_t pd_get_identity_pid(int port)
return PD_PRODUCT_PID(pe[port].identity[2]);
}
+uint8_t pd_get_product_type(int port)
+{
+ return PD_IDH_PTYPE(pe[port].identity[0]);
+}
+
#ifdef CONFIG_CMD_USB_PD_PE
static void dump_pe(int port)
{
@@ -1314,27 +1319,6 @@ static void pd_usb_billboard_deferred(void)
DECLARE_DEFERRED(pd_usb_billboard_deferred);
#ifdef CONFIG_USB_PD_ALT_MODE_DFP
-static enum ec_status hc_remote_pd_discovery(struct host_cmd_handler_args *args)
-{
- const uint8_t *port = args->params;
- struct ec_params_usb_pd_discovery_entry *r = args->response;
-
- if (*port >= board_get_usb_pd_port_count())
- return EC_RES_INVALID_PARAM;
-
- r->vid = pd_get_identity_vid(*port);
- r->ptype = PD_IDH_PTYPE(pe[*port].identity[0]);
- /* pid only included if vid is assigned */
- if (r->vid)
- r->pid = PD_PRODUCT_PID(pe[*port].identity[2]);
-
- args->response_size = sizeof(*r);
- return EC_RES_SUCCESS;
-}
-DECLARE_HOST_COMMAND(EC_CMD_USB_PD_DISCOVERY,
- hc_remote_pd_discovery,
- EC_VER_MASK(0));
-
static enum ec_status hc_remote_pd_get_amode(struct host_cmd_handler_args *args)
{
struct svdm_amode_data *modep;
diff --git a/common/usbc/usb_pe_drp_sm.c b/common/usbc/usb_pe_drp_sm.c
index fb20f952f5..e5208f4269 100644
--- a/common/usbc/usb_pe_drp_sm.c
+++ b/common/usbc/usb_pe_drp_sm.c
@@ -4941,6 +4941,10 @@ uint16_t pd_get_identity_pid(int port)
return PD_PRODUCT_PID(pe[port].am_policy.identity[2]);
}
+uint8_t pd_get_product_type(int port)
+{
+ return PD_IDH_PTYPE(pe[port].am_policy.identity[0]);
+}
#ifdef CONFIG_CMD_USB_PD_PE
static void dump_pe(int port)
@@ -5016,28 +5020,6 @@ DECLARE_CONSOLE_COMMAND(pe, command_pe,
"USB PE");
#endif /* CONFIG_CMD_USB_PD_PE */
-static enum ec_status hc_remote_pd_discovery(struct host_cmd_handler_args *args)
-{
- const uint8_t *port = args->params;
- struct ec_params_usb_pd_discovery_entry *r = args->response;
-
- if (*port >= board_get_usb_pd_port_count())
- return EC_RES_INVALID_PARAM;
-
- r->vid = pd_get_identity_vid(*port);
- r->ptype = PD_IDH_PTYPE(pe[*port].am_policy.identity[0]);
-
- /* pid only included if vid is assigned */
- if (r->vid)
- r->pid = PD_PRODUCT_PID(pe[*port].am_policy.identity[2]);
-
- args->response_size = sizeof(*r);
- return EC_RES_SUCCESS;
-}
-DECLARE_HOST_COMMAND(EC_CMD_USB_PD_DISCOVERY,
- hc_remote_pd_discovery,
- EC_VER_MASK(0));
-
static enum ec_status hc_remote_pd_get_amode(struct host_cmd_handler_args *args)
{
struct svdm_amode_data *modep;
diff --git a/include/usb_pd.h b/include/usb_pd.h
index 094de8f2a4..c27310484e 100644
--- a/include/usb_pd.h
+++ b/include/usb_pd.h
@@ -1555,6 +1555,14 @@ uint16_t pd_get_identity_vid(int port);
uint16_t pd_get_identity_pid(int port);
/**
+ * Return the product type connected to a specified port
+ *
+ * @param port USB-C port number
+ * @return USB-C product type (hub,periph,cable,ama)
+ */
+uint8_t pd_get_product_type(int port);
+
+/**
* Returns the status of cable flag - CABLE_FLAGS_SOP_PRIME_ENABLE
*
* @param port USB-C port number