| From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| Date: Thu, 21 Mar 2013 11:35:49 +0100 |
| Subject: 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> |
| --- |
| drivers/i2c/busses/i2c-omap.c | 5 +---- |
| 1 file changed, 1 insertion(+), 4 deletions(-) |
| |
| --- a/drivers/i2c/busses/i2c-omap.c |
| +++ b/drivers/i2c/busses/i2c-omap.c |
| @@ -995,15 +995,12 @@ omap_i2c_isr(int irq, void *dev_id) |
| u16 mask; |
| u16 stat; |
| |
| - spin_lock(&omap->lock); |
| - mask = omap_i2c_read_reg(omap, OMAP_I2C_IE_REG); |
| stat = omap_i2c_read_reg(omap, OMAP_I2C_STAT_REG); |
| + mask = omap_i2c_read_reg(omap, OMAP_I2C_IE_REG); |
| |
| if (stat & mask) |
| ret = IRQ_WAKE_THREAD; |
| |
| - spin_unlock(&omap->lock); |
| - |
| return ret; |
| } |
| |