summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTodd Broch <tbroch@chromium.org>2014-08-27 16:15:31 -0700
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-09-04 10:41:53 +0000
commitc3a1a633794477ad0b897ae054934691629ff8ce (patch)
tree805aefbe4f654383cbaf90dd739f53d327474b2e
parente46e738e00b8a89722acd82b58f9dd5323be422e (diff)
downloadchrome-ec-c3a1a633794477ad0b897ae054934691629ff8ce.tar.gz
pd: Set pd mux to USB 3.0 (superspeed) initially.
BRANCH=manual BUG=chrome-os-partner:28585 TEST=manual, Plug USB 3.0 capable device in both ports and both polarites on samus and see device enumerate as superspeed. For example, usb 2-3: new SuperSpeed USB device number 6 using xhci_hcd In order you must first connected device (hoho) prior to configuring mux via 'ectool --dev=1 --interface=lpc usbpd <port> dp' Change-Id: Ia6b8a714ce9ae1539769399e51ff245d00202171 Signed-off-by: Todd Broch <tbroch@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/214579 Reviewed-by: Alec Berg <alecaberg@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org> (cherry picked from commit 2f4de76850dc6323febbbcf0b207a3fa2c8b211a) Reviewed-on: https://chromium-review.googlesource.com/216254 Commit-Queue: Vic Yang <victoryang@chromium.org> Tested-by: Vic Yang <victoryang@chromium.org>
-rw-r--r--common/usb_pd_protocol.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/common/usb_pd_protocol.c b/common/usb_pd_protocol.c
index a8c22d9c69..3ab4719bb5 100644
--- a/common/usb_pd_protocol.c
+++ b/common/usb_pd_protocol.c
@@ -253,6 +253,12 @@ static inline void set_state(int port, enum pd_states next_state)
set_state_timeout(port, 0, 0);
pd[port].task_state = next_state;
+#ifdef CONFIG_USBC_SS_MUX
+ if (next_state == PD_STATE_SRC_DISCONNECTED)
+ board_set_usb_mux(port, TYPEC_MUX_NONE,
+ pd[port].polarity);
+#endif
+
/* Log state transition, except for toggling between sink and source */
if (last_state == next_state)
return;
@@ -1191,6 +1197,11 @@ void pd_task(void)
(cc2_volt < PD_SRC_VNC)) {
pd[port].polarity = !(cc1_volt < PD_SRC_VNC);
pd_select_polarity(port, pd[port].polarity);
+ /* Set to USB SS initially */
+#ifdef CONFIG_USBC_SS_MUX
+ board_set_usb_mux(port, TYPEC_MUX_USB,
+ pd[port].polarity);
+#endif
/* Enable VBUS */
pd_set_power_supply_ready(port);
set_state(port, PD_STATE_SRC_DISCOVERY);