| From 5145351047b216cca13aaca99f939a9a594c6c4d Mon Sep 17 00:00:00 2001 |
| From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> |
| Date: Thu, 21 Mar 2013 11:35:49 +0100 |
| Subject: [PATCH 2/3] 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 |
| @@ -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; |
| } |
| |