18c2ecf20Sopenharmony_ci/*
28c2ecf20Sopenharmony_ci * arch/arm/include/asm/hardware/entry-macro-iomd.S
38c2ecf20Sopenharmony_ci *
48c2ecf20Sopenharmony_ci * Low-level IRQ helper macros for IOC/IOMD based platforms
58c2ecf20Sopenharmony_ci *
68c2ecf20Sopenharmony_ci * This file is licensed under  the terms of the GNU General Public
78c2ecf20Sopenharmony_ci * License version 2. This program is licensed "as is" without any
88c2ecf20Sopenharmony_ci * warranty of any kind, whether express or implied.
98c2ecf20Sopenharmony_ci */
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci/* IOC / IOMD based hardware */
128c2ecf20Sopenharmony_ci#include <asm/hardware/iomd.h>
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci		.macro	get_irqnr_and_base, irqnr, irqstat, base, tmp
158c2ecf20Sopenharmony_ci		ldrb	\irqstat, [\base, #IOMD_IRQREQB]	@ get high priority first
168c2ecf20Sopenharmony_ci		ldr	\tmp, =irq_prio_h
178c2ecf20Sopenharmony_ci		teq	\irqstat, #0
188c2ecf20Sopenharmony_ci#ifdef IOMD_BASE
198c2ecf20Sopenharmony_ci		ldrbeq	\irqstat, [\base, #IOMD_DMAREQ]	@ get dma
208c2ecf20Sopenharmony_ci		addeq	\tmp, \tmp, #256		@ irq_prio_h table size
218c2ecf20Sopenharmony_ci		teqeq	\irqstat, #0
228c2ecf20Sopenharmony_ci		bne	2406f
238c2ecf20Sopenharmony_ci#endif
248c2ecf20Sopenharmony_ci		ldrbeq	\irqstat, [\base, #IOMD_IRQREQA]	@ get low priority
258c2ecf20Sopenharmony_ci		addeq	\tmp, \tmp, #256		@ irq_prio_d table size
268c2ecf20Sopenharmony_ci		teqeq	\irqstat, #0
278c2ecf20Sopenharmony_ci#ifdef IOMD_IRQREQC
288c2ecf20Sopenharmony_ci		ldrbeq	\irqstat, [\base, #IOMD_IRQREQC]
298c2ecf20Sopenharmony_ci		addeq	\tmp, \tmp, #256		@ irq_prio_l table size
308c2ecf20Sopenharmony_ci		teqeq	\irqstat, #0
318c2ecf20Sopenharmony_ci#endif
328c2ecf20Sopenharmony_ci#ifdef IOMD_IRQREQD
338c2ecf20Sopenharmony_ci		ldrbeq	\irqstat, [\base, #IOMD_IRQREQD]
348c2ecf20Sopenharmony_ci		addeq	\tmp, \tmp, #256		@ irq_prio_lc table size
358c2ecf20Sopenharmony_ci		teqeq	\irqstat, #0
368c2ecf20Sopenharmony_ci#endif
378c2ecf20Sopenharmony_ci2406:		ldrbne	\irqnr, [\tmp, \irqstat]	@ get IRQ number
388c2ecf20Sopenharmony_ci		.endm
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci/*
418c2ecf20Sopenharmony_ci * Interrupt table (incorporates priority).  Please note that we
428c2ecf20Sopenharmony_ci * rely on the order of these tables (see above code).
438c2ecf20Sopenharmony_ci */
448c2ecf20Sopenharmony_ci		.align	5
458c2ecf20Sopenharmony_ciirq_prio_h:	.byte	 0, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10
468c2ecf20Sopenharmony_ci		.byte	12, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10
478c2ecf20Sopenharmony_ci		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
488c2ecf20Sopenharmony_ci		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
498c2ecf20Sopenharmony_ci		.byte	14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10
508c2ecf20Sopenharmony_ci		.byte	14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10
518c2ecf20Sopenharmony_ci		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
528c2ecf20Sopenharmony_ci		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
538c2ecf20Sopenharmony_ci		.byte	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
548c2ecf20Sopenharmony_ci		.byte	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
558c2ecf20Sopenharmony_ci		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
568c2ecf20Sopenharmony_ci		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
578c2ecf20Sopenharmony_ci		.byte	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
588c2ecf20Sopenharmony_ci		.byte	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
598c2ecf20Sopenharmony_ci		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
608c2ecf20Sopenharmony_ci		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
618c2ecf20Sopenharmony_ci#ifdef IOMD_BASE
628c2ecf20Sopenharmony_ciirq_prio_d:	.byte	 0,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
638c2ecf20Sopenharmony_ci		.byte	20,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
648c2ecf20Sopenharmony_ci		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
658c2ecf20Sopenharmony_ci		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
668c2ecf20Sopenharmony_ci		.byte	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
678c2ecf20Sopenharmony_ci		.byte	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
688c2ecf20Sopenharmony_ci		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
698c2ecf20Sopenharmony_ci		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
708c2ecf20Sopenharmony_ci		.byte	23,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
718c2ecf20Sopenharmony_ci		.byte	23,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
728c2ecf20Sopenharmony_ci		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
738c2ecf20Sopenharmony_ci		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
748c2ecf20Sopenharmony_ci		.byte	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
758c2ecf20Sopenharmony_ci		.byte	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
768c2ecf20Sopenharmony_ci		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
778c2ecf20Sopenharmony_ci		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
788c2ecf20Sopenharmony_ci#endif
798c2ecf20Sopenharmony_ciirq_prio_l:	.byte	 0, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
808c2ecf20Sopenharmony_ci		.byte	 4, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
818c2ecf20Sopenharmony_ci		.byte	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
828c2ecf20Sopenharmony_ci		.byte	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
838c2ecf20Sopenharmony_ci		.byte	 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3
848c2ecf20Sopenharmony_ci		.byte	 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3
858c2ecf20Sopenharmony_ci		.byte	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
868c2ecf20Sopenharmony_ci		.byte	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
878c2ecf20Sopenharmony_ci		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
888c2ecf20Sopenharmony_ci		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
898c2ecf20Sopenharmony_ci		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
908c2ecf20Sopenharmony_ci		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
918c2ecf20Sopenharmony_ci		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
928c2ecf20Sopenharmony_ci		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
938c2ecf20Sopenharmony_ci		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
948c2ecf20Sopenharmony_ci		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
958c2ecf20Sopenharmony_ci#ifdef IOMD_IRQREQC
968c2ecf20Sopenharmony_ciirq_prio_lc:	.byte	24,24,25,24,26,26,26,26,27,27,27,27,27,27,27,27
978c2ecf20Sopenharmony_ci		.byte	28,24,25,24,26,26,26,26,27,27,27,27,27,27,27,27
988c2ecf20Sopenharmony_ci		.byte	29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
998c2ecf20Sopenharmony_ci		.byte	29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
1008c2ecf20Sopenharmony_ci		.byte	30,30,30,30,30,30,30,30,27,27,27,27,27,27,27,27
1018c2ecf20Sopenharmony_ci		.byte	30,30,30,30,30,30,30,30,27,27,27,27,27,27,27,27
1028c2ecf20Sopenharmony_ci		.byte	29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
1038c2ecf20Sopenharmony_ci		.byte	29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
1048c2ecf20Sopenharmony_ci		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
1058c2ecf20Sopenharmony_ci		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
1068c2ecf20Sopenharmony_ci		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
1078c2ecf20Sopenharmony_ci		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
1088c2ecf20Sopenharmony_ci		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
1098c2ecf20Sopenharmony_ci		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
1108c2ecf20Sopenharmony_ci		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
1118c2ecf20Sopenharmony_ci		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
1128c2ecf20Sopenharmony_ci#endif
1138c2ecf20Sopenharmony_ci#ifdef IOMD_IRQREQD
1148c2ecf20Sopenharmony_ciirq_prio_ld:	.byte	40,40,41,40,42,42,42,42,43,43,43,43,43,43,43,43
1158c2ecf20Sopenharmony_ci		.byte	44,40,41,40,42,42,42,42,43,43,43,43,43,43,43,43
1168c2ecf20Sopenharmony_ci		.byte	45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
1178c2ecf20Sopenharmony_ci		.byte	45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
1188c2ecf20Sopenharmony_ci		.byte	46,46,46,46,46,46,46,46,43,43,43,43,43,43,43,43
1198c2ecf20Sopenharmony_ci		.byte	46,46,46,46,46,46,46,46,43,43,43,43,43,43,43,43
1208c2ecf20Sopenharmony_ci		.byte	45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
1218c2ecf20Sopenharmony_ci		.byte	45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
1228c2ecf20Sopenharmony_ci		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
1238c2ecf20Sopenharmony_ci		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
1248c2ecf20Sopenharmony_ci		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
1258c2ecf20Sopenharmony_ci		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
1268c2ecf20Sopenharmony_ci		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
1278c2ecf20Sopenharmony_ci		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
1288c2ecf20Sopenharmony_ci		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
1298c2ecf20Sopenharmony_ci		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
1308c2ecf20Sopenharmony_ci#endif
1318c2ecf20Sopenharmony_ci
132