home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-arm / arch-omap / entry-macro.S < prev    next >
Encoding:
Text File  |  2006-08-11  |  1.9 KB  |  77 lines

  1. /*
  2.  * include/asm-arm/arch-omap/entry-macro.S
  3.  *
  4.  * Low-level IRQ helper macros for OMAP-based platforms
  5.  *
  6.  * This file is licensed under  the terms of the GNU General Public
  7.  * License version 2. This program is licensed "as is" without any
  8.  * warranty of any kind, whether express or implied.
  9.  */
  10. #include <asm/hardware.h>
  11. #include <asm/arch/irqs.h>
  12.  
  13. #if defined(CONFIG_ARCH_OMAP1)
  14.  
  15. #if defined(CONFIG_ARCH_OMAP730) && \
  16.     (defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX))
  17. #error "FIXME: OMAP730 doesn't support multiple-OMAP"
  18. #elif defined(CONFIG_ARCH_OMAP730)
  19. #define INT_IH2_IRQ        INT_730_IH2_IRQ
  20. #elif defined(CONFIG_ARCH_OMAP15XX)
  21. #define INT_IH2_IRQ        INT_1510_IH2_IRQ
  22. #elif defined(CONFIG_ARCH_OMAP16XX)
  23. #define INT_IH2_IRQ        INT_1610_IH2_IRQ
  24. #else
  25. #warning "IH2 IRQ defaulted"
  26. #define INT_IH2_IRQ        INT_1510_IH2_IRQ
  27. #endif
  28.  
  29.          .macro    disable_fiq
  30.         .endm
  31.  
  32.         .macro    get_irqnr_and_base, irqnr, irqstat, base, tmp
  33.         ldr    \base, =IO_ADDRESS(OMAP_IH1_BASE)
  34.         ldr    \irqnr, [\base, #IRQ_ITR_REG_OFFSET]
  35.         ldr    \tmp, [\base, #IRQ_MIR_REG_OFFSET]
  36.         mov    \irqstat, #0xffffffff
  37.         bic    \tmp, \irqstat, \tmp
  38.         tst    \irqnr, \tmp
  39.         beq    1510f
  40.  
  41.         ldr    \irqnr, [\base, #IRQ_SIR_FIQ_REG_OFFSET]
  42.         cmp    \irqnr, #0
  43.         ldreq    \irqnr, [\base, #IRQ_SIR_IRQ_REG_OFFSET]
  44.         cmpeq    \irqnr, #INT_IH2_IRQ
  45.         ldreq    \base, =IO_ADDRESS(OMAP_IH2_BASE)
  46.         ldreq    \irqnr, [\base, #IRQ_SIR_IRQ_REG_OFFSET]
  47.         addeqs    \irqnr, \irqnr, #32
  48. 1510:
  49.         .endm
  50.  
  51. #elif defined(CONFIG_ARCH_OMAP24XX)
  52.  
  53. #include <asm/arch/omap24xx.h>
  54.  
  55.         .macro    disable_fiq
  56.         .endm
  57.  
  58.         .macro    get_irqnr_and_base, irqnr, irqstat, base, tmp
  59.         ldr    \base, =VA_IC_BASE
  60.         ldr    \irqnr, [\base, #0x98] /* IRQ pending reg 1 */
  61.         cmp    \irqnr, #0x0
  62.         bne    2222f
  63.         ldr    \irqnr, [\base, #0xb8] /* IRQ pending reg 2 */
  64.         cmp    \irqnr, #0x0
  65.         bne    2222f
  66.         ldr    \irqnr, [\base, #0xd8] /* IRQ pending reg 3 */
  67.         cmp    \irqnr, #0x0
  68. 2222:
  69.         ldrne    \irqnr, [\base, #IRQ_SIR_IRQ]
  70.  
  71.         .endm
  72.  
  73.         .macro    irq_prio_table
  74.         .endm
  75.  
  76. #endif
  77.