]> www.infradead.org Git - users/willy/xarray.git/commitdiff
power: Convert bq27xxx_battery to IDA
authorMatthew Wilcox <willy@infradead.org>
Mon, 18 Feb 2019 21:15:02 +0000 (16:15 -0500)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Fri, 9 Aug 2019 01:38:18 +0000 (21:38 -0400)
Signed-off-by: Matthew Wilcox <willy@infradead.org>
drivers/power/supply/bq27xxx_battery_i2c.c

index 2677c38a8a42453c970d90ed3e45572330b7a59f..e5e768e12acee747a4f573d8c1f6ce338a5edc7d 100644 (file)
  */
 
 #include <linux/i2c.h>
+#include <linux/idr.h>
 #include <linux/interrupt.h>
 #include <linux/module.h>
 #include <asm/unaligned.h>
 
 #include <linux/power/bq27xxx_battery.h>
 
-static DEFINE_IDR(battery_id);
-static DEFINE_MUTEX(battery_mutex);
+static DEFINE_IDA(battery_ids);
 
 static irqreturn_t bq27xxx_battery_irq_handler_thread(int irq, void *data)
 {
@@ -153,9 +153,7 @@ static int bq27xxx_battery_i2c_probe(struct i2c_client *client,
        int num;
 
        /* Get new ID for the new battery device */
-       mutex_lock(&battery_mutex);
-       num = idr_alloc(&battery_id, client, 0, 0, GFP_KERNEL);
-       mutex_unlock(&battery_mutex);
+       num = ida_alloc(&battery_ids, GFP_KERNEL);
        if (num < 0)
                return num;
 
@@ -205,9 +203,7 @@ err_mem:
        ret = -ENOMEM;
 
 err_failed:
-       mutex_lock(&battery_mutex);
-       idr_remove(&battery_id, num);
-       mutex_unlock(&battery_mutex);
+       ida_free(&battery_ids, num);
 
        return ret;
 }
@@ -218,9 +214,7 @@ static int bq27xxx_battery_i2c_remove(struct i2c_client *client)
 
        bq27xxx_battery_teardown(di);
 
-       mutex_lock(&battery_mutex);
-       idr_remove(&battery_id, di->id);
-       mutex_unlock(&battery_mutex);
+       ida_free(&battery_ids, di->id);
 
        return 0;
 }