예제 #1
0
static void bq27410_battery_work(struct work_struct *work)
{
	struct bq27410_device_info *di = container_of(work, struct bq27410_device_info, work.work); 
	static int flag = 0;
	if(flag == 0){
		mutex_lock(&g_bq27410_mutex);
		bq27410_write_batt_insert(g_client);
		mutex_unlock(&g_bq27410_mutex);

		virtual_battery_enable = 0;
		flag = 1;
	}

	bq27410_battery_update_status(di);
	/* reschedule for the next time */
	schedule_delayed_work(&di->work, di->interval);
}
예제 #2
0
static void bq27410_battery_work(struct work_struct *work)
{
	struct bq27410_device_info *di = container_of(work, struct bq27410_device_info, work.work); 
	int ret = 0;
	u8 buf[2];
	int battflags = 0;
	static int flag = 0;

	if(flag == 0){
#if 0
		mutex_lock(&g_bq27410_mutex);
		bq27410_write_batt_insert(g_client);
		mutex_unlock(&g_bq27410_mutex);

		virtual_battery_enable = 0;
		flag = 1;
#else
		mutex_lock(&g_bq27410_mutex);
		ret = bq27410_read(g_client,BQ27410_REG_FLAGS, buf, 2);
		if (ret < 0) {
			DBG("error reading flags\n");
			return ret;
		}
		mutex_unlock(&g_bq27410_mutex);
		battflags = get_unaligned_le16(buf);
		if ((battflags & BQ27410_FLAG_BAT_DET)){
			printk("27410: %s, battflags = 0x%x, set virtual_battery_enable = 0\n",__FUNCTION__,battflags);
			flag = 1;
			virtual_battery_enable = 0;
		}
#endif
	}

	bq27410_battery_update_status(di);
	/* reschedule for the next time */
	schedule_delayed_work(&di->work, di->interval);
}