/* Disable charger and minimize all settings. Reset timers, etc. */
static void disable_charger(void)
{
    ascodec_write_charger(TMPSUP_OFF | CHG_I_50MA | CHG_V_3_90V | CHG_OFF);

    if (charge_state > DISCHARGING)
        charge_state = DISCHARGING; /* Not an error state already */

    charger_total_timer = 0;
    battery_voltage_sync();
}
Exemplo n.º 2
0
/* Enable charger with specified settings. Start timers, etc. */
static void enable_charger(void)
{
    ascodec_write(AS3514_CHARGER, BATT_CHG_I | BATT_CHG_V);
    /* Watch for end of charge. Temperature supervision is handled in
     * hardware. Charger status can be read and has no interrupt enable. */
    ascodec_write(AS3514_IRQ_ENRD0, CHG_ENDOFCH);

    sleep(HZ/10); /* Allow charger turn-on time (it could be gradual). */

    ascodec_read(AS3514_IRQ_ENRD0); /* Clear out interrupts (important!) */

    charge_state = CHARGING;
    charger_total_timer = CHARGER_TOTAL_TIMER;
    battery_voltage_sync();
}
/* Enable charger with specified settings. Start timers, etc. */
static void enable_charger(void)
{
    ascodec_write_charger(BATT_CHG_I | BATT_CHG_V);

    sleep(HZ/10); /* Allow charger turn-on time (it could be gradual). */

#if CONFIG_CPU != AS3525v2
    /* acknowledge first end of charging interrupt, it seems to happen both
     * at charger plug and charger unplug
     * It doesn't happen on newer AS3543
     */
    ascodec_endofch();
#endif

    charge_state = CHARGING;
    charger_total_timer = CHARGER_TOTAL_TIMER;
    battery_voltage_sync();
}
Exemplo n.º 4
0
static inline void charger_plugged(void)
{
    batt_threshold = BATT_FULL_VOLTAGE; /* Start with topped value. */
    battery_voltage_sync();
}