summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTodd Broch <tbroch@chromium.org>2014-10-13 15:45:50 -0700
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-10-30 21:48:06 +0000
commita3913d99d7a40062144b96d505bba56a62986faa (patch)
tree35b6531d59c0889a36d77253faa30bfa1ea86b4e /include
parentd4f3279db9d31159624449828362e45062bd7703 (diff)
downloadchrome-ec-a3913d99d7a40062144b96d505bba56a62986faa.tar.gz
pd: dingdong/hoho: HPD over USB PD.
HPD needs to be transported of USB PD as both SBU lines are consumed for differential AUX signalling. This CL does the following: 1. Enables GPIO DP_HPD as interrupt 2. Sends debounced HPD across CC via the SVDM DP status message BRANCH=none BUG=chrome-os-partner:31192,chrome-os-partner:31193 TEST=manual, From servo w/ GPIO attached to HPD drove the following transactions after inserting with HPD low initially: # e1: hpd_high # e2: hpd_low # non-registered glitch # e3: hpd_high followed by hpd_low # e4: hpd high # non-registered glitch # e5: hpd_irq # e6: hpd_irq # e7: hpd_irq # e8: hpd_low followed by hpd_high From fruitpie console (marked up to show result of above) ----> enter-mode, dp status, dp config [6.774108 DONE] SVDM/1 [4] ff018144 [6.777467 DONE] SVDM/2 [16] ff018150 00000002 [6.780637 DONE] SVDM/1 [17] ff018051 ----> attentions start arriving ----> e1 [18.966741 DONE] SVDM/2 [6] ff018106 0000008a ----> e2 [33.724367 DONE] SVDM/2 [6] ff018106 0000000a ----> e3 [64.550398 DONE] SVDM/2 [6] ff018106 0000008a ----> e3 [64.752452 DONE] SVDM/2 [6] ff018106 0000000a ----> e4 [74.247127 DONE] SVDM/2 [6] ff018106 0000008a ----> e5 [88.906254 DONE] SVDM/2 [6] ff018106 0000010a ----> e6 [100.938738 DONE] SVDM/2 [6] ff018106 0000010a ----> e7 [123.693414 DONE] SVDM/2 [6] ff018106 0000010a ----> e8 [130.050074 DONE] SVDM/2 [6] ff018106 0000000a ----> e8 [130.254087 DONE] SVDM/2 [6] ff018106 0000008a Change-Id: I976c268467ece84cedab7ba4943fb59d1e48c113 Signed-off-by: Todd Broch <tbroch@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/223262 Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'include')
-rw-r--r--include/usb_pd.h27
1 files changed, 23 insertions, 4 deletions
diff --git a/include/usb_pd.h b/include/usb_pd.h
index 986f5ef47d..8f231a754f 100644
--- a/include/usb_pd.h
+++ b/include/usb_pd.h
@@ -150,10 +150,11 @@ struct svdm_amode_data {
uint32_t mode_caps;
};
-enum hpd_level {
- hpd_unknown = -1,
- hpd_low = 0,
+enum hpd_event {
+ hpd_none,
+ hpd_low,
hpd_high,
+ hpd_irq,
};
/* Policy structure for driving alternate mode */
@@ -414,6 +415,9 @@ struct pd_policy {
#define PD_VDO_HPD_IRQ(x) ((x >> 8) & 1)
#define PD_VDO_HPD_LVL(x) ((x >> 7) & 1)
+
+#define HPD_DEBOUNCE_LVL (100*MSEC)
+#define HPD_DEBOUNCE_IRQ (2*MSEC)
/*
* DisplayPort Configure VDO
* -------------------------
@@ -716,7 +720,7 @@ void pd_dev_store_rw_hash(int port, uint16_t dev_id, uint32_t *rw_hash);
* @param vid Vendor ID
* @param cmd VDO command number
* @param data Pointer to payload to send
- * @param data number of data objects in payload
+ * @param count number of data objects in payload
*/
void pd_send_vdm(int port, uint32_t vid, int cmd, const uint32_t *data,
int count);
@@ -775,6 +779,21 @@ int board_get_usb_mux(int port, const char **dp_str, const char **usb_str);
*/
void board_flip_usb_mux(int port);
+/**
+ * Determine if in alternate mode or not.
+ *
+ * @param port port number.
+ * @return object position of mode chosen in alternate mode otherwise zero.
+ */
+int pd_alt_mode(int port);
+
+/**
+ * Send hpd over USB PD.
+ *
+ * @param port port number.
+ * @param hpd hotplug detect type.
+ */
+void pd_send_hpd(int port, enum hpd_event hpd);
/* --- Physical layer functions : chip specific --- */
/* Packet preparation/retrieval */