diff options
| author | Linux Build Service Account <lnxbuild@quicinc.com> | 2017-05-30 23:09:25 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-05-30 23:09:25 -0700 |
| commit | a5706c4fdac1a427fac7b30a49912a1d9d148cb9 (patch) | |
| tree | 320aa1f315973e707da780c222aaf2fcb6b7ab8d /drivers/usb | |
| parent | 7961b23656fc77a2235e79b03ca879c5ca2d8898 (diff) | |
| parent | 439cb8107ff1d6572f60388b75bb704755c9fa74 (diff) | |
Merge "usb: pd: Re-check for disconnect after PR swap"
Diffstat (limited to 'drivers/usb')
| -rw-r--r-- | drivers/usb/pd/policy_engine.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/usb/pd/policy_engine.c b/drivers/usb/pd/policy_engine.c index 7d893c5815e2..757ab00812f2 100644 --- a/drivers/usb/pd/policy_engine.c +++ b/drivers/usb/pd/policy_engine.c @@ -723,6 +723,15 @@ static void usbpd_set_state(struct usbpd *pd, enum usbpd_state next_state) break; /* Source states */ + case PE_SRC_DISABLED: + /* are we still connected? */ + if (pd->typec_mode == POWER_SUPPLY_TYPEC_NONE) { + pd->current_pr = PR_NONE; + kick_sm(pd, 0); + } + + break; + case PE_SRC_STARTUP: if (pd->current_dr == DR_NONE) { pd->current_dr = DR_DFP; @@ -853,6 +862,10 @@ static void usbpd_set_state(struct usbpd *pd, enum usbpd_state next_state) case PE_SRC_HARD_RESET: case PE_SNK_HARD_RESET: + /* are we still connected? */ + if (pd->typec_mode == POWER_SUPPLY_TYPEC_NONE) + pd->current_pr = PR_NONE; + /* hard reset may sleep; handle it in the workqueue */ kick_sm(pd, 0); break; |
