qcom-charger: smb-lib: add votable for parallel charging
Add a votable structure - one veto to disable or unanimous approval to enable. Provide an open and flexiable machanism to enable/disable parallel charging based on various dynamically changing factors. CRs-Fixed: 1023703 Change-Id: I552467645d6f8f633afe273b173a636e0eb396a7 Signed-off-by: Harry Yang <harryy@codeaurora.org>
This commit is contained in:
parent
46926992f6
commit
8d43acccb8
2 changed files with 16 additions and 0 deletions
|
@ -471,6 +471,12 @@ static int smblib_awake_vote_callback(struct votable *votable, void *data,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int smblib_pl_disable_vote_callback(struct votable *votable, void *data,
|
||||||
|
int pl_disable, const char *client)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************
|
/*****************
|
||||||
* OTG REGULATOR *
|
* OTG REGULATOR *
|
||||||
*****************/
|
*****************/
|
||||||
|
@ -1435,6 +1441,14 @@ int smblib_create_votables(struct smb_charger *chg)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
chg->pl_disable_votable = create_votable("PL_DISABLE", VOTE_SET_ANY,
|
||||||
|
smblib_pl_disable_vote_callback,
|
||||||
|
chg);
|
||||||
|
if (IS_ERR(chg->pl_disable_votable)) {
|
||||||
|
rc = PTR_ERR(chg->pl_disable_votable);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1473,6 +1487,7 @@ int smblib_deinit(struct smb_charger *chg)
|
||||||
destroy_votable(chg->dc_icl_votable);
|
destroy_votable(chg->dc_icl_votable);
|
||||||
destroy_votable(chg->pd_allowed_votable);
|
destroy_votable(chg->pd_allowed_votable);
|
||||||
destroy_votable(chg->awake_votable);
|
destroy_votable(chg->awake_votable);
|
||||||
|
destroy_votable(chg->pl_disable_votable);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,6 +88,7 @@ struct smb_charger {
|
||||||
struct votable *dc_icl_votable;
|
struct votable *dc_icl_votable;
|
||||||
struct votable *pd_allowed_votable;
|
struct votable *pd_allowed_votable;
|
||||||
struct votable *awake_votable;
|
struct votable *awake_votable;
|
||||||
|
struct votable *pl_disable_votable;
|
||||||
|
|
||||||
/* work */
|
/* work */
|
||||||
struct delayed_work hvdcp_detect_work;
|
struct delayed_work hvdcp_detect_work;
|
||||||
|
|
Loading…
Add table
Reference in a new issue