2007-04-30 18:37:19 +00:00
|
|
|
/*
|
|
|
|
* Low-level IRQ helper macros for TI DaVinci-based platforms
|
|
|
|
*
|
|
|
|
* Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com>
|
|
|
|
*
|
|
|
|
* 2007 (c) MontaVista Software, Inc. This file is licensed under
|
|
|
|
* the terms of the GNU General Public License version 2. This program
|
|
|
|
* is licensed "as is" without any warranty of any kind, whether express
|
|
|
|
* or implied.
|
|
|
|
*/
|
2008-08-05 15:14:15 +00:00
|
|
|
#include <mach/irqs.h>
|
2007-04-30 18:37:19 +00:00
|
|
|
|
|
|
|
.macro get_irqnr_preamble, base, tmp
|
2009-04-15 19:40:00 +00:00
|
|
|
ldr \base, =davinci_intc_base
|
|
|
|
ldr \base, [\base]
|
2007-04-30 18:37:19 +00:00
|
|
|
.endm
|
|
|
|
|
|
|
|
.macro get_irqnr_and_base, irqnr, irqstat, base, tmp
|
2009-04-15 19:41:40 +00:00
|
|
|
#if defined(CONFIG_AINTC) && defined(CONFIG_CP_INTC)
|
|
|
|
ldr \tmp, =davinci_intc_type
|
|
|
|
ldr \tmp, [\tmp]
|
|
|
|
cmp \tmp, #DAVINCI_INTC_TYPE_CP_INTC
|
|
|
|
beq 1001f
|
|
|
|
#endif
|
|
|
|
#if defined(CONFIG_AINTC)
|
2007-04-30 18:37:19 +00:00
|
|
|
ldr \tmp, [\base, #0x14]
|
2008-02-11 21:44:07 +00:00
|
|
|
movs \tmp, \tmp, lsr #2
|
2007-04-30 18:37:19 +00:00
|
|
|
sub \irqnr, \tmp, #1
|
2009-04-15 19:41:40 +00:00
|
|
|
b 1002f
|
|
|
|
#endif
|
|
|
|
#if defined(CONFIG_CP_INTC)
|
|
|
|
1001: ldr \irqnr, [\base, #0x80] /* get irq number */
|
2012-06-20 17:40:13 +00:00
|
|
|
mov \tmp, \irqnr, lsr #31
|
2009-04-15 19:41:40 +00:00
|
|
|
and \irqnr, \irqnr, #0xff /* irq is in bits 0-9 */
|
2012-06-20 17:40:13 +00:00
|
|
|
and \tmp, \tmp, #0x1
|
|
|
|
cmp \tmp, #0x1
|
2009-04-15 19:41:40 +00:00
|
|
|
#endif
|
|
|
|
1002:
|
2007-04-30 18:37:19 +00:00
|
|
|
.endm
|