]> err.no Git - linux-2.6/blobdiff - drivers/i2c/i2c-core.c
[PATCH] AT91RM9200 Ethernet #4: Suspend/Resume
[linux-2.6] / drivers / i2c / i2c-core.c
index 975cb647da102632f9914af65ad7ab25ad17b76f..a45155f799d4405dae2d67ca06d7168f64fe9d3d 100644 (file)
@@ -288,9 +288,7 @@ int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
 {
        struct list_head   *item;
        struct i2c_adapter *adapter;
-       int res = 0;
-
-       mutex_lock(&core_lists);
+       int res;
 
        /* add the driver to the list of i2c drivers in the driver core */
        driver->driver.owner = owner;
@@ -298,8 +296,10 @@ int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
 
        res = driver_register(&driver->driver);
        if (res)
-               goto out_unlock;
+               return res;
        
+       mutex_lock(&core_lists);
+
        list_add_tail(&driver->list,&drivers);
        pr_debug("i2c-core: driver [%s] registered\n", driver->driver.name);
 
@@ -311,9 +311,8 @@ int i2c_register_driver(struct module *owner, struct i2c_driver *driver)
                }
        }
 
- out_unlock:
        mutex_unlock(&core_lists);
-       return res;
+       return 0;
 }
 EXPORT_SYMBOL(i2c_register_driver);
 
@@ -917,7 +916,7 @@ s32 i2c_smbus_write_word_data(struct i2c_client *client, u8 command, u16 value)
 }
 
 s32 i2c_smbus_write_block_data(struct i2c_client *client, u8 command,
-                              u8 length, u8 *values)
+                              u8 length, const u8 *values)
 {
        union i2c_smbus_data data;
 
@@ -945,7 +944,7 @@ s32 i2c_smbus_read_i2c_block_data(struct i2c_client *client, u8 command, u8 *val
 }
 
 s32 i2c_smbus_write_i2c_block_data(struct i2c_client *client, u8 command,
-                                  u8 length, u8 *values)
+                                  u8 length, const u8 *values)
 {
        union i2c_smbus_data data;