Skip to content

Commit

Permalink
[PATCH] i2c: Rework client usage count, 3 of 3
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Jean Delvare authored and Greg Kroah-Hartman committed Jan 6, 2006
1 parent cde7859 commit cf02df7
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 8 deletions.
1 change: 1 addition & 0 deletions Documentation/i2c/porting-clients
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 0 additions & 5 deletions drivers/i2c/i2c-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
4 changes: 1 addition & 3 deletions include/linux/i2c.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 *);

Expand Down

0 comments on commit cf02df7

Please sign in to comment.