summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce <Bruce.Wan@quantatw.com>2016-10-24 10:43:12 +0800
committerchrome-bot <chrome-bot@chromium.org>2016-10-24 13:49:03 -0700
commitf140370353d7ed8a540c6a84d8d6a5faab89adaa (patch)
tree6c55cfc9bdc249f4cb5209af4cfbb3e67a533325
parent1f533bd6ebfddbdfdae26e5b6b7f463332f64af0 (diff)
downloadchrome-ec-f140370353d7ed8a540c6a84d8d6a5faab89adaa.tar.gz
Pyro: Fix multi-func mode for USB PD
Without this change the Alternate mode adapter with multi-function capablity would only be configured as DP instead of (DP + USB). BUG=None BRANCH=master TEST=make buildall Change-Id: I85c8b52469dec6fc347c5cfe6a3b208bc765069e Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com> Reviewed-on: https://chromium-review.googlesource.com/401074 Commit-Ready: Keith Tzeng <keith.tzeng@quantatw.com> Tested-by: Keith Tzeng <keith.tzeng@quantatw.com> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r--board/pyro/usb_pd_policy.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/board/pyro/usb_pd_policy.c b/board/pyro/usb_pd_policy.c
index 22a1fd797d..cb7d9ff62b 100644
--- a/board/pyro/usb_pd_policy.c
+++ b/board/pyro/usb_pd_policy.c
@@ -273,13 +273,18 @@ static int svdm_dp_status(int port, uint32_t *payload)
static int svdm_dp_config(int port, uint32_t *payload)
{
int opos = pd_alt_mode(port, USB_SID_DISPLAYPORT);
+ int mf_pref = PD_VDO_DPSTS_MF_PREF(dp_status[port]);
+ int pin_mode = pd_dfp_dp_get_pin_mode(port, dp_status[port]);
- usb_mux_set(port, TYPEC_MUX_DP,
+ if (!pin_mode)
+ return 0;
+
+ usb_mux_set(port, mf_pref ? TYPEC_MUX_DOCK : TYPEC_MUX_DP,
USB_SWITCH_CONNECT, pd_get_polarity(port));
payload[0] = VDO(USB_SID_DISPLAYPORT, 1,
CMD_DP_CONFIG | VDO_OPOS(opos));
- payload[1] = VDO_DP_CFG(MODE_DP_PIN_E, /* pin mode */
+ payload[1] = VDO_DP_CFG(pin_mode, /* pin mode */
1, /* DPv1.3 signaling */
2); /* UFP connected */
return 2;