summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2019-06-20 11:08:08 -0700
committerCommit Bot <commit-bot@chromium.org>2019-06-24 16:04:39 +0000
commitba1d10a7586dbacd33a7c101a2a2404c237a79e0 (patch)
tree0d670d6bf3c56b897844c0f5147d925a45771b39
parent876e7e026d4c8898014d8efe4cd87fbf487bebe4 (diff)
downloadchrome-ec-ba1d10a7586dbacd33a7c101a2a2404c237a79e0.tar.gz
Nami: Don't enter DP Alt Mode when AP is off.
Copied from CL:1652609. Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> BUG=b/130617222 BRANCH=nami TEST=build Change-Id: I592c52311a8de3ef0947cbcad295fa1d6aab1a11 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1669872 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Commit-Queue: Daisuke Nojiri <dnojiri@chromium.org> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Auto-Submit: Daisuke Nojiri <dnojiri@chromium.org> (cherry picked from commit 7b81c0ac3b0c046b271f64cd276c2562406ebaeb) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1674047
-rw-r--r--board/nami/usb_pd_policy.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/board/nami/usb_pd_policy.c b/board/nami/usb_pd_policy.c
index f4ad8afead..74c303342e 100644
--- a/board/nami/usb_pd_policy.c
+++ b/board/nami/usb_pd_policy.c
@@ -6,6 +6,7 @@
#include "atomic.h"
#include "extpower.h"
#include "charge_manager.h"
+#include "chipset.h"
#include "common.h"
#include "console.h"
#include "driver/tcpm/ps8xxx.h"
@@ -284,6 +285,21 @@ static void svdm_safe_dp_mode(int port)
static int svdm_enter_dp_mode(int port, uint32_t mode_caps)
{
+ /*
+ * Don't enter the mode if the SoC is off.
+ *
+ * There's no need to enter the mode while the SoC is off; we'll
+ * actually enter the mode on the chipset resume hook. Entering DP Alt
+ * Mode twice will confuse some monitors and require and unplug/replug
+ * to get them to work again. The DP Alt Mode on USB-C spec says that
+ * if we don't need to maintain HPD connectivity info in a low power
+ * mode, then we shall exit DP Alt Mode. (This is why we don't enter
+ * when the SoC is off as opposed to suspend where adding a display
+ * could cause a wake up.)
+ */
+ if (chipset_in_state(CHIPSET_STATE_ANY_OFF))
+ return -1;
+
/* Only enter mode if device is DFP_D capable */
if (mode_caps & MODE_DP_SNK) {
svdm_safe_dp_mode(port);