summaryrefslogtreecommitdiff
path: root/drivers/mfd
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2012-08-07 15:16:51 +0530
committerLokesh Pathak <lpathak@nvidia.com>2012-08-08 08:58:37 -0700
commit8b46cee43505dc24d744647f09aca01d8113c842 (patch)
tree3b0d52228a171697f090cdad32c6e8f422ec7631 /drivers/mfd
parent1e1a831d0238d3bf06b9e9066912d2b150b6ddfb (diff)
mfd: tps65090: initialize regmap before accessing register
The regmap should be initialized before irq initialization happen as register are accessed during irq init. Change-Id: I301e8b84596a9075209901cbaff1dc42a944e163 Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-on: http://git-master/r/121623 Reviewed-by: Venu Byravarasu <vbyravarasu@nvidia.com>
Diffstat (limited to 'drivers/mfd')
-rw-r--r--drivers/mfd/tps65090.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/mfd/tps65090.c b/drivers/mfd/tps65090.c
index 1071f6cc0f34..25f463de1513 100644
--- a/drivers/mfd/tps65090.c
+++ b/drivers/mfd/tps65090.c
@@ -234,22 +234,22 @@ static int __devinit tps65090_i2c_probe(struct i2c_client *client,
tps65090->dev = &client->dev;
i2c_set_clientdata(client, tps65090);
+ tps65090->rmap = devm_regmap_init_i2c(client, &tps65090_regmap_config);
+ if (IS_ERR(tps65090->rmap)) {
+ ret = PTR_ERR(tps65090->rmap);
+ dev_err(&client->dev, "regmap_init failed with err: %d\n", ret);
+ return ret;
+ }
+
if (client->irq) {
ret = tps65090_irq_init(tps65090, client->irq, pdata->irq_base);
if (ret) {
dev_err(&client->dev, "IRQ init failed with err: %d\n",
ret);
- goto err_exit;
+ return ret;
}
}
- tps65090->rmap = devm_regmap_init_i2c(client, &tps65090_regmap_config);
- if (IS_ERR(tps65090->rmap)) {
- ret = PTR_ERR(tps65090->rmap);
- dev_err(&client->dev, "regmap_init failed with err: %d\n", ret);
- goto err_irq_exit;
- }
-
ret = mfd_add_devices(tps65090->dev, -1, tps65090s,
ARRAY_SIZE(tps65090s), NULL, 0);
if (ret) {
@@ -263,7 +263,6 @@ static int __devinit tps65090_i2c_probe(struct i2c_client *client,
err_irq_exit:
if (client->irq)
free_irq(client->irq, tps65090);
-err_exit:
return ret;
}