#include <linux/regmap.h>
#include <linux/jiffies.h>
#include <linux/interrupt.h>
-#include <linux/workqueue.h>
#include <linux/mfd/axp20x.h>
#include <linux/platform_device.h>
#include <linux/power_supply.h>
#define FG_LOW_CAP_CRIT_THR 4 /* 4 perc */
#define FG_LOW_CAP_SHDN_THR 0 /* 0 perc */
-#define STATUS_MON_DELAY_JIFFIES (HZ * 60) /*60 sec */
#define NR_RETRY_CNT 3
#define DEV_NAME "axp288_fuel_gauge"
struct mutex lock;
int status;
int max_volt;
- struct delayed_work status_monitor;
struct dentry *debug_file;
};
return ret;
}
-static void fuel_gauge_status_monitor(struct work_struct *work)
-{
- struct axp288_fg_info *info = container_of(work,
- struct axp288_fg_info, status_monitor.work);
-
- fuel_gauge_get_status(info);
- power_supply_changed(info->bat);
- schedule_delayed_work(&info->status_monitor, STATUS_MON_DELAY_JIFFIES);
-}
-
static irqreturn_t fuel_gauge_thread_handler(int irq, void *dev)
{
struct axp288_fg_info *info = dev;
platform_set_drvdata(pdev, info);
mutex_init(&info->lock);
- INIT_DELAYED_WORK(&info->status_monitor, fuel_gauge_status_monitor);
for (i = 0; i < IIO_CHANNEL_NUM; i++) {
/*
fuel_gauge_create_debugfs(info);
fuel_gauge_init_irq(info);
- schedule_delayed_work(&info->status_monitor, STATUS_MON_DELAY_JIFFIES);
return 0;
struct axp288_fg_info *info = platform_get_drvdata(pdev);
int i;
- cancel_delayed_work_sync(&info->status_monitor);
power_supply_unregister(info->bat);
fuel_gauge_remove_debugfs(info);