From 95d46e9eb081048feab618a08e261379e2b9bf8b Mon Sep 17 00:00:00 2001 From: Jack Pham Date: Wed, 24 May 2017 13:44:56 -0700 Subject: usb: pd: Don't draw current during sink hard reset During hard reset inform charger driver to suspend current draw as the sink should not draw more than 1mA while VBUS is driven to VSafe0V. Once VBUS returns to VSafe5V the current draw can be restored when contract is re-established. Change-Id: I3f529c861706d4544f3c8b65d6fc6be47a598309 Signed-off-by: Jack Pham --- drivers/usb/pd/policy_engine.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/usb/pd/policy_engine.c b/drivers/usb/pd/policy_engine.c index 2258e9f1e44a..90e9f14d550c 100644 --- a/drivers/usb/pd/policy_engine.c +++ b/drivers/usb/pd/policy_engine.c @@ -1633,6 +1633,17 @@ static void usbpd_sm(struct work_struct *w) power_supply_set_property(pd->usb_psy, POWER_SUPPLY_PROP_PD_IN_HARD_RESET, &val); + if (pd->requested_current) { + val.intval = pd->requested_current = 0; + power_supply_set_property(pd->usb_psy, + POWER_SUPPLY_PROP_PD_CURRENT_MAX, &val); + } + + pd->requested_voltage = 5000000; + val.intval = pd->requested_voltage; + power_supply_set_property(pd->usb_psy, + POWER_SUPPLY_PROP_VOLTAGE_MIN, &val); + pd->in_pr_swap = false; val.intval = 0; power_supply_set_property(pd->usb_psy, -- cgit v1.2.3