usb: pd: force disconnect upon unexpected SRC->SNK transition
While in Source mode, a notification that a source is attached is unexpected. In this case, force a disconnect in order to clean up state and turn off VBUS and Vconn. Change-Id: Ie576feeb7622376e8cb0dd8454b626b3b24b190b Signed-off-by: Jack Pham <jackp@codeaurora.org>
This commit is contained in:
parent
3b399a415c
commit
4a32817fda
1 changed files with 10 additions and 0 deletions
|
@ -2479,6 +2479,16 @@ static int psy_changed(struct notifier_block *nb, unsigned long evt, void *ptr)
|
|||
if (pd->current_pr == PR_SINK)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Unexpected if not in PR swap; need to force disconnect from
|
||||
* source so we can turn off VBUS, Vconn, PD PHY etc.
|
||||
*/
|
||||
if (pd->current_pr == PR_SRC) {
|
||||
usbpd_info(&pd->dev, "Forcing disconnect from source mode\n");
|
||||
pd->current_pr = PR_NONE;
|
||||
break;
|
||||
}
|
||||
|
||||
pd->current_pr = PR_SINK;
|
||||
break;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue