ARM: OMAP: Release i2c_adapter after use (Siemens SX1)
authorJean Delvare <khali@linux-fr.org>
Sun, 24 Feb 2008 19:03:41 +0000 (20:03 +0100)
committerJean Delvare <khali@hyperion.delvare>
Sun, 24 Feb 2008 19:03:41 +0000 (20:03 +0100)
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 <khali@linux-fr.org>
Acked-by: Vladimir Ananiev <vovan888@gmail.com>
Acked-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap1/board-sx1.c

index 1c7f09a..e473fa6 100644 (file)
@@ -61,6 +61,7 @@ int sx1_i2c_write_byte(u8 devaddr, u8 regoffset, u8 value)
        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 sx1_i2c_read_byte(u8 devaddr, u8 regoffset, u8 *value)
        msg->buf = data;
        err = i2c_transfer(adap, msg, 1);
        *value = data[0];
+       i2c_put_adapter(adap);
 
        if (err >= 0)
                return 0;