• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/arch/arm/plat-mxc/include/mach/
1/*
2 *  Copyright (C) 2007 Lennert Buytenhek <buytenh@wantstofly.org>
3 *  Copyright 2004-2009 Freescale Semiconductor, Inc. All Rights Reserved.
4 */
5
6/*
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12#include <mach/hardware.h>
13
14#define AVIC_NIMASK	0x04
15
16	@ this macro disables fast irq (not implemented)
17	.macro	disable_fiq
18	.endm
19
20	.macro  get_irqnr_preamble, base, tmp
21#ifndef CONFIG_MXC_TZIC
22	ldr	\base, =avic_base
23	ldr	\base, [\base]
24#ifdef CONFIG_MXC_IRQ_PRIOR
25	ldr	r4, [\base, #AVIC_NIMASK]
26#endif
27#elif defined CONFIG_MXC_TZIC
28	ldr	\base, =tzic_base
29	ldr	\base, [\base]
30#endif /* CONFIG_MXC_TZIC */
31	.endm
32
33	.macro  arch_ret_to_user, tmp1, tmp2
34	.endm
35
36	@ this macro checks which interrupt occured
37	@ and returns its number in irqnr
38	@ and returns if an interrupt occured in irqstat
39	.macro	get_irqnr_and_base, irqnr, irqstat, base, tmp
40#ifndef CONFIG_MXC_TZIC
41	@ Load offset & priority of the highest priority
42	@ interrupt pending from AVIC_NIVECSR
43	ldr	\irqstat, [\base, #0x40]
44	@ Shift to get the decoded IRQ number, using ASR so
45	@ 'no interrupt pending' becomes 0xffffffff
46	mov	\irqnr, \irqstat, asr #16
47	@ set zero flag if IRQ + 1 == 0
48	adds	\tmp, \irqnr, #1
49#ifdef CONFIG_MXC_IRQ_PRIOR
50	bicne	\tmp, \irqstat, #0xFFFFFFE0
51	strne	\tmp, [\base, #AVIC_NIMASK]
52	streq	r4, [\base, #AVIC_NIMASK]
53#endif
54#elif defined CONFIG_MXC_TZIC
55	@ Load offset & priority of the highest priority
56	@ interrupt pending.
57	@ 0xD80 is HIPND0 register
58	mov     \irqnr, #0
59	mov     \irqstat, #0x0D80
601000:
61	ldr     \tmp,   [\irqstat, \base]
62	cmp     \tmp, #0
63	bne     1001f
64	addeq   \irqnr, \irqnr, #32
65	addeq   \irqstat, \irqstat, #4
66	cmp     \irqnr, #128
67	blo     1000b
68	b       2001f
691001:	mov     \irqstat, #1
701002:	tst     \tmp, \irqstat
71	bne     2002f
72	movs    \tmp, \tmp, lsr #1
73	addne   \irqnr, \irqnr, #1
74	bne     1002b
752001:
76	mov  \irqnr, #0
772002:
78	movs \irqnr, \irqnr
79#endif
80	.endm
81
82	@ irq priority table (not used)
83	.macro	irq_prio_table
84	.endm
85