diff options
Diffstat (limited to 'board')
-rw-r--r-- | board/nocturne/usb_pd_policy.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/board/nocturne/usb_pd_policy.c b/board/nocturne/usb_pd_policy.c index d06e92ac96..8e2c06bd61 100644 --- a/board/nocturne/usb_pd_policy.c +++ b/board/nocturne/usb_pd_policy.c @@ -4,6 +4,7 @@ */ #include "charge_manager.h" +#include "chipset.h" #include "common.h" #include "console.h" #include "compile_time_macros.h" @@ -275,6 +276,14 @@ static int svdm_enter_dp_mode(int port, uint32_t mode_caps) /* Only enter mode if device is DFP_D capable */ if (mode_caps & MODE_DP_SNK) { svdm_safe_dp_mode(port); + + if (chipset_in_state(CHIPSET_STATE_ANY_SUSPEND)) + /* + * Wake the system up since we're entering DP AltMode. + */ + pd_notify_dp_alt_mode_entry(); + + return 0; } @@ -363,6 +372,14 @@ static int svdm_dp_attention(int port, uint32_t *payload) cur_lvl = gpio_get_level(hpd); dp_status[port] = payload[1]; + if (chipset_in_state(CHIPSET_STATE_ANY_SUSPEND) && + (irq || lvl)) + /* + * Wake up the AP. IRQ or level high indicates a DP sink is now + * present. + */ + pd_notify_dp_alt_mode_entry(); + /* Its initial DP status message prior to config */ if (!(dp_flags[port] & DP_FLAGS_DP_ON)) { if (lvl) |