ARM: OMAP: Release i2c_adapter after use (Siemens SX1)
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>
This commit is contained in:
parent
4fa2b1cde0
commit
c9a2c46d7f
1 changed files with 2 additions and 0 deletions
|
@ -61,6 +61,7 @@ int sx1_i2c_write_byte(u8 devaddr, u8 regoffset, u8 value)
|
||||||
data[0] = regoffset; /* register num */
|
data[0] = regoffset; /* register num */
|
||||||
data[1] = value; /* register data */
|
data[1] = value; /* register data */
|
||||||
err = i2c_transfer(adap, msg, 1);
|
err = i2c_transfer(adap, msg, 1);
|
||||||
|
i2c_put_adapter(adap);
|
||||||
if (err >= 0)
|
if (err >= 0)
|
||||||
return 0;
|
return 0;
|
||||||
return err;
|
return err;
|
||||||
|
@ -91,6 +92,7 @@ int sx1_i2c_read_byte(u8 devaddr, u8 regoffset, u8 *value)
|
||||||
msg->buf = data;
|
msg->buf = data;
|
||||||
err = i2c_transfer(adap, msg, 1);
|
err = i2c_transfer(adap, msg, 1);
|
||||||
*value = data[0];
|
*value = data[0];
|
||||||
|
i2c_put_adapter(adap);
|
||||||
|
|
||||||
if (err >= 0)
|
if (err >= 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in a new issue