From 606d9c3405bfd70f48a8552fa629bedb9e5988a4 Mon Sep 17 00:00:00 2001 From: Harry Yang Date: Wed, 22 Mar 2017 22:45:25 -0700 Subject: [PATCH] qcom: smblib: supsend USB input during boost In parallel configuration, suspend one charger usb input before the other enters boost mode. Even more so in USBIN-USBIN mode. Change-Id: I63728421b7697e70bbd83c4c82203b7ebafdaa9f Signed-off-by: Harry Yang --- drivers/power/supply/qcom/smb-lib.c | 10 ++++++++++ drivers/power/supply/qcom/smb-lib.h | 1 + 2 files changed, 11 insertions(+) diff --git a/drivers/power/supply/qcom/smb-lib.c b/drivers/power/supply/qcom/smb-lib.c index 50af1087278a..6dceff89311d 100644 --- a/drivers/power/supply/qcom/smb-lib.c +++ b/drivers/power/supply/qcom/smb-lib.c @@ -1346,6 +1346,14 @@ int smblib_vbus_regulator_enable(struct regulator_dev *rdev) if (chg->otg_en) goto unlock; + if (!chg->usb_icl_votable) { + chg->usb_icl_votable = find_votable("USB_ICL"); + + if (!chg->usb_icl_votable) + return -EINVAL; + } + vote(chg->usb_icl_votable, USBIN_USBIN_BOOST_VOTER, true, 0); + rc = _smblib_vbus_regulator_enable(rdev); if (rc >= 0) chg->otg_en = true; @@ -1409,6 +1417,8 @@ int smblib_vbus_regulator_disable(struct regulator_dev *rdev) if (rc >= 0) chg->otg_en = false; + if (chg->usb_icl_votable) + vote(chg->usb_icl_votable, USBIN_USBIN_BOOST_VOTER, false, 0); unlock: mutex_unlock(&chg->otg_oc_lock); return rc; diff --git a/drivers/power/supply/qcom/smb-lib.h b/drivers/power/supply/qcom/smb-lib.h index 0645b60310b3..edae5fc73131 100644 --- a/drivers/power/supply/qcom/smb-lib.h +++ b/drivers/power/supply/qcom/smb-lib.h @@ -50,6 +50,7 @@ enum print_reason { #define VBUS_CC_SHORT_VOTER "VBUS_CC_SHORT_VOTER" #define PD_INACTIVE_VOTER "PD_INACTIVE_VOTER" #define BOOST_BACK_VOTER "BOOST_BACK_VOTER" +#define USBIN_USBIN_BOOST_VOTER "USBIN_USBIN_BOOST_VOTER" #define HVDCP_INDIRECT_VOTER "HVDCP_INDIRECT_VOTER" #define MICRO_USB_VOTER "MICRO_USB_VOTER" #define DEBUG_BOARD_VOTER "DEBUG_BOARD_VOTER" -- 2.11.0