};
/* each registered chip must have unique id */
-static DEFINE_IDR(bq2415x_id);
+static DEFINE_IDA(bq2415x_ids);
-static DEFINE_MUTEX(bq2415x_id_mutex);
static DEFINE_MUTEX(bq2415x_timer_mutex);
static DEFINE_MUTEX(bq2415x_i2c_mutex);
}
/* Get new ID for the new device */
- mutex_lock(&bq2415x_id_mutex);
- num = idr_alloc(&bq2415x_id, client, 0, 0, GFP_KERNEL);
- mutex_unlock(&bq2415x_id_mutex);
+ num = ida_alloc(&bq2415x_ids, GFP_KERNEL);
if (num < 0)
return num;
of_node_put(bq->notify_node);
kfree(name);
error_1:
- mutex_lock(&bq2415x_id_mutex);
- idr_remove(&bq2415x_id, num);
- mutex_unlock(&bq2415x_id_mutex);
+ ida_free(&bq2415x_ids, num);
return ret;
}
bq2415x_reset_chip(bq);
- mutex_lock(&bq2415x_id_mutex);
- idr_remove(&bq2415x_id, bq->id);
- mutex_unlock(&bq2415x_id_mutex);
+ ida_free(&bq2415x_ids, bq->id);
dev_info(bq->dev, "driver unregistered\n");