int status; /* State Of Charge */
};
-static DEFINE_IDR(battery_id);
-static DEFINE_MUTEX(battery_lock);
+static DEFINE_IDA(battery_ids);
static inline int ds278x_read_reg(struct ds278x_info *info, int reg, u8 *val)
{
cancel_delayed_work_sync(&info->bat_work);
kfree(info->battery_desc.name);
kfree(info);
-
- mutex_lock(&battery_lock);
- idr_remove(&battery_id, id);
- mutex_unlock(&battery_lock);
+ ida_free(&battery_ids, id);
return 0;
}
}
/* Get an ID for this battery */
- mutex_lock(&battery_lock);
- ret = idr_alloc(&battery_id, client, 0, 0, GFP_KERNEL);
- mutex_unlock(&battery_lock);
+ ret = ida_alloc(&battery_ids, GFP_KERNEL);
if (ret < 0)
goto fail_id;
num = ret;
fail_name:
kfree(info);
fail_info:
- mutex_lock(&battery_lock);
- idr_remove(&battery_id, num);
- mutex_unlock(&battery_lock);
+ ida_free(&battery_ids, num);
fail_id:
return ret;
}