[PATCH v2 3/7] i2c: omap: also complete() when stat becomes zero
From: Felipe Balbi <hidden>
Date: 2012-10-25 12:25:11
Also in:
linux-i2c, linux-omap
Subsystem:
i2c subsystem, i2c subsystem host drivers, omap i2c driver, omap1 support, omap2+ support, the rest · Maintainers:
Andi Shyti, Vignesh R, Aaro Koskinen, Janusz Krzysztofik, Andreas Kemnade, Kevin Hilman, Roger Quadros, Tony Lindgren, Linus Torvalds
In case we loop on IRQ handler until stat is
finally zero, we would end up in a situation
where all I2C transfers would misteriously
timeout because we were not calling complete()
in that situation.
Fix the issue by moving omap_i2c_complete_cmd()
call inside the 'out' label.
Signed-off-by: Felipe Balbi <redacted>
---
drivers/i2c/busses/i2c-omap.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index bea0277..b004126 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -1021,9 +1021,8 @@ omap_i2c_isr_thread(int this_irq, void *dev_id)
}
} while (stat);
- omap_i2c_complete_cmd(dev, err);
-
out:
+ omap_i2c_complete_cmd(dev, err);
spin_unlock_irqrestore(&dev->lock, flags);
return IRQ_HANDLED;
--
1.8.0