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