summaryrefslogtreecommitdiffstats
path: root/drivers/i2c/i2c-core.c
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2006-09-30 23:55:03 -0400
committerJeff Garzik <jeff@garzik.org>2006-09-30 23:55:03 -0400
commite993835441734c184d70d3716eed78a08eeb71c2 (patch)
tree583aa17813cdae1c4640e353f8c6df3f197e7548 /drivers/i2c/i2c-core.c
parent360f654e7cda850034f3f6252a7a7cff3fa77356 (diff)
parent1bdfd554be94def718323659173517c5d4a69d25 (diff)
downloadlinux-e993835441734c184d70d3716eed78a08eeb71c2.tar.gz
linux-e993835441734c184d70d3716eed78a08eeb71c2.tar.bz2
linux-e993835441734c184d70d3716eed78a08eeb71c2.zip
Merge branch 'master' into upstream
Diffstat (limited to 'drivers/i2c/i2c-core.c')
-rw-r--r--drivers/i2c/i2c-core.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 01233f0f7771..7ca81f42d14b 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -420,14 +420,6 @@ int i2c_attach_client(struct i2c_client *client)
}
list_add_tail(&client->list,&adapter->clients);
- if (adapter->client_register) {
- if (adapter->client_register(client)) {
- dev_dbg(&adapter->dev, "client_register "
- "failed for client [%s] at 0x%02x\n",
- client->name, client->addr);
- }
- }
-
client->usage_count = 0;
client->dev.parent = &client->adapter->dev;
@@ -445,10 +437,17 @@ int i2c_attach_client(struct i2c_client *client)
res = device_create_file(&client->dev, &dev_attr_client_name);
if (res)
goto out_unregister;
-
-out_unlock:
mutex_unlock(&adapter->clist_lock);
- return res;
+
+ if (adapter->client_register) {
+ if (adapter->client_register(client)) {
+ dev_dbg(&adapter->dev, "client_register "
+ "failed for client [%s] at 0x%02x\n",
+ client->name, client->addr);
+ }
+ }
+
+ return 0;
out_unregister:
init_completion(&client->released); /* Needed? */
@@ -458,7 +457,9 @@ out_list:
list_del(&client->list);
dev_err(&adapter->dev, "Failed to attach i2c client %s at 0x%02x "
"(%d)\n", client->name, client->addr, res);
- goto out_unlock;
+out_unlock:
+ mutex_unlock(&adapter->clist_lock);
+ return res;
}