]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
ARM: OMAP: PM: Use per-board Level-2 IRQ numbers, fixup PM to enable proper
authorTodd Poynor <tpoynor@mvista.com>
Mon, 17 Oct 2005 17:50:15 +0000 (10:50 -0700)
committerKevin Hilman <kevin@hilman.org>
Mon, 17 Oct 2005 17:50:15 +0000 (10:50 -0700)
IRQ for wakeup.

Signed-off-by: Todd Poynor <tpoynor@mvista.com>
Signed-off-by: Kevin Hilman <khilman@mvista.com>
arch/arm/mach-omap1/irq.c
arch/arm/plat-omap/pm.c
include/asm-arm/arch-omap/entry-macro.S
include/asm-arm/arch-omap/irqs.h

index 0b4db2c022d9ee1ec198549ba85b3be15f0d2c2a..ed65a7d2e941cf9228658b323564925ceca3aa2c 100644 (file)
@@ -47,6 +47,7 @@
 #include <asm/irq.h>
 #include <asm/mach/irq.h>
 #include <asm/arch/gpio.h>
+#include <asm/arch/cpu.h>
 
 #include <asm/io.h>
 
@@ -234,9 +235,11 @@ void __init omap_init_irq(void)
        }
 
        /* Unmask level 2 handler */
-       if (cpu_is_omap730()) {
+
+       if (cpu_is_omap730())
                omap_unmask_irq(INT_730_IH2_IRQ);
-       } else {
-               omap_unmask_irq(INT_IH2_IRQ);
-       }
+       else if (cpu_is_omap1510())
+               omap_unmask_irq(INT_1510_IH2_IRQ);
+       else if (cpu_is_omap16xx())
+               omap_unmask_irq(INT_1610_IH2_IRQ);
 }
index 56e3441dc9772bfd6cd72d3400451cadff6d9d70..22d8dd358d96c4de741c9e595e17e262fabfd38a 100644 (file)
@@ -121,7 +121,7 @@ void omap_pm_idle(void)
  */
 static void omap_pm_wakeup_setup(void)
 {
-       u32 level1_wake = OMAP_IRQ_BIT(INT_IH2_IRQ);
+       u32 level1_wake = 0;
        u32 level2_wake = OMAP_IRQ_BIT(INT_UART2);
 
        /*
@@ -130,27 +130,29 @@ static void omap_pm_wakeup_setup(void)
         * drivers must still separately call omap_set_gpio_wakeup() to
         * wake up to a GPIO interrupt.
         */
-       if (cpu_is_omap1510() || cpu_is_omap16xx())
-               level1_wake |= OMAP_IRQ_BIT(INT_GPIO_BANK1);
-       else if (cpu_is_omap730())
-               level1_wake |= OMAP_IRQ_BIT(INT_730_GPIO_BANK1);
+       if (cpu_is_omap730())
+               level1_wake = OMAP_IRQ_BIT(INT_730_GPIO_BANK1) |
+                       OMAP_IRQ_BIT(INT_730_IH2_IRQ);
+       else if (cpu_is_omap1510())
+               level1_wake = OMAP_IRQ_BIT(INT_GPIO_BANK1) | 
+                       OMAP_IRQ_BIT(INT_1510_IH2_IRQ);
+       else if (cpu_is_omap16xx())
+               level1_wake = OMAP_IRQ_BIT(INT_GPIO_BANK1) |
+                       OMAP_IRQ_BIT(INT_1610_IH2_IRQ);
 
        omap_writel(~level1_wake, OMAP_IH1_MIR);
 
        if (cpu_is_omap730()) {
-               omap_writel(~level2_wake,  OMAP_IH2_0_MIR);
+               omap_writel(~level2_wake, OMAP_IH2_0_MIR);
                omap_writel(~(OMAP_IRQ_BIT(INT_730_WAKE_UP_REQ) | OMAP_IRQ_BIT(INT_730_MPUIO_KEYPAD)), OMAP_IH2_1_MIR);
-       }
-
-       if (cpu_is_omap1510()) {
+       } else if (cpu_is_omap1510()) {
                level2_wake |= OMAP_IRQ_BIT(INT_KEYBOARD);
                omap_writel(~level2_wake,  OMAP_IH2_MIR);
-       }
-
-       /* INT_1610_WAKE_UP_REQ is needed for GPIO wakeup... */
-       if (cpu_is_omap16xx()) {
+       } else if (cpu_is_omap16xx()) {
                level2_wake |= OMAP_IRQ_BIT(INT_KEYBOARD);
                omap_writel(~level2_wake, OMAP_IH2_0_MIR);
+
+               /* INT_1610_WAKE_UP_REQ is needed for GPIO wakeup... */
                omap_writel(~OMAP_IRQ_BIT(INT_1610_WAKE_UP_REQ), OMAP_IH2_1_MIR);
                omap_writel(~0x0, OMAP_IH2_2_MIR);
                omap_writel(~0x0, OMAP_IH2_3_MIR);
index 48263c8d39fbc8e626faf3fa29ff37c86837e514..e857ed9bf02b79786452c75f8dca56e3006fb06d 100644 (file)
        (defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX))
 #error "FIXME: OMAP730 doesn't support multiple-OMAP"  
 #elif defined(CONFIG_ARCH_OMAP730)
-#undef INT_IH2_IRQ
 #define INT_IH2_IRQ            INT_730_IH2_IRQ
+#elif defined(CONFIG_ARCH_OMAP15XX)
+#define INT_IH2_IRQ            INT_1510_IH2_IRQ
+#elif defined(CONFIG_ARCH_OMAP16XX)
+#define INT_IH2_IRQ            INT_1610_IH2_IRQ
+#else
+#warning "IH2 IRQ defaulted"
+#define INT_IH2_IRQ            INT_1510_IH2_IRQ
 #endif
 
                .macro  disable_fiq
index 45f03dcd53be3598ef38b89f0ace941b6a6d5d39..20d66797172144691cbb1a0db9e47aad47ef1480 100644 (file)
@@ -31,7 +31,6 @@
  * NOTE: See also the OMAP-1510 and 1610 specific IRQ numbers below
  *
  */
-#define INT_IH2_IRQ            0
 #define INT_CAMERA             1
 #define INT_FIQ                        3
 #define INT_RTDX               6
@@ -60,6 +59,7 @@
 /*
  * OMAP-1510 specific IRQ numbers for interrupt handler 1
  */
+#define INT_1510_IH2_IRQ       0
 #define INT_1510_RES2          2
 #define INT_1510_SPI_TX                4
 #define INT_1510_SPI_RX                5
@@ -71,6 +71,7 @@
 /*
  * OMAP-1610 specific IRQ numbers for interrupt handler 1
  */
+#define INT_1610_IH2_IRQ       0
 #define INT_1610_IH2_FIQ       2
 #define INT_1610_McBSP2_TX     4
 #define INT_1610_McBSP2_RX     5