diff options
author | Hari Kanigeri <[email protected]> | 2011-03-02 22:14:18 +0000 |
---|---|---|
committer | Tony Lindgren <[email protected]> | 2011-03-03 10:24:19 -0800 |
commit | 525a11381bcad9a7f55d0bac9c8676fe71819002 (patch) | |
tree | 1884d45e72e808b4970d8b05b5a62a139c2dd10d | |
parent | dd9c1549edef02290edced639f67b54a25abbe0e (diff) |
omap: mailbox: resolve hang issue
omap4 interrupt disable bits is different. On rx kfifo full, the mbox rx
interrupts wasn't getting disabled, and this is causing the rcm stress tests
to hang.
Signed-off-by: Hari Kanigeri <[email protected]>
Signed-off-by: Armando Uribe <[email protected]>
Signed-off-by: Fernando Guzman Lugo <[email protected]>
Signed-off-by: Tony Lindgren <[email protected]>
-rw-r--r-- | arch/arm/mach-omap2/mailbox.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c index 0a585dfa9874..24b88504df0f 100644 --- a/arch/arm/mach-omap2/mailbox.c +++ b/arch/arm/mach-omap2/mailbox.c @@ -193,10 +193,12 @@ static void omap2_mbox_disable_irq(struct omap_mbox *mbox, omap_mbox_type_t irq) { struct omap_mbox2_priv *p = mbox->priv; - u32 l, bit = (irq == IRQ_TX) ? p->notfull_bit : p->newmsg_bit; - l = mbox_read_reg(p->irqdisable); - l &= ~bit; - mbox_write_reg(l, p->irqdisable); + u32 bit = (irq == IRQ_TX) ? p->notfull_bit : p->newmsg_bit; + + if (!cpu_is_omap44xx()) + bit = mbox_read_reg(p->irqdisable) & ~bit; + + mbox_write_reg(bit, p->irqdisable); } static void omap2_mbox_ack_irq(struct omap_mbox *mbox, |