summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-11-18 20:31:58 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-11-18 20:31:58 -0800
commit6dfb1148cde19444ca48487d7542e5e907d09f15 (patch)
tree0a9d9a44e6d4e8357482ad84c00ed13c1c39cc14
parentf6087edb1c37328c4e5ac877ff87a18d503b01fe (diff)
parentfbff4fcc80b04e632c07592d7dc76bcbd6523061 (diff)
Merge "qcom-charger: smb2: Disable try.SINK mode in the probe"
-rw-r--r--drivers/power/qcom-charger/qpnp-smb2.c10
-rw-r--r--drivers/power/qcom-charger/smb-lib.c22
-rw-r--r--drivers/power/qcom-charger/smb-lib.h2
-rw-r--r--drivers/power/qcom-charger/smb138x-charger.c4
4 files changed, 29 insertions, 9 deletions
diff --git a/drivers/power/qcom-charger/qpnp-smb2.c b/drivers/power/qcom-charger/qpnp-smb2.c
index 4f98e864acfd..8248fcee341d 100644
--- a/drivers/power/qcom-charger/qpnp-smb2.c
+++ b/drivers/power/qcom-charger/qpnp-smb2.c
@@ -1069,6 +1069,7 @@ static int smb2_init_hw(struct smb2 *chip)
&chip->dt.dc_icl_ua);
chg->otg_cl_ua = chip->dt.otg_cl_ua;
+ chg->dcp_icl_ua = chip->dt.usb_icl_ua;
rc = smblib_read(chg, APSD_RESULT_STATUS_REG, &stat);
if (rc < 0) {
@@ -1101,7 +1102,7 @@ static int smb2_init_hw(struct smb2 *chip)
vote(chg->fv_votable,
DEFAULT_VOTER, true, chip->dt.fv_uv);
vote(chg->usb_icl_votable,
- DEFAULT_VOTER, true, chip->dt.usb_icl_ua);
+ DCP_VOTER, true, chip->dt.usb_icl_ua);
vote(chg->dc_icl_votable,
DEFAULT_VOTER, true, chip->dt.dc_icl_ua);
vote(chg->hvdcp_disable_votable, DEFAULT_VOTER,
@@ -1186,6 +1187,13 @@ static int smb2_init_hw(struct smb2 *chip)
return rc;
}
+ /* disable try.SINK mode */
+ rc = smblib_masked_write(chg, TYPE_C_CFG_3_REG, EN_TRYSINK_MODE_BIT, 0);
+ if (rc < 0) {
+ dev_err(chg->dev, "Couldn't set TRYSINK_MODE rc=%d\n", rc);
+ return rc;
+ }
+
rc = smblib_masked_write(chg, QNOVO_PT_ENABLE_CMD_REG,
QNOVO_PT_ENABLE_CMD_BIT, QNOVO_PT_ENABLE_CMD_BIT);
if (rc < 0) {
diff --git a/drivers/power/qcom-charger/smb-lib.c b/drivers/power/qcom-charger/smb-lib.c
index 48b1824853eb..3403474565be 100644
--- a/drivers/power/qcom-charger/smb-lib.c
+++ b/drivers/power/qcom-charger/smb-lib.c
@@ -2016,6 +2016,13 @@ int smblib_set_prop_pd_active(struct smb_charger *chg,
return rc;
}
+ rc = vote(chg->usb_icl_votable, DCP_VOTER, false, 0);
+ if (rc < 0) {
+ smblib_err(chg, "Couldn't vote for USB ICL rc=%d\n",
+ rc);
+ return rc;
+ }
+
rc = smblib_masked_write(chg, USBIN_ICL_OPTIONS_REG,
USBIN_MODE_CHG_BIT, USBIN_MODE_CHG_BIT);
if (rc < 0) {
@@ -2032,6 +2039,14 @@ int smblib_set_prop_pd_active(struct smb_charger *chg,
return rc;
}
} else {
+ rc = vote(chg->usb_icl_votable, DCP_VOTER, true,
+ chg->dcp_icl_ua);
+ if (rc < 0) {
+ smblib_err(chg, "Couldn't vote for USB ICL rc=%d\n",
+ rc);
+ return rc;
+ }
+
rc = smblib_masked_write(chg, CMD_APSD_REG,
ICL_OVERRIDE_BIT, 0);
if (rc < 0) {
@@ -2067,13 +2082,6 @@ int smblib_set_prop_pd_active(struct smb_charger *chg,
smblib_update_usb_type(chg);
power_supply_changed(chg->usb_psy);
- rc = smblib_masked_write(chg, TYPE_C_CFG_3_REG, EN_TRYSINK_MODE_BIT,
- chg->pd_active ? 0 : EN_TRYSINK_MODE_BIT);
- if (rc < 0) {
- dev_err(chg->dev, "Couldn't set TRYSINK_MODE rc=%d\n", rc);
- return rc;
- }
-
return rc;
}
diff --git a/drivers/power/qcom-charger/smb-lib.h b/drivers/power/qcom-charger/smb-lib.h
index e158f224fe4c..b309095b04c1 100644
--- a/drivers/power/qcom-charger/smb-lib.h
+++ b/drivers/power/qcom-charger/smb-lib.h
@@ -28,6 +28,7 @@ enum print_reason {
#define DEFAULT_VOTER "DEFAULT_VOTER"
#define USER_VOTER "USER_VOTER"
#define PD_VOTER "PD_VOTER"
+#define DCP_VOTER "DCP_VOTER"
#define USB_PSY_VOTER "USB_PSY_VOTER"
#define PL_TAPER_WORK_RUNNING_VOTER "PL_TAPER_WORK_RUNNING_VOTER"
#define PARALLEL_PSY_VOTER "PARALLEL_PSY_VOTER"
@@ -203,6 +204,7 @@ struct smb_charger {
int *thermal_mitigation;
int otg_cl_ua;
+ int dcp_icl_ua;
int fake_capacity;
diff --git a/drivers/power/qcom-charger/smb138x-charger.c b/drivers/power/qcom-charger/smb138x-charger.c
index 9dc528a6bb45..4255958de300 100644
--- a/drivers/power/qcom-charger/smb138x-charger.c
+++ b/drivers/power/qcom-charger/smb138x-charger.c
@@ -630,10 +630,12 @@ static int smb138x_init_hw(struct smb138x *chip)
vote(chg->fcc_votable,
DEFAULT_VOTER, true, chip->dt.fcc_ua);
vote(chg->usb_icl_votable,
- DEFAULT_VOTER, true, chip->dt.usb_icl_ua);
+ DCP_VOTER, true, chip->dt.usb_icl_ua);
vote(chg->dc_icl_votable,
DEFAULT_VOTER, true, chip->dt.dc_icl_ua);
+ chg->dcp_icl_ua = chip->dt.usb_icl_ua;
+
/* configure charge enable for software control; active high */
rc = smblib_masked_write(chg, CHGR_CFG2_REG,
CHG_EN_POLARITY_BIT | CHG_EN_SRC_BIT, 0);