summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Yilun Lin <yllin@chromium.org>2020-06-18 08:50:07 +0800
committerCommit Bot <commit-bot@chromium.org>2020-06-18 01:41:59 +0000
commit79ada82fd4d879c5a26ed535c904f14497c6a7bb (patch)
treee97d16491d8145cfa0ba2cf0e911ccbf6b0d4c61
parent98a9dd65547d2ef636b58bd48bd316a3a72edd7e (diff)
downloadchrome-ec-79ada82fd4d879c5a26ed535c904f14497c6a7bb.tar.gz
usb_pd: expose pd_set_src_caps and pd_is_disconnected.
Manually merge changes CL:2051220 and CL:1990425. BRANCH=servo BUG=b:159229399 TEST=build pass, and ensure ada_srccaps reports correctly. Change-Id: I3b8b8c479e180911b24b428bd0c2f7e470aecaeb Signed-off-by: Eric Yilun Lin <yllin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2251123 Reviewed-by: Brian Nemec <bnemec@chromium.org> Commit-Queue: Brian Nemec <bnemec@chromium.org>
-rw-r--r--common/usb_pd_policy.c15
-rw-r--r--common/usb_pd_protocol.c2
-rw-r--r--include/usb_pd.h18
3 files changed, 30 insertions, 5 deletions
diff --git a/common/usb_pd_policy.c b/common/usb_pd_policy.c
index 9f8b741242..26de109d81 100644
--- a/common/usb_pd_policy.c
+++ b/common/usb_pd_policy.c
@@ -119,16 +119,23 @@ uint8_t pd_get_src_cap_cnt(int port)
return pd_src_cap_cnt[port];
}
-void pd_process_source_cap(int port, int cnt, uint32_t *src_caps)
+void pd_set_src_caps(int port, int cnt, uint32_t *src_caps)
{
-#ifdef CONFIG_CHARGE_MANAGER
- uint32_t ma, mv, pdo;
-#endif
int i;
pd_src_cap_cnt[port] = cnt;
+
for (i = 0; i < cnt; i++)
pd_src_caps[port][i] = *src_caps++;
+}
+
+void pd_process_source_cap(int port, int cnt, uint32_t *src_caps)
+{
+#ifdef CONFIG_CHARGE_MANAGER
+ uint32_t ma, mv, pdo;
+#endif
+
+ pd_set_src_caps(port, cnt, src_caps);
#ifdef CONFIG_CHARGE_MANAGER
/* Get max power info that we could request */
diff --git a/common/usb_pd_protocol.c b/common/usb_pd_protocol.c
index 973a8240dc..39c072cddc 100644
--- a/common/usb_pd_protocol.c
+++ b/common/usb_pd_protocol.c
@@ -1307,7 +1307,7 @@ static void handle_vdm_request(int port, int cnt, uint32_t *payload)
port, PD_VDO_VID(payload[0]), payload[0] & 0xFFFF);
}
-static __maybe_unused int pd_is_disconnected(int port)
+int pd_is_disconnected(int port)
{
return pd[port].task_state == PD_STATE_SRC_DISCONNECTED
#ifdef CONFIG_USB_PD_DUAL_ROLE
diff --git a/include/usb_pd.h b/include/usb_pd.h
index c2d843863a..00341042e2 100644
--- a/include/usb_pd.h
+++ b/include/usb_pd.h
@@ -2427,6 +2427,17 @@ const uint32_t * const pd_get_src_caps(int port);
*/
uint8_t pd_get_src_cap_cnt(int port);
+
+/**
+ * Set the source caps list & count
+ *
+ * @param port USB-C port number
+ * @param cnt Source caps count
+ * @param src_caps Pointer to source caps
+ *
+ */
+void pd_set_src_caps(int port, int cnt, uint32_t *src_caps);
+
/**
* Return true if partner port is capable of communication over USB data
* lines.
@@ -2436,6 +2447,13 @@ uint8_t pd_get_src_cap_cnt(int port);
int pd_get_partner_usb_comm_capable(int port);
/**
+ * Return true if PD is in disconnect state
+ *
+ * @param port USB-C port number
+ */
+int pd_is_disconnected(int port);
+
+/**
* Return true if vbus is present on the specified port.
*
* @param port USB-C port number