omap: mailbox: correct OMAP4 SIDLEMODE logic
authorSuman Anna <s-anna@ti.com>
Fri, 5 Feb 2010 23:20:26 +0000 (17:20 -0600)
committerTony Lindgren <tony@atomide.com>
Tue, 23 Feb 2010 23:29:22 +0000 (15:29 -0800)
OMAP4 mailbox has a different MAILBOX_SYSCONFIG register.
There is now no AutoIdle. The SIDLEMODE bits have been
right-shifted by 1 bit and now occupy bits 2 & 3.

Signed-off-by: Suman Anna <s-anna@ti.com>
Acked-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap2/mailbox.c

index 6519716..52a981c 100644 (file)
@@ -41,6 +41,8 @@
 #define SOFTRESET      (1 << 1)
 #define SMARTIDLE      (2 << 3)
 #define OMAP4_SOFTRESET        (1 << 0)
+#define OMAP4_NOIDLE   (1 << 2)
+#define OMAP4_SMARTIDLE        (2 << 2)
 
 /* SYSSTATUS: register bit definition */
 #define RESETDONE      (1 << 0)
@@ -131,7 +133,10 @@ static int omap2_mbox_startup(struct omap_mbox *mbox)
        l = mbox_read_reg(MAILBOX_REVISION);
        pr_info("omap mailbox rev %d.%d\n", (l & 0xf0) >> 4, (l & 0x0f));
 
-       l = SMARTIDLE | AUTOIDLE;
+       if (cpu_is_omap44xx())
+               l = OMAP4_SMARTIDLE;
+       else
+               l = SMARTIDLE | AUTOIDLE;
        mbox_write_reg(l, MAILBOX_SYSCONFIG);
 
        omap2_mbox_enable_irq(mbox, IRQ_RX);