From: Felipe Balbi <me@felipebalbi.com>
To: dwmw2@infradead.org
Cc: linux-kernel@vger.kernel.org, Felipe Balbi <me@felipebalbi.com>
Subject: [rfc/patch 02/15] power: bq27200: this is an i2c device
Date: Sun, 12 Jul 2009 21:09:24 +0300 [thread overview]
Message-ID: <1247422177-7329-2-git-send-email-me@felipebalbi.com> (raw)
In-Reply-To: <1247422177-7329-1-git-send-email-me@felipebalbi.com>
... with hardcoded device address so i2c subsystem won't
talk to more than one of those.
Signed-off-by: Felipe Balbi <me@felipebalbi.com>
---
drivers/power/bq27200_battery.c | 55 +++++---------------------------------
1 files changed, 8 insertions(+), 47 deletions(-)
diff --git a/drivers/power/bq27200_battery.c b/drivers/power/bq27200_battery.c
index f31f167..1978cd9 100644
--- a/drivers/power/bq27200_battery.c
+++ b/drivers/power/bq27200_battery.c
@@ -22,9 +22,7 @@
#include <linux/delay.h>
#include <linux/platform_device.h>
#include <linux/power_supply.h>
-#include <linux/idr.h>
#include <linux/i2c.h>
-#include <asm/unaligned.h>
#define DRIVER_VERSION "1.0.0"
@@ -34,12 +32,6 @@
#define BQ27200_REG_AI 0x14
#define BQ27200_REG_FLAGS 0x0A
-/* If the system has several batteries we need a different name for each
- * of them...
- */
-static DEFINE_IDR(battery_id);
-static DEFINE_MUTEX(battery_mutex);
-
struct bq27200_device_info;
struct bq27200_access_methods {
int (*read)(u8 reg, int *rt_value, int b_single,
@@ -48,7 +40,6 @@ struct bq27200_access_methods {
struct bq27200_device_info {
struct device *dev;
- int id;
int voltage_uV;
int current_uA;
int temp_C;
@@ -251,48 +242,28 @@ static int _bq27200_read(u8 reg, int *rt_value, int b_single,
static int bq27200_battery_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
- char *name;
struct bq27200_device_info *di;
struct bq27200_access_methods *bus;
- int num;
int retval = 0;
- /* Get new ID for the new battery device */
- retval = idr_pre_get(&battery_id, GFP_KERNEL);
- if (retval == 0)
- return -ENOMEM;
- mutex_lock(&battery_mutex);
- retval = idr_get_new(&battery_id, client, &num);
- mutex_unlock(&battery_mutex);
- if (retval < 0)
- return retval;
-
- name = kasprintf(GFP_KERNEL, "bq27200-%d", num);
- if (!name) {
- dev_err(&client->dev, "failed to allocate device name\n");
- retval = -ENOMEM;
- goto batt_failed_1;
- }
-
di = kzalloc(sizeof(*di), GFP_KERNEL);
if (!di) {
dev_err(&client->dev, "failed to allocate device info data\n");
retval = -ENOMEM;
- goto batt_failed_2;
+ goto batt_failed_1;
}
- di->id = num;
bus = kzalloc(sizeof(*bus), GFP_KERNEL);
if (!bus) {
dev_err(&client->dev, "failed to allocate access method "
"data\n");
retval = -ENOMEM;
- goto batt_failed_3;
+ goto batt_failed_2;
}
i2c_set_clientdata(client, di);
di->dev = &client->dev;
- di->bat.name = name;
+ di->bat.name = client->name;
bus->read = &_bq27200_read;
di->bus = bus;
di->client = client;
@@ -302,24 +273,20 @@ static int bq27200_battery_probe(struct i2c_client *client,
retval = power_supply_register(&client->dev, &di->bat);
if (retval) {
dev_err(&client->dev, "failed to register battery\n");
- goto batt_failed_4;
+ goto batt_failed_3;
}
dev_info(&client->dev, "support ver. %s enabled\n", DRIVER_VERSION);
return 0;
-batt_failed_4:
- kfree(bus);
batt_failed_3:
- kfree(di);
+ kfree(bus);
+
batt_failed_2:
- kfree(name);
-batt_failed_1:
- mutex_lock(&battery_mutex);
- idr_remove(&battery_id, num);
- mutex_unlock(&battery_mutex);
+ kfree(di);
+batt_failed_1:
return retval;
}
@@ -328,13 +295,7 @@ static int bq27200_battery_remove(struct i2c_client *client)
struct bq27200_device_info *di = i2c_get_clientdata(client);
power_supply_unregister(&di->bat);
-
kfree(di->bat.name);
-
- mutex_lock(&battery_mutex);
- idr_remove(&battery_id, di->id);
- mutex_unlock(&battery_mutex);
-
kfree(di);
return 0;
--
1.6.1.3
next prev parent reply other threads:[~2009-07-12 18:32 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-12 18:09 [rfc/patch 01/15] power: bq27x00: rename to bq27200.c Felipe Balbi
2009-07-12 18:09 ` Felipe Balbi [this message]
2009-07-12 18:09 ` [rfc/patch 03/15] power: bq27200: misc cleanup Felipe Balbi
2009-07-12 18:09 ` [rfc/patch 04/15] power: bq27200: simplify read by using smbus Felipe Balbi
2009-07-12 18:09 ` [rfc/patch 05/15] power: bq27200: remove unnecessary function Felipe Balbi
2009-07-12 18:09 ` [rfc/patch 06/15] power: bq27200: rename structure to something smaller Felipe Balbi
2009-07-12 18:09 ` [rfc/patch 07/15] power: bq27200: add missing suplicants Felipe Balbi
2009-07-12 18:09 ` [rfc/patch 08/15] power: bq27200: define all register space Felipe Balbi
2009-07-12 18:09 ` [rfc/patch 09/15] power: bq27200: fix up current reporting Felipe Balbi
2009-07-12 18:09 ` [rfc/patch 10/15] power: bq27200: voltage should be expressed in uV Felipe Balbi
2009-07-12 18:09 ` [rfc/patch 11/15] power: bq27200: temperature in tenths of degrees Felipe Balbi
2009-07-12 18:09 ` [rfc/patch 12/15] power: bq27200: add power property Felipe Balbi
2009-07-12 18:09 ` [rfc/patch 13/15] power: bq27200: RSOC is 8-bit wide Felipe Balbi
2009-07-12 18:09 ` [rfc/patch 14/15] power: bq27200: add time to empty/full Felipe Balbi
2009-07-12 18:09 ` [rfc/patch 15/15] power: bq27200: add energy average Felipe Balbi
2009-07-12 20:12 ` [rfc/patch 14/15] power: bq27200: add time to empty/full Felipe Balbi
2009-07-12 20:11 ` [rfc/patch 12/15] power: bq27200: add power property Felipe Balbi
2009-07-12 18:47 ` [rfc/patch 02/15] power: bq27200: this is an i2c device Linus Walleij
2009-07-12 19:49 ` Felipe Balbi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1247422177-7329-2-git-send-email-me@felipebalbi.com \
--to=me@felipebalbi.com \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®