Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6ea23039cb1cc7c379eb5fba0ed2c53291e9bea7
Commit:     6ea23039cb1cc7c379eb5fba0ed2c53291e9bea7
Parent:     ad04d5c3879dcf79ba0fa1826eab991f7b7a2de8
Author:     Jiri Kosina <[EMAIL PROTECTED]>
AuthorDate: Sun Dec 10 21:21:30 2006 +0100
Committer:  Jean Delvare <[EMAIL PROTECTED]>
CommitDate: Sun Dec 10 21:21:30 2006 +0100

    i2c: Add support for nested i2c bus locking
    
    This patch adds the 'level' field into the i2c_adapter structure, which is
    used to represent the 'logical' level of nesting for the purposes of
    lockdep. This field is then used in the i2c_transfer() function, to
    acquire the per-adapter bus_lock with correct nesting level.
    
    Signed-off-by: Jiri Kosina <[EMAIL PROTECTED]>
    Signed-off-by: Jean Delvare <[EMAIL PROTECTED]>
---
 drivers/i2c/i2c-core.c |    2 +-
 include/linux/i2c.h    |    1 +
 2 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 7ca81f4..79eaa12 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -603,7 +603,7 @@ int i2c_transfer(struct i2c_adapter * adap, struct i2c_msg 
*msgs, int num)
                }
 #endif
 
-               mutex_lock(&adap->bus_lock);
+               mutex_lock_nested(&adap->bus_lock, adap->level);
                ret = adap->algo->master_xfer(adap,msgs,num);
                mutex_unlock(&adap->bus_lock);
 
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 9b5d047..08df416 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -216,6 +216,7 @@ struct i2c_adapter {
        int (*client_unregister)(struct i2c_client *);
 
        /* data fields that are valid for all devices   */
+       u8 level;                       /* nesting level for lockdep */
        struct mutex bus_lock;
        struct mutex clist_lock;
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to