Each call to i2c_get_adapter() must be followed by a call to
i2c_put_adapter() to release the grabbed reference. Otherwise the
reference count grows forever and the adapter can never be
unregistered.

Signed-off-by: Jean Delvare <[EMAIL PROTECTED]>
Acked-by: Vladimir Ananiev <[EMAIL PROTECTED]>
Cc: Tony Lindgren <[EMAIL PROTECTED]>
---
 arch/arm/mach-omap1/board-sx1.c |    2 ++
 1 file changed, 2 insertions(+)

--- linux-2.6.24-rc4.orig/arch/arm/mach-omap1/board-sx1.c       2007-10-24 
09:59:18.000000000 +0200
+++ linux-2.6.24-rc4/arch/arm/mach-omap1/board-sx1.c    2007-12-07 
11:56:22.000000000 +0100
@@ -61,6 +61,7 @@ int i2c_write_byte(u8 devaddr, u8 regoff
        data[0] = regoffset;    /* register num */
        data[1] = value;                /* register data */
        err = i2c_transfer(adap, msg, 1);
+       i2c_put_adapter(adap);
        if (err >= 0)
                return 0;
        return err;
@@ -91,6 +92,7 @@ int i2c_read_byte(u8 devaddr, u8 regoffs
        msg->buf = data;
        err = i2c_transfer(adap, msg, 1);
        *value = data[0];
+       i2c_put_adapter(adap);
 
        if (err >= 0)
                return 0;


-- 
Jean Delvare

_______________________________________________
i2c mailing list
[email protected]
http://lists.lm-sensors.org/mailman/listinfo/i2c

Reply via email to