mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 07:03:09 -04:00
power: wait 30 seconds to determine weak
Wait 30 seconds from a charge mode change event before checking if the charge mode is weak in order to prevent false positives. Change-Id: Ibe816a310bf73e75f43d61dcb3969fa62e87ca3d Signed-off-by: Ryan Lattrel <ryanl@motorola.com> Reviewed-on: https://gerrit.mot.com/1380576 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Kenneth Kessler <kennykessler@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
03d5170904
commit
a766f64559
1 changed files with 30 additions and 3 deletions
|
|
@ -138,6 +138,8 @@ enum {
|
|||
#define DEMO_MODE_VOLTAGE 4000
|
||||
#define WARM_TEMP 45
|
||||
#define COOL_TEMP 0
|
||||
#define WEAK_CHARGER_WAIT 30000
|
||||
#define EVENT_WEAK_CHARGER_WAIT 0
|
||||
|
||||
#define HEARTBEAT_DELAY_MS 60000
|
||||
#define HEARTBEAT_DUAL_DELAY_MS 10000
|
||||
|
|
@ -300,6 +302,7 @@ struct smb_mmi_charger {
|
|||
struct power_supply *max_flip_psy;
|
||||
struct notifier_block mmi_psy_notifier;
|
||||
struct delayed_work heartbeat_work;
|
||||
struct delayed_work weakcharger_work;
|
||||
|
||||
struct votable *chg_dis_votable;
|
||||
struct votable *fcc_votable;
|
||||
|
|
@ -318,6 +321,7 @@ struct smb_mmi_charger {
|
|||
bool factory_kill_armed;
|
||||
int gen_log_rate_s;
|
||||
bool demo_mode_usb_suspend;
|
||||
unsigned long flags;
|
||||
|
||||
/* Charge Profile */
|
||||
struct mmi_sm_params sm_param[3];
|
||||
|
|
@ -1606,6 +1610,20 @@ static void mmi_chrg_input_config(struct smb_mmi_charger *chg,
|
|||
mmi_chrg_usb_vin_config(chg, stat->usb_mv);
|
||||
}
|
||||
|
||||
static void mmi_weakcharger_work(struct work_struct *work)
|
||||
{
|
||||
struct smb_mmi_charger *chip = container_of(work,
|
||||
struct smb_mmi_charger,
|
||||
weakcharger_work.work);
|
||||
|
||||
set_bit(EVENT_WEAK_CHARGER_WAIT, &chip->flags);
|
||||
cancel_delayed_work(&chip->heartbeat_work);
|
||||
schedule_delayed_work(&chip->heartbeat_work,
|
||||
msecs_to_jiffies(100));
|
||||
|
||||
mmi_dbg(chip, "SMBMMI: Weak timer expired\n");
|
||||
}
|
||||
|
||||
#define WEAK_CHRG_THRSH 450
|
||||
#define TURBO_CHRG_THRSH 2500
|
||||
void mmi_chrg_rate_check(struct smb_mmi_charger *chg)
|
||||
|
|
@ -1654,16 +1672,24 @@ void mmi_chrg_rate_check(struct smb_mmi_charger *chg)
|
|||
mmi_dbg(chg, "SMBMMI: cm %d, cs %d\n", chrg_cm_ma, chrg_cs_ma);
|
||||
if (chrg_cm_ma >= TURBO_CHRG_THRSH)
|
||||
chg->charger_rate = POWER_SUPPLY_CHARGE_RATE_TURBO;
|
||||
else if ((chrg_cm_ma > WEAK_CHRG_THRSH) && (chrg_cs_ma < WEAK_CHRG_THRSH))
|
||||
else if ((chrg_cm_ma > WEAK_CHRG_THRSH) &&
|
||||
(chrg_cs_ma < WEAK_CHRG_THRSH) &&
|
||||
test_bit(EVENT_WEAK_CHARGER_WAIT, &chg->flags))
|
||||
chg->charger_rate = POWER_SUPPLY_CHARGE_RATE_WEAK;
|
||||
else if (prev_chg_rate == POWER_SUPPLY_CHARGE_RATE_NONE)
|
||||
chg->charger_rate = POWER_SUPPLY_CHARGE_RATE_NORMAL;
|
||||
|
||||
end_rate_check:
|
||||
if (prev_chg_rate != chg->charger_rate)
|
||||
if (prev_chg_rate != chg->charger_rate) {
|
||||
clear_bit(EVENT_WEAK_CHARGER_WAIT, &chg->flags);
|
||||
cancel_delayed_work(&chg->weakcharger_work);
|
||||
if(chg->charger_rate == POWER_SUPPLY_CHARGE_RATE_NORMAL)
|
||||
schedule_delayed_work(&chg->weakcharger_work,
|
||||
msecs_to_jiffies(WEAK_CHARGER_WAIT));
|
||||
|
||||
mmi_info(chg, "%s Charger Detected\n",
|
||||
charge_rate[chg->charger_rate]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#define TAPER_COUNT 2
|
||||
|
|
@ -3505,6 +3531,7 @@ static int smb_mmi_probe(struct platform_device *pdev)
|
|||
parse_mmi_dt(chip);
|
||||
|
||||
INIT_DELAYED_WORK(&chip->heartbeat_work, mmi_heartbeat_work);
|
||||
INIT_DELAYED_WORK(&chip->weakcharger_work, mmi_weakcharger_work);
|
||||
wakeup_source_init(&chip->smb_mmi_hb_wake_source,
|
||||
"smb_mmi_hb_wake");
|
||||
alarm_init(&chip->heartbeat_alarm, ALARM_BOOTTIME,
|
||||
|
|
|
|||
Loading…
Reference in a new issue