xref: /OK3568_Linux_fs/kernel/arch/arm/include/asm/hardware/entry-macro-iomd.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * arch/arm/include/asm/hardware/entry-macro-iomd.S
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun * Low-level IRQ helper macros for IOC/IOMD based platforms
5*4882a593Smuzhiyun *
6*4882a593Smuzhiyun * This file is licensed under  the terms of the GNU General Public
7*4882a593Smuzhiyun * License version 2. This program is licensed "as is" without any
8*4882a593Smuzhiyun * warranty of any kind, whether express or implied.
9*4882a593Smuzhiyun */
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun/* IOC / IOMD based hardware */
12*4882a593Smuzhiyun#include <asm/hardware/iomd.h>
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun		.macro	get_irqnr_and_base, irqnr, irqstat, base, tmp
15*4882a593Smuzhiyun		ldrb	\irqstat, [\base, #IOMD_IRQREQB]	@ get high priority first
16*4882a593Smuzhiyun		ldr	\tmp, =irq_prio_h
17*4882a593Smuzhiyun		teq	\irqstat, #0
18*4882a593Smuzhiyun#ifdef IOMD_BASE
19*4882a593Smuzhiyun		ldrbeq	\irqstat, [\base, #IOMD_DMAREQ]	@ get dma
20*4882a593Smuzhiyun		addeq	\tmp, \tmp, #256		@ irq_prio_h table size
21*4882a593Smuzhiyun		teqeq	\irqstat, #0
22*4882a593Smuzhiyun		bne	2406f
23*4882a593Smuzhiyun#endif
24*4882a593Smuzhiyun		ldrbeq	\irqstat, [\base, #IOMD_IRQREQA]	@ get low priority
25*4882a593Smuzhiyun		addeq	\tmp, \tmp, #256		@ irq_prio_d table size
26*4882a593Smuzhiyun		teqeq	\irqstat, #0
27*4882a593Smuzhiyun#ifdef IOMD_IRQREQC
28*4882a593Smuzhiyun		ldrbeq	\irqstat, [\base, #IOMD_IRQREQC]
29*4882a593Smuzhiyun		addeq	\tmp, \tmp, #256		@ irq_prio_l table size
30*4882a593Smuzhiyun		teqeq	\irqstat, #0
31*4882a593Smuzhiyun#endif
32*4882a593Smuzhiyun#ifdef IOMD_IRQREQD
33*4882a593Smuzhiyun		ldrbeq	\irqstat, [\base, #IOMD_IRQREQD]
34*4882a593Smuzhiyun		addeq	\tmp, \tmp, #256		@ irq_prio_lc table size
35*4882a593Smuzhiyun		teqeq	\irqstat, #0
36*4882a593Smuzhiyun#endif
37*4882a593Smuzhiyun2406:		ldrbne	\irqnr, [\tmp, \irqstat]	@ get IRQ number
38*4882a593Smuzhiyun		.endm
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun/*
41*4882a593Smuzhiyun * Interrupt table (incorporates priority).  Please note that we
42*4882a593Smuzhiyun * rely on the order of these tables (see above code).
43*4882a593Smuzhiyun */
44*4882a593Smuzhiyun		.align	5
45*4882a593Smuzhiyunirq_prio_h:	.byte	 0, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10
46*4882a593Smuzhiyun		.byte	12, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10
47*4882a593Smuzhiyun		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
48*4882a593Smuzhiyun		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
49*4882a593Smuzhiyun		.byte	14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10
50*4882a593Smuzhiyun		.byte	14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10
51*4882a593Smuzhiyun		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
52*4882a593Smuzhiyun		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
53*4882a593Smuzhiyun		.byte	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
54*4882a593Smuzhiyun		.byte	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
55*4882a593Smuzhiyun		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
56*4882a593Smuzhiyun		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
57*4882a593Smuzhiyun		.byte	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
58*4882a593Smuzhiyun		.byte	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
59*4882a593Smuzhiyun		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
60*4882a593Smuzhiyun		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
61*4882a593Smuzhiyun#ifdef IOMD_BASE
62*4882a593Smuzhiyunirq_prio_d:	.byte	 0,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
63*4882a593Smuzhiyun		.byte	20,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
64*4882a593Smuzhiyun		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
65*4882a593Smuzhiyun		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
66*4882a593Smuzhiyun		.byte	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
67*4882a593Smuzhiyun		.byte	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
68*4882a593Smuzhiyun		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
69*4882a593Smuzhiyun		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
70*4882a593Smuzhiyun		.byte	23,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
71*4882a593Smuzhiyun		.byte	23,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
72*4882a593Smuzhiyun		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
73*4882a593Smuzhiyun		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
74*4882a593Smuzhiyun		.byte	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
75*4882a593Smuzhiyun		.byte	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
76*4882a593Smuzhiyun		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
77*4882a593Smuzhiyun		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
78*4882a593Smuzhiyun#endif
79*4882a593Smuzhiyunirq_prio_l:	.byte	 0, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
80*4882a593Smuzhiyun		.byte	 4, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
81*4882a593Smuzhiyun		.byte	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
82*4882a593Smuzhiyun		.byte	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
83*4882a593Smuzhiyun		.byte	 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3
84*4882a593Smuzhiyun		.byte	 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3
85*4882a593Smuzhiyun		.byte	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
86*4882a593Smuzhiyun		.byte	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
87*4882a593Smuzhiyun		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
88*4882a593Smuzhiyun		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
89*4882a593Smuzhiyun		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
90*4882a593Smuzhiyun		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
91*4882a593Smuzhiyun		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
92*4882a593Smuzhiyun		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
93*4882a593Smuzhiyun		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
94*4882a593Smuzhiyun		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
95*4882a593Smuzhiyun#ifdef IOMD_IRQREQC
96*4882a593Smuzhiyunirq_prio_lc:	.byte	24,24,25,24,26,26,26,26,27,27,27,27,27,27,27,27
97*4882a593Smuzhiyun		.byte	28,24,25,24,26,26,26,26,27,27,27,27,27,27,27,27
98*4882a593Smuzhiyun		.byte	29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
99*4882a593Smuzhiyun		.byte	29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
100*4882a593Smuzhiyun		.byte	30,30,30,30,30,30,30,30,27,27,27,27,27,27,27,27
101*4882a593Smuzhiyun		.byte	30,30,30,30,30,30,30,30,27,27,27,27,27,27,27,27
102*4882a593Smuzhiyun		.byte	29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
103*4882a593Smuzhiyun		.byte	29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
104*4882a593Smuzhiyun		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
105*4882a593Smuzhiyun		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
106*4882a593Smuzhiyun		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
107*4882a593Smuzhiyun		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
108*4882a593Smuzhiyun		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
109*4882a593Smuzhiyun		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
110*4882a593Smuzhiyun		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
111*4882a593Smuzhiyun		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
112*4882a593Smuzhiyun#endif
113*4882a593Smuzhiyun#ifdef IOMD_IRQREQD
114*4882a593Smuzhiyunirq_prio_ld:	.byte	40,40,41,40,42,42,42,42,43,43,43,43,43,43,43,43
115*4882a593Smuzhiyun		.byte	44,40,41,40,42,42,42,42,43,43,43,43,43,43,43,43
116*4882a593Smuzhiyun		.byte	45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
117*4882a593Smuzhiyun		.byte	45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
118*4882a593Smuzhiyun		.byte	46,46,46,46,46,46,46,46,43,43,43,43,43,43,43,43
119*4882a593Smuzhiyun		.byte	46,46,46,46,46,46,46,46,43,43,43,43,43,43,43,43
120*4882a593Smuzhiyun		.byte	45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
121*4882a593Smuzhiyun		.byte	45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
122*4882a593Smuzhiyun		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
123*4882a593Smuzhiyun		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
124*4882a593Smuzhiyun		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
125*4882a593Smuzhiyun		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
126*4882a593Smuzhiyun		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
127*4882a593Smuzhiyun		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
128*4882a593Smuzhiyun		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
129*4882a593Smuzhiyun		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
130*4882a593Smuzhiyun#endif
131*4882a593Smuzhiyun
132