mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-08 04:42:04 -04:00
smb5: adjust USBIN OV debounce condition
Adjust the USBIN OV debounce trigger condition. Use chg_done help to decide charge FULL state. Change-Id: If8d77be7884e809aab859ce45ef4238565a27338 Reviewed-on: https://gerrit.mot.com/1770943 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Huosheng Liao <liaohs@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
89ecc01a29
commit
018560f4b8
2 changed files with 13 additions and 11 deletions
|
|
@ -486,6 +486,7 @@ int smb5_iio_set_prop(struct smb_charger *chg, int channel, int val)
|
|||
msleep(50);
|
||||
vote(chg->chg_disable_votable, FORCE_RECHARGE_VOTER,
|
||||
false, 0);
|
||||
chg->chg_done = 0;
|
||||
break;
|
||||
case PSY_IIO_FCC_STEPPER_ENABLE:
|
||||
chg->fcc_stepper_enable = val;
|
||||
|
|
|
|||
|
|
@ -1323,6 +1323,7 @@ static void smblib_uusb_removal(struct smb_charger *chg)
|
|||
cancel_delayed_work_sync(&chg->usbov_dbc_work);
|
||||
vote(chg->awake_votable, USBOV_DBC_VOTER, false, 0);
|
||||
chg->dbc_usbov = false;
|
||||
chg->chg_done = 0;
|
||||
|
||||
chg->voltage_min_uv = MICRO_5V;
|
||||
chg->voltage_max_uv = MICRO_5V;
|
||||
|
|
@ -2156,7 +2157,10 @@ int smblib_get_prop_batt_status(struct smb_charger *chg,
|
|||
* charging path is un-suspended.
|
||||
*/
|
||||
if (pval.intval && !suspend) {
|
||||
val->intval = POWER_SUPPLY_STATUS_CHARGING;
|
||||
if (chg->chg_done)
|
||||
val->intval = POWER_SUPPLY_STATUS_FULL;
|
||||
else
|
||||
val->intval = POWER_SUPPLY_STATUS_CHARGING;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -5267,6 +5271,7 @@ static void smblib_eval_chg_termination(struct smb_charger *chg, u8 batt_status)
|
|||
chg->cc_soc_ref = 0;
|
||||
chg->last_cc_soc = 0;
|
||||
chg->term_vbat_uv = 0;
|
||||
chg->chg_done = 1;
|
||||
alarm_start_relative(&chg->chg_termination_alarm,
|
||||
ms_to_ktime(CHG_TERM_WA_ENTRY_DELAY_MS));
|
||||
} else if (pval.intval < 100) {
|
||||
|
|
@ -6448,6 +6453,7 @@ static void typec_src_removal(struct smb_charger *chg)
|
|||
cancel_delayed_work_sync(&chg->usbov_dbc_work);
|
||||
vote(chg->awake_votable, USBOV_DBC_VOTER, false, 0);
|
||||
chg->dbc_usbov = false;
|
||||
chg->chg_done = 0;
|
||||
|
||||
chg->pulse_cnt = 0;
|
||||
chg->usb_icl_delta_ua = 0;
|
||||
|
|
@ -7258,17 +7264,12 @@ irqreturn_t smb5_usbin_ov_irq_handler(int irq, void *data)
|
|||
* differentiate between OV IRQ glitch and real OV_IRQ, add a debounce
|
||||
* period for evaluation.
|
||||
*/
|
||||
if (stat & USBIN_OV_RT_STS_BIT) {
|
||||
chg->dbc_usbov = true;
|
||||
vote(chg->awake_votable, USBOV_DBC_VOTER, true, 0);
|
||||
schedule_delayed_work(&chg->usbov_dbc_work,
|
||||
msecs_to_jiffies(USB_OV_DBC_PERIOD_MS));
|
||||
} else {
|
||||
cancel_delayed_work_sync(&chg->usbov_dbc_work);
|
||||
chg->dbc_usbov = false;
|
||||
vote(chg->awake_votable, USBOV_DBC_VOTER, false, 0);
|
||||
}
|
||||
chg->dbc_usbov = true;
|
||||
vote(chg->awake_votable, USBOV_DBC_VOTER, true, 0);
|
||||
schedule_delayed_work(&chg->usbov_dbc_work,
|
||||
msecs_to_jiffies(USB_OV_DBC_PERIOD_MS));
|
||||
|
||||
power_supply_changed(chg->batt_psy);
|
||||
smblib_dbg(chg, PR_MISC, "USBOV debounce status %d\n",
|
||||
chg->dbc_usbov);
|
||||
return IRQ_HANDLED;
|
||||
|
|
|
|||
Loading…
Reference in a new issue