diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2013-03-21 11:35:49 +0100 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2013-11-13 11:21:26 -0500 |
commit | 89a3851d4a4ba1405e4cbce951d368b21e37b1d1 (patch) | |
tree | 61c7d574b51f5cc507ff26b7eb140c9f60d95569 /drivers/i2c/busses/i2c-omap.c | |
parent | c0fa4e9c91bff6822178c8d5e747a4264bf43e47 (diff) |
i2c/omap: drop the lock hard irq context
The lock is taken while reading two registers. On RT the first lock is
taken in hard irq where it might sleep and in the threaded irq.
The threaded irq runs in oneshot mode so the hard irq does not run until
the thread the completes so there is no reason to grab the lock.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Diffstat (limited to 'drivers/i2c/busses/i2c-omap.c')
-rw-r--r-- | drivers/i2c/busses/i2c-omap.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c index b06be8e3bb76..778bf7837ba8 100644 --- a/drivers/i2c/busses/i2c-omap.c +++ b/drivers/i2c/busses/i2c-omap.c @@ -881,15 +881,12 @@ omap_i2c_isr(int irq, void *dev_id) u16 mask; u16 stat; - spin_lock(&dev->lock); - mask = omap_i2c_read_reg(dev, OMAP_I2C_IE_REG); stat = omap_i2c_read_reg(dev, OMAP_I2C_STAT_REG); + mask = omap_i2c_read_reg(dev, OMAP_I2C_IE_REG); if (stat & mask) ret = IRQ_WAKE_THREAD; - spin_unlock(&dev->lock); - return ret; } |