static void fuelgauge_work_handler(struct work_struct *work)
{
	struct battery_data *battery =
		container_of(work, struct battery_data, fuelgauge_work.work);
	pr_info("low battery alert!");
	if (get_fuelgauge_value(FG_CHECK_STATUS))
		_low_battery_alarm_(battery);
}
static int adcfg_lowbat_detect(void)
{
    static int first_warn_sent = false;
    static int second_warn_sent = false;
    static int poweroff_sent = false;

#ifdef BQ27425_FUEL_GAUGE

    if (sec_bci->charger.is_charging || !sec_bci->ready
            ||  sec_bci->battery.battery_level_ptg > BATT_PTG_WARN_1ST)
    {
        first_warn_sent = false;
        second_warn_sent = false;
        poweroff_sent = false;

        return false;
    }

    if (sec_bci->battery.battery_level_ptg <= BATT_PTG_WARN_1ST
            && sec_bci->battery.battery_level_ptg > BATT_PTG_WARN_2ND)
    {
        if (first_warn_sent == false)
        {
            dprintk("1st: ptg:%d, adc", sec_bci->battery.battery_level_ptg, batt_avg_info.adc);
            _low_battery_alarm_();
        }
        first_warn_sent = true;
        second_warn_sent = false;
        poweroff_sent = false;
    }
    else if (sec_bci->battery.battery_level_ptg <= BATT_PTG_WARN_2ND
             && sec_bci->battery.battery_level_ptg > BATT_PTG_WARN_OFF)
    {
        if (second_warn_sent == false)
        {
            dprintk("2nd: ptg:%d, adc", sec_bci->battery.battery_level_ptg, batt_avg_info.adc);
            _low_battery_alarm_();
        }
        first_warn_sent = false;
        second_warn_sent = true;
        poweroff_sent = false;
    }
    else if (sec_bci->battery.battery_level_ptg <= BATT_PTG_WARN_OFF)
    {
        if (poweroff_sent == false)
        {
            dprintk("off: ptg:%d, adc", sec_bci->battery.battery_level_ptg, batt_avg_info.adc);
            _low_battery_alarm_();
        }
        first_warn_sent = false;
        second_warn_sent = false;
        poweroff_sent = true;
    }
    else
    {
        printk("%s : can't reach here!\n", __func__);
    }

    return true;



#else

    if (sec_bci->charger.is_charging || !sec_bci->ready
            || batt_avg_info.capacity > BATT_PTG_WARN_1ST)
    {
        first_warn_sent = false;
        second_warn_sent = false;
        poweroff_sent = false;

        return false;
    }

    if (batt_avg_info.capacity <= BATT_PTG_WARN_1ST
            && batt_avg_info.capacity > BATT_PTG_WARN_2ND)
    {
        if (first_warn_sent == false)
        {
            dprintk("1st: ptg:%d, adc", batt_avg_info.capacity, batt_avg_info.adc);
            _low_battery_alarm_();
        }
        first_warn_sent = true;
        second_warn_sent = false;
        poweroff_sent = false;
    }
    else if (batt_avg_info.capacity <= BATT_PTG_WARN_2ND
             && batt_avg_info.capacity > BATT_PTG_WARN_OFF)
    {
        if (second_warn_sent == false)
        {
            dprintk("2nd: ptg:%d, adc", batt_avg_info.capacity, batt_avg_info.adc);
            _low_battery_alarm_();
        }
        first_warn_sent = false;
        second_warn_sent = true;
        poweroff_sent = false;
    }
    else if (batt_avg_info.capacity <= BATT_PTG_WARN_OFF)
    {
        if (poweroff_sent == false)
        {
            dprintk("off: ptg:%d, adc", batt_avg_info.capacity, batt_avg_info.adc);
            _low_battery_alarm_();
        }
        first_warn_sent = false;
        second_warn_sent = false;
        poweroff_sent = true;
    }
    else
    {
        printk("%s : can't reach here!\n", __func__);
    }

    return true;

#endif
}