mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 23:24:22 -04:00
Monitor fg psy event once get the psy name
The fg psy may be created later than sgm4154x charger probe and the fg psy event will be missing according to current psy filter condition in psy notify call. In order to fix this, use the fg psy name directly for psy check, and not check the fg psy pointer. Change-Id: I6ca888864045c0f523bfbef9f30411567214d995 Signed-off-by: Yonghua Yan <yanyh2@motorola.com> Reviewed-on: https://gerrit.mot.com/2326012 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Jianqi Yang <yangj@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
851c8f0fda
commit
b111dc0500
2 changed files with 14 additions and 9 deletions
|
|
@ -2685,17 +2685,20 @@ static int sgm4154x_mmi_charger_init(struct sgm_mmi_charger *chg)
|
|||
const char *df_sn = NULL;
|
||||
struct mmi_charger_driver *driver;
|
||||
|
||||
if (!chg->fg_psy) {
|
||||
const char *fg_psy_name = "fg_battery";
|
||||
rc = device_property_read_string(chg->sgm->dev,
|
||||
if (!chg->fg_psy && !chg->fg_psy_name) {
|
||||
chg->fg_psy_name = "fg_battery";
|
||||
device_property_read_string(chg->sgm->dev,
|
||||
"mmi,fg-psy-name",
|
||||
&fg_psy_name);
|
||||
chg->fg_psy = power_supply_get_by_name(fg_psy_name);
|
||||
&chg->fg_psy_name);
|
||||
}
|
||||
|
||||
if (!chg->fg_psy) {
|
||||
chg->fg_psy = power_supply_get_by_name(chg->fg_psy_name);
|
||||
if (!chg->fg_psy) {
|
||||
pr_err("No %s power supply found\n", fg_psy_name);
|
||||
pr_err("No %s power supply found\n", chg->fg_psy_name);
|
||||
return -ENODEV;
|
||||
}
|
||||
pr_info("%s power supply is found\n", fg_psy_name);
|
||||
pr_info("%s power supply is found\n", chg->fg_psy_name);
|
||||
}
|
||||
|
||||
if (chg->driver) {
|
||||
|
|
@ -2854,6 +2857,7 @@ static int sgm4154x_psy_notifier_call(struct notifier_block *nb,
|
|||
struct sgm4154x_device *sgm = container_of(nb,
|
||||
struct sgm4154x_device, psy_nb);
|
||||
struct power_supply *psy = v;
|
||||
struct sgm_mmi_charger *chg = NULL;
|
||||
|
||||
if (!sgm) {
|
||||
pr_err("called before sgm valid!\n");
|
||||
|
|
@ -2863,9 +2867,9 @@ static int sgm4154x_psy_notifier_call(struct notifier_block *nb,
|
|||
if (!psy || val != PSY_EVENT_PROP_CHANGED)
|
||||
return NOTIFY_OK;
|
||||
|
||||
chg = sgm->mmi_charger;
|
||||
if ((sgm->usb && !strcmp(psy->desc->name, sgm->usb->desc->name)) ||
|
||||
(sgm->mmi_charger && sgm->mmi_charger->fg_psy &&
|
||||
!strcmp(psy->desc->name, sgm->mmi_charger->fg_psy->desc->name))) {
|
||||
(chg && chg->fg_psy_name && !strcmp(psy->desc->name, chg->fg_psy_name))) {
|
||||
cancel_delayed_work(&sgm->charge_detect_delayed_work);
|
||||
schedule_delayed_work(&sgm->charge_detect_delayed_work,
|
||||
msecs_to_jiffies(0));
|
||||
|
|
|
|||
|
|
@ -285,6 +285,7 @@ struct sgm_mmi_charger {
|
|||
struct mmi_charger_constraint constraint;
|
||||
struct mmi_charger_driver *driver;
|
||||
u32 chrg_taper_cnt;
|
||||
const char *fg_psy_name;
|
||||
struct power_supply *fg_psy;
|
||||
int ichg_polority;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue