summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Hurst <shurst@google.com>2016-09-22 08:17:29 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-09-27 20:33:55 -0700
commitf8c7be9fa9ee2b6fd76541c0f30ebba49c731c52 (patch)
treeb0f4b62e3a9f5f28def57fda36cdfba3e620b5f3
parent77a96c4b4d8081c7352fda8b3f4902089bdd154f (diff)
downloadchrome-ec-f8c7be9fa9ee2b6fd76541c0f30ebba49c731c52.tar.gz
kevin: hotplugging DP not working
Some Type-C to DP adapters generate two or more HPD events while others generate only one HPD event. Currently hotplugging only works with the former adapter. Now hotplugging is triggered on one or more HPD events. BUG=chrome-os-partner:57198 BRANCH=none TEST=Manuel - plug USBC->DP cable into TV then into kevin localhost ~ # ectool usbpdmuxinfo Port 0: DP INV - plug USBC->DP cable into kevin then into TV localhost ~ # ectool usbpdmuxinfo Port 0: DP INV - unplug USBC->DP cable from TV Port 0: OPEN INV Change-Id: Ied30f1eb3e1186b52067ffc9a37ed22a9012b457 Reviewed-on: https://chromium-review.googlesource.com/388737 Reviewed-by: Shawn N <shawnn@chromium.org> Commit-Queue: Shawn N <shawnn@chromium.org> Tested-by: Shawn N <shawnn@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/388531 Commit-Ready: Shawn N <shawnn@chromium.org>
-rw-r--r--board/kevin/usb_pd_policy.c12
1 files changed, 1 insertions, 11 deletions
diff --git a/board/kevin/usb_pd_policy.c b/board/kevin/usb_pd_policy.c
index c87fa7eb44..fc55737037 100644
--- a/board/kevin/usb_pd_policy.c
+++ b/board/kevin/usb_pd_policy.c
@@ -293,8 +293,6 @@ static int svdm_dp_config(int port, uint32_t *payload)
static void svdm_dp_post_config(int port)
{
dp_flags[port] |= DP_FLAGS_DP_ON;
- if (!(dp_flags[port] & DP_FLAGS_HPD_HI_PENDING))
- return;
}
static int svdm_dp_attention(int port, uint32_t *payload)
@@ -306,15 +304,7 @@ static int svdm_dp_attention(int port, uint32_t *payload)
dp_status[port] = payload[1];
- /* Its initial DP status message prior to config */
- if (!(dp_flags[port] & DP_FLAGS_DP_ON)) {
- if (lvl)
- dp_flags[port] |= DP_FLAGS_HPD_HI_PENDING;
- return 1;
- }
-
- if (irq)
- mux->hpd_update(port, lvl, 1);
+ mux->hpd_update(port, lvl, irq);
if (lvl)
usb_mux_set(port, mf_pref ? TYPEC_MUX_DOCK : TYPEC_MUX_DP,