summaryrefslogtreecommitdiff
path: root/drivers/power
diff options
context:
space:
mode:
authorHarry Yang <harryy@codeaurora.org>2016-06-14 15:48:36 -0700
committerKyle Yan <kyan@codeaurora.org>2016-06-17 15:15:44 -0700
commit46926992f677de4d948dcac535ef309de5ace547 (patch)
treeb32e0934da3209bcd26d0e16caf99ae8d3cb7147 /drivers/power
parent964e01fb62a8e7e617ef93d0ce62a95e0361ade3 (diff)
qcom-charger: smb-lib: add wakesource votable support
Implement wake votable on top of PM wakesource APIs for PMIC voters to hold system awake. CRs-Fixed: 1023703 Change-Id: If2c8f65d932f2f0bdad9f0f026d440a2089cec5f Signed-off-by: Harry Yang <harryy@codeaurora.org>
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/qcom-charger/smb-lib.c22
-rw-r--r--drivers/power/qcom-charger/smb-lib.h1
2 files changed, 23 insertions, 0 deletions
diff --git a/drivers/power/qcom-charger/smb-lib.c b/drivers/power/qcom-charger/smb-lib.c
index c53659c07fc2..1a2665927a88 100644
--- a/drivers/power/qcom-charger/smb-lib.c
+++ b/drivers/power/qcom-charger/smb-lib.c
@@ -458,6 +458,19 @@ suspend:
return rc;
}
+static int smblib_awake_vote_callback(struct votable *votable, void *data,
+ int awake, const char *client)
+{
+ struct smb_charger *chg = data;
+
+ if (awake)
+ pm_stay_awake(chg->dev);
+ else
+ pm_relax(chg->dev);
+
+ return 0;
+}
+
/*****************
* OTG REGULATOR *
*****************/
@@ -1414,6 +1427,14 @@ int smblib_create_votables(struct smb_charger *chg)
return rc;
}
+ chg->awake_votable = create_votable("AWAKE", VOTE_SET_ANY,
+ smblib_awake_vote_callback,
+ chg);
+ if (IS_ERR(chg->awake_votable)) {
+ rc = PTR_ERR(chg->awake_votable);
+ return rc;
+ }
+
return rc;
}
@@ -1451,6 +1472,7 @@ int smblib_deinit(struct smb_charger *chg)
destroy_votable(chg->usb_icl_votable);
destroy_votable(chg->dc_icl_votable);
destroy_votable(chg->pd_allowed_votable);
+ destroy_votable(chg->awake_votable);
return 0;
}
diff --git a/drivers/power/qcom-charger/smb-lib.h b/drivers/power/qcom-charger/smb-lib.h
index ac550eb09a0b..57b33fd368ea 100644
--- a/drivers/power/qcom-charger/smb-lib.h
+++ b/drivers/power/qcom-charger/smb-lib.h
@@ -87,6 +87,7 @@ struct smb_charger {
struct votable *usb_icl_votable;
struct votable *dc_icl_votable;
struct votable *pd_allowed_votable;
+ struct votable *awake_votable;
/* work */
struct delayed_work hvdcp_detect_work;