diff options
author | Vasily Khoruzhick <anarsoul@gmail.com> | 2011-03-13 09:53:29 -0400 |
---|---|---|
committer | Ben Dooks <ben-linux@fluff.org> | 2011-03-21 19:00:12 -0400 |
commit | 97491ba3f64c2137101efdfe7593305d692d7d63 (patch) | |
tree | d8f8a075497b63f2386f3b358d96e46a0a48799c /drivers | |
parent | a0774f4511371319418f959ce838f81d47a3fd56 (diff) |
i2c-pxa2xx: Don't clear isr bits too early
isr is passed later into i2c_pxa_irq_txempty and
i2c_pxa_irq_rxfull and they may use some other bits
than irq sources.
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/i2c/busses/i2c-pxa.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c index b914184748c9..f59224a5c761 100644 --- a/drivers/i2c/busses/i2c-pxa.c +++ b/drivers/i2c/busses/i2c-pxa.c | |||
@@ -966,8 +966,7 @@ static irqreturn_t i2c_pxa_handler(int this_irq, void *dev_id) | |||
966 | struct pxa_i2c *i2c = dev_id; | 966 | struct pxa_i2c *i2c = dev_id; |
967 | u32 isr = readl(_ISR(i2c)); | 967 | u32 isr = readl(_ISR(i2c)); |
968 | 968 | ||
969 | isr &= VALID_INT_SOURCE; | 969 | if (!(isr & VALID_INT_SOURCE)) |
970 | if (!isr) | ||
971 | return IRQ_NONE; | 970 | return IRQ_NONE; |
972 | 971 | ||
973 | if (i2c_debug > 2 && 0) { | 972 | if (i2c_debug > 2 && 0) { |
@@ -984,7 +983,7 @@ static irqreturn_t i2c_pxa_handler(int this_irq, void *dev_id) | |||
984 | /* | 983 | /* |
985 | * Always clear all pending IRQs. | 984 | * Always clear all pending IRQs. |
986 | */ | 985 | */ |
987 | writel(isr, _ISR(i2c)); | 986 | writel(isr & VALID_INT_SOURCE, _ISR(i2c)); |
988 | 987 | ||
989 | if (isr & ISR_SAD) | 988 | if (isr & ISR_SAD) |
990 | i2c_pxa_slave_start(i2c, isr); | 989 | i2c_pxa_slave_start(i2c, isr); |