From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Liam Girdwood <lrg@slimlogic.co.uk>
Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>,
linux-kernel@vger.kernel.org
Subject: [PATCH 06/14] Regulators: tps6507x-regulator - mark probe method as __devinit
Date: Tue, 23 Feb 2010 23:38:12 -0800 [thread overview]
Message-ID: <20100224073811.15964.36760.stgit@localhost.localdomain> (raw)
In-Reply-To: <20100224073342.15964.8863.stgit@localhost.localdomain>
Also move error handling in probe() out of line and do not bother
to reset fields in structures that are about to be freed.
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
---
drivers/regulator/tps6507x-regulator.c | 34 ++++++++++++++------------------
1 files changed, 15 insertions(+), 19 deletions(-)
diff --git a/drivers/regulator/tps6507x-regulator.c b/drivers/regulator/tps6507x-regulator.c
index f8a6dfb..c2a9539 100644
--- a/drivers/regulator/tps6507x-regulator.c
+++ b/drivers/regulator/tps6507x-regulator.c
@@ -538,8 +538,8 @@ static struct regulator_ops tps6507x_ldo_ops = {
.list_voltage = tps6507x_ldo_list_voltage,
};
-static
-int tps_6507x_probe(struct i2c_client *client, const struct i2c_device_id *id)
+static int __devinit tps_6507x_probe(struct i2c_client *client,
+ const struct i2c_device_id *id)
{
static int desc_id;
const struct tps_info *info = (void *)id->driver_data;
@@ -547,6 +547,7 @@ int tps_6507x_probe(struct i2c_client *client, const struct i2c_device_id *id)
struct regulator_dev *rdev;
struct tps_pmic *tps;
int i;
+ int error;
if (!i2c_check_functionality(client->adapter,
I2C_FUNC_SMBUS_BYTE_DATA))
@@ -557,7 +558,6 @@ int tps_6507x_probe(struct i2c_client *client, const struct i2c_device_id *id)
* coming from the board-evm file.
*/
init_data = client->dev.platform_data;
-
if (!init_data)
return -EIO;
@@ -586,18 +586,8 @@ int tps_6507x_probe(struct i2c_client *client, const struct i2c_device_id *id)
if (IS_ERR(rdev)) {
dev_err(&client->dev, "failed to register %s\n",
id->name);
-
- /* Unregister */
- while (i)
- regulator_unregister(tps->rdev[--i]);
-
- tps->client = NULL;
-
- /* clear the client data in i2c */
- i2c_set_clientdata(client, NULL);
-
- kfree(tps);
- return PTR_ERR(rdev);
+ error = PTR_ERR(rdev);
+ goto fail;
}
/* Save regulator for cleanup */
@@ -607,6 +597,13 @@ int tps_6507x_probe(struct i2c_client *client, const struct i2c_device_id *id)
i2c_set_clientdata(client, tps);
return 0;
+
+fail:
+ while (--i >= 0)
+ regulator_unregister(tps->rdev[i]);
+
+ kfree(tps);
+ return error;
}
/**
@@ -620,13 +617,12 @@ static int __devexit tps_6507x_remove(struct i2c_client *client)
struct tps_pmic *tps = i2c_get_clientdata(client);
int i;
+ /* clear the client data in i2c */
+ i2c_set_clientdata(client, NULL);
+
for (i = 0; i < TPS6507X_NUM_REGULATOR; i++)
regulator_unregister(tps->rdev[i]);
- tps->client = NULL;
-
- /* clear the client data in i2c */
- i2c_set_clientdata(client, NULL);
kfree(tps);
return 0;
next prev parent reply other threads:[~2010-02-24 7:38 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-24 7:37 [PATCH 00/14] Assorted small patches for regulators Dmitry Torokhov
2010-02-24 7:37 ` [PATCH 01/14] Regulators: virtual - use sysfs attribute groups Dmitry Torokhov
2010-02-24 10:50 ` Mark Brown
2010-02-25 10:35 ` Liam Girdwood
2010-02-24 7:37 ` [PATCH 02/14] Regulators: ab3100 - fix probe and remove annotations Dmitry Torokhov
2010-02-24 10:03 ` Mark Brown
2010-02-25 10:36 ` Liam Girdwood
2010-02-24 7:37 ` [PATCH 03/14] Regulators: fixed - annotate probe and remove methods Dmitry Torokhov
2010-02-24 10:43 ` Mark Brown
2010-02-25 10:36 ` Liam Girdwood
2010-02-24 7:38 ` [PATCH 04/14] Regulators: twl-regulator - mark probe function as __devinit Dmitry Torokhov
2010-02-24 10:05 ` Mark Brown
2010-02-25 10:36 ` Liam Girdwood
2010-02-24 7:38 ` [PATCH 05/14] Regulators: tps65023-regulator - mark probe method " Dmitry Torokhov
2010-02-24 11:31 ` Mark Brown
2010-02-25 10:37 ` Liam Girdwood
2010-02-24 7:38 ` Dmitry Torokhov [this message]
2010-02-24 11:32 ` [PATCH 06/14] Regulators: tps6507x-regulator " Mark Brown
2010-02-25 10:37 ` Liam Girdwood
2010-02-24 7:38 ` [PATCH 07/14] Regulators: lp3971 - fail if platform data was not supplied Dmitry Torokhov
2010-02-24 12:11 ` Mark Brown
2010-02-25 10:37 ` Liam Girdwood
2010-02-24 7:38 ` [PATCH 08/14] Regulators: max1586 - annotate probe and remove methods Dmitry Torokhov
2010-02-24 10:06 ` Mark Brown
2010-02-24 10:16 ` Dmitry Torokhov
2010-02-25 10:37 ` Liam Girdwood
2010-02-24 7:38 ` [PATCH 09/14] Regulators: max8660 " Dmitry Torokhov
2010-02-24 10:07 ` Mark Brown
2010-02-25 10:37 ` Liam Girdwood
2010-02-24 7:38 ` [PATCH 10/14] Regulators: pcap-regulator - clean up driver data after removal Dmitry Torokhov
2010-02-24 10:36 ` Mark Brown
2010-02-25 10:38 ` Liam Girdwood
2010-02-24 7:38 ` [PATCH 11/14] Regulators: wm831x-xxx " Dmitry Torokhov
2010-02-24 10:36 ` Mark Brown
2010-02-25 10:38 ` Liam Girdwood
2010-02-24 7:38 ` [PATCH 12/14] Regulators: wm8994 " Dmitry Torokhov
2010-02-24 10:20 ` Mark Brown
2010-02-25 10:39 ` Liam Girdwood
2010-02-24 7:38 ` [PATCH 13/14] Regulators: wm8400 - cleanup platform driver data handling Dmitry Torokhov
2010-02-24 10:25 ` Mark Brown
2010-02-24 19:02 ` Dmitry Torokhov
2010-02-24 19:14 ` Mark Brown
2010-02-24 19:21 ` Dmitry Torokhov
2010-02-24 20:40 ` Mark Brown
2010-02-25 9:55 ` Dmitry Torokhov
2010-02-25 10:43 ` Mark Brown
2010-02-25 11:02 ` Liam Girdwood
2010-02-24 7:38 ` [PATCH 14/14] Regulators: max8925-regulator - clean up driver data after removal Dmitry Torokhov
2010-02-24 10:28 ` Mark Brown
2010-02-25 10:39 ` Liam Girdwood
2010-02-24 10:03 ` [PATCH 00/14] Assorted small patches for regulators Mark Brown
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=20100224073811.15964.36760.stgit@localhost.localdomain \
--to=dmitry.torokhov@gmail.com \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lrg@slimlogic.co.uk \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.