[PATCH] i2c: Rework client usage count, 3 of 3
authorJean Delvare <khali@linux-fr.org>
Sat, 26 Nov 2005 20:03:41 +0000 (21:03 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 6 Jan 2006 06:16:22 +0000 (22:16 -0800)
Do not limit the usage count of i2c clients to 1. In other words,
change the client usage count behavior from the old I2C_CLIENT_ALLOW_USE
to the old I2C_CLIENT_ALLOW_MULTIPLE_USE. The rationale is that no
driver actually needs the limiting behavior, and the unlimiting
behavior is slightly easier to implement.

Update the documentation to reflect this change.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Documentation/i2c/porting-clients
drivers/i2c/i2c-core.c
include/linux/i2c.h

index 64c610bf2fbc14325d82ef5c3f91f430752dfcad..6b07f23039d2ee116f1bbd1dbae92d17ce9c698e 100644 (file)
@@ -92,6 +92,7 @@ Technical changes:
   Drop client->id.
   Drop any 24RF08 corruption prevention you find, as this is now done
   at the i2c-core level, and doing it twice voids it.
+  Don't add I2C_CLIENT_ALLOW_USE to client->flags, it's the default now.
 
 * [Init] Limits must not be set by the driver (can be done later in
   user-space). Chip should not be reset default (although a module
index d16b4998c4c2f69ae9a17b21d8ec20fd53b9e369..a1c5dff854318a0981034b74c031211c31d64c95 100644 (file)
@@ -497,14 +497,9 @@ int i2c_use_client(struct i2c_client *client)
        if (ret)
                return ret;
 
-       if (client->usage_count > 0)
-               goto busy;
        client->usage_count++;
 
        return 0;
- busy:
-       i2c_dec_use_client(client);
-       return -EBUSY;
 }
 
 int i2c_release_client(struct i2c_client *client)
index 8b4d4695de0efa3783de6af5afb57ef8a33ac411..85c517a9b05b6d8aafdb1af201f54728a2011dd3 100644 (file)
@@ -307,9 +307,7 @@ extern struct i2c_client *i2c_get_client(int driver_id, int adapter_id,
    extern struct i2c_client *i2c_get_client(int,int,struct i2c_client *);
    to make sure that client-struct is valid and that it is okay to access
    the i2c-client. 
-   returns -EACCES if client doesn't allow use (default)
-   returns -EBUSY if client doesn't allow multiple use (default) and 
-   usage_count >0 */
+   returns -ENODEV if client has gone in the meantime */
 extern int i2c_use_client(struct i2c_client *);
 extern int i2c_release_client(struct i2c_client *);