diff options
author | Harry Yang <harryy@codeaurora.org> | 2016-06-14 15:48:36 -0700 |
---|---|---|
committer | Kyle Yan <kyan@codeaurora.org> | 2016-06-17 15:15:44 -0700 |
commit | 46926992f677de4d948dcac535ef309de5ace547 (patch) | |
tree | b32e0934da3209bcd26d0e16caf99ae8d3cb7147 /drivers/power | |
parent | 964e01fb62a8e7e617ef93d0ce62a95e0361ade3 (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.c | 22 | ||||
-rw-r--r-- | drivers/power/qcom-charger/smb-lib.h | 1 |
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; |