summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@quicinc.com>2017-08-25 15:30:48 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-08-25 15:30:48 -0700
commit62fddf01a47bd0086b3391047789603913b7a4a7 (patch)
treec68d924271793449219e08aa7ca180a913ed8073
parentea8714b1ba4058f151d93fafcff9c94cc1f290b3 (diff)
parentca0bfff287f1fe9b6a48f6bd86c0e5d413c84782 (diff)
Merge "qpnp-qnovo: disable qnovo for dcin"
-rw-r--r--Documentation/devicetree/bindings/power/supply/qcom/qpnp-qnovo.txt1
-rw-r--r--drivers/power/supply/qcom/qpnp-qnovo.c10
2 files changed, 11 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/power/supply/qcom/qpnp-qnovo.txt b/Documentation/devicetree/bindings/power/supply/qcom/qpnp-qnovo.txt
index 96b7dd517231..8f35e56816ce 100644
--- a/Documentation/devicetree/bindings/power/supply/qcom/qpnp-qnovo.txt
+++ b/Documentation/devicetree/bindings/power/supply/qcom/qpnp-qnovo.txt
@@ -20,6 +20,7 @@ Required properties:
Optional Properties:
- qcom,external-rsense: To indicate whether the platform uses external or
internal rsense for measuring battery current.
+- qcom,enable-for-dc: To enable qnovo for dc charging path.
Example:
diff --git a/drivers/power/supply/qcom/qpnp-qnovo.c b/drivers/power/supply/qcom/qpnp-qnovo.c
index b70d97a7edf6..cb34d73979ff 100644
--- a/drivers/power/supply/qcom/qpnp-qnovo.c
+++ b/drivers/power/supply/qcom/qpnp-qnovo.c
@@ -131,6 +131,7 @@
struct qnovo_dt_props {
bool external_rsense;
struct device_node *revid_dev_node;
+ bool enable_for_dc;
};
struct qnovo {
@@ -443,6 +444,8 @@ static int qnovo_parse_dt(struct qnovo *chip)
pr_err("Missing qcom,pmic-revid property - driver failed\n");
return -EINVAL;
}
+ chip->dt.enable_for_dc = of_property_read_bool(node,
+ "qcom,enable-for-dc");
return 0;
}
@@ -1311,6 +1314,10 @@ static void status_change_work(struct work_struct *work)
if (usb_present)
dc_present = 0;
+ /* disable qnovo for dc path by forcing dc_present = 0 always */
+ if (!chip->dt.enable_for_dc)
+ dc_present = 0;
+
if (chip->dc_present && !dc_present) {
/* removal */
chip->dc_present = 0;
@@ -1455,6 +1462,9 @@ static int qnovo_hw_init(struct qnovo *chip)
u8 vadc_offset, vadc_gain;
u8 val;
+ vote(chip->chg_ready_votable, USB_READY_VOTER, false, 0);
+ vote(chip->chg_ready_votable, DC_READY_VOTER, false, 0);
+
vote(chip->disable_votable, USER_VOTER, true, 0);
vote(chip->disable_votable, FG_AVAILABLE_VOTER, true, 0);