static void sharpsl_chrg_full_timer(unsigned long data) { dev_dbg(sharpsl_pm.dev, "Charge Full at time: %lx\n", jiffies); sharpsl_pm.full_count++; if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) { dev_dbg(sharpsl_pm.dev, "Charge Full: AC removed - stop charging!\n"); if (sharpsl_pm.charge_mode == CHRG_ON) sharpsl_charge_off(); } else if (sharpsl_pm.full_count < 2) { dev_dbg(sharpsl_pm.dev, "Charge Full: Count too low\n"); schedule_delayed_work(&toggle_charger, 0); } else if (time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_FINISH_TIME)) { dev_dbg(sharpsl_pm.dev, "Charge Full: Interrupt generated too slowly - retry.\n"); schedule_delayed_work(&toggle_charger, 0); } else { sharpsl_charge_off(); sharpsl_pm.charge_mode = CHRG_DONE; dev_dbg(sharpsl_pm.dev, "Charge Full: Charging Finished\n"); } }
static void sharpsl_ac_timer(unsigned long data) { int acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN); dev_dbg(sharpsl_pm.dev, "AC Status: %d\n",acin); sharpsl_average_clear(); if (acin && (sharpsl_pm.charge_mode != CHRG_ON)) sharpsl_charge_on(); else if (sharpsl_pm.charge_mode == CHRG_ON) sharpsl_charge_off(); schedule_delayed_work(&sharpsl_bat, 0); }
static void sharpsl_ac_timer(unsigned long data) { int acin = STATUS_AC_IN(); dev_dbg(sharpsl_pm.dev, "AC Status: %d\n",acin); sharpsl_average_clear(); if (acin && (sharpsl_pm.charge_mode != CHRG_ON)) sharpsl_charge_on(); else if (sharpsl_pm.charge_mode == CHRG_ON) sharpsl_charge_off(); schedule_work(&sharpsl_bat); }
static void sharpsl_charge_toggle(struct work_struct *private_) { dev_dbg(sharpsl_pm.dev, "Toogling Charger at time: %lx\n", jiffies); if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) { sharpsl_charge_off(); return; } else if ((sharpsl_check_battery_temp() < 0) || (sharpsl_ac_check() < 0)) { sharpsl_charge_error(); return; } sharpsl_pm_led(SHARPSL_LED_ON); sharpsl_pm.machinfo->charge(0); mdelay(SHARPSL_CHARGE_WAIT_TIME); sharpsl_pm.machinfo->charge(1); sharpsl_pm.charge_start_time = jiffies; }
static void sharpsl_charge_toggle(void *private_) { dev_dbg(sharpsl_pm.dev, "Toogling Charger at time: %lx\n", jiffies); if (STATUS_AC_IN() == 0) { sharpsl_charge_off(); return; } else if ((sharpsl_check_battery_temp() < 0) || (sharpsl_ac_check() < 0)) { sharpsl_charge_error(); return; } CHARGE_LED_ON(); CHARGE_OFF(); mdelay(SHARPSL_CHARGE_WAIT_TIME); CHARGE_ON(); sharpsl_pm.charge_start_time = jiffies; }