1*10465441SEvalZero /* 2*10465441SEvalZero * File : x1000_intc.h 3*10465441SEvalZero * This file is part of RT-Thread RTOS 4*10465441SEvalZero * COPYRIGHT (C) 2008 - 2012, RT-Thread Development Team 5*10465441SEvalZero * 6*10465441SEvalZero * This program is free software; you can redistribute it and/or modify 7*10465441SEvalZero * it under the terms of the GNU General Public License as published by 8*10465441SEvalZero * the Free Software Foundation; either version 2 of the License, or 9*10465441SEvalZero * (at your option) any later version. 10*10465441SEvalZero * 11*10465441SEvalZero * This program is distributed in the hope that it will be useful, 12*10465441SEvalZero * but WITHOUT ANY WARRANTY; without even the implied warranty of 13*10465441SEvalZero * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*10465441SEvalZero * GNU General Public License for more details. 15*10465441SEvalZero * 16*10465441SEvalZero * You should have received a copy of the GNU General Public License along 17*10465441SEvalZero * with this program; if not, write to the Free Software Foundation, Inc., 18*10465441SEvalZero * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19*10465441SEvalZero * 20*10465441SEvalZero * Change Logs: 21*10465441SEvalZero * Date Author Notes 22*10465441SEvalZero * 2017-02-03 Urey the first version 23*10465441SEvalZero */ 24*10465441SEvalZero 25*10465441SEvalZero #ifndef _X1000_INTC_H_ 26*10465441SEvalZero #define _X1000_INTC_H_ 27*10465441SEvalZero 28*10465441SEvalZero 29*10465441SEvalZero /* 30*10465441SEvalZero * INTC (Interrupt Controller) 31*10465441SEvalZero */ 32*10465441SEvalZero #define INTC_ISR(n) (INTC_BASE + 0x00 + (n) * 0x20) 33*10465441SEvalZero #define INTC_IMR(n) (INTC_BASE + 0x04 + (n) * 0x20) 34*10465441SEvalZero #define INTC_IMSR(n) (INTC_BASE + 0x08 + (n) * 0x20) 35*10465441SEvalZero #define INTC_IMCR(n) (INTC_BASE + 0x0c + (n) * 0x20) 36*10465441SEvalZero #define INTC_IPR(n) (INTC_BASE + 0x10 + (n) * 0x20) 37*10465441SEvalZero 38*10465441SEvalZero #define REG_INTC_ISR(n) REG32(INTC_ISR((n))) 39*10465441SEvalZero #define REG_INTC_IMR(n) REG32(INTC_IMR((n))) 40*10465441SEvalZero #define REG_INTC_IMSR(n) REG32(INTC_IMSR((n))) 41*10465441SEvalZero #define REG_INTC_IMCR(n) REG32(INTC_IMCR((n))) 42*10465441SEvalZero #define REG_INTC_IPR(n) REG32(INTC_IPR((n))) 43*10465441SEvalZero 44*10465441SEvalZero // interrupt controller interrupts 45*10465441SEvalZero #define IRQ_DMIC 0 46*10465441SEvalZero #define IRQ_AIC0 1 47*10465441SEvalZero #define IRQ_RESERVED2 2 48*10465441SEvalZero #define IRQ_RESERVED3 3 49*10465441SEvalZero #define IRQ_RESERVED4 4 50*10465441SEvalZero #define IRQ_RESERVED5 5 51*10465441SEvalZero #define IRQ_RESERVED6 6 52*10465441SEvalZero #define IRQ_SFC 7 53*10465441SEvalZero #define IRQ_SSI0 8 54*10465441SEvalZero #define IRQ_RESERVED9 9 55*10465441SEvalZero #define IRQ_PDMA 10 56*10465441SEvalZero #define IRQ_PDMAD 11 57*10465441SEvalZero #define IRQ_RESERVED12 12 58*10465441SEvalZero #define IRQ_RESERVED13 13 59*10465441SEvalZero #define IRQ_GPIO3 14 60*10465441SEvalZero #define IRQ_GPIO2 15 61*10465441SEvalZero #define IRQ_GPIO1 16 62*10465441SEvalZero #define IRQ_GPIO0 17 63*10465441SEvalZero #define IRQ_RESERVED18 18 64*10465441SEvalZero #define IRQ_RESERVED19 19 65*10465441SEvalZero #define IRQ_RESERVED20 20 66*10465441SEvalZero #define IRQ_OTG 21 67*10465441SEvalZero #define IRQ_RESERVED22 22 68*10465441SEvalZero #define IRQ_AES 23 69*10465441SEvalZero #define IRQ_RESERVED24 24 70*10465441SEvalZero #define IRQ_TCU2 25 71*10465441SEvalZero #define IRQ_TCU1 26 72*10465441SEvalZero #define IRQ_TCU0 27 73*10465441SEvalZero #define IRQ_RESERVED28 28 74*10465441SEvalZero #define IRQ_RESERVED29 29 75*10465441SEvalZero #define IRQ_CIM 30 76*10465441SEvalZero #define IRQ_LCD 31 77*10465441SEvalZero #define IRQ_RTC 32 78*10465441SEvalZero #define IRQ_RESERVED33 33 79*10465441SEvalZero #define IRQ_RESERVED34 34 80*10465441SEvalZero #define IRQ_RESERVED35 35 81*10465441SEvalZero #define IRQ_MSC1 36 82*10465441SEvalZero #define IRQ_MSC0 37 83*10465441SEvalZero #define IRQ_SCC 38 84*10465441SEvalZero #define IRQ_RESERVED39 39 85*10465441SEvalZero #define IRQ_PCM0 40 86*10465441SEvalZero #define IRQ_RESERVED41 41 87*10465441SEvalZero #define IRQ_RESERVED42 42 88*10465441SEvalZero #define IRQ_RESERVED43 43 89*10465441SEvalZero #define IRQ_HARB2 44 90*10465441SEvalZero #define IRQ_RESERVED45 45 91*10465441SEvalZero #define IRQ_HARB0 46 92*10465441SEvalZero #define IRQ_CPM 47 93*10465441SEvalZero #define IRQ_RESERVED48 48 94*10465441SEvalZero #define IRQ_UART2 49 95*10465441SEvalZero #define IRQ_UART1 50 96*10465441SEvalZero #define IRQ_UART0 51 97*10465441SEvalZero #define IRQ_DDR 52 98*10465441SEvalZero #define IRQ_RESERVED53 53 99*10465441SEvalZero #define IRQ_EFUSE 54 100*10465441SEvalZero #define IRQ_MAC 55 101*10465441SEvalZero #define IRQ_RESERVED56 56 102*10465441SEvalZero #define IRQ_RESERVED57 57 103*10465441SEvalZero #define IRQ_I2C2 58 104*10465441SEvalZero #define IRQ_I2C1 59 105*10465441SEvalZero #define IRQ_I2C0 60 106*10465441SEvalZero #define IRQ_PDMAM 61 107*10465441SEvalZero #define IRQ_JPEG 62 108*10465441SEvalZero #define IRQ_RESERVED63 63 109*10465441SEvalZero 110*10465441SEvalZero #define IRQ_INTC_MAX 63 111*10465441SEvalZero 112*10465441SEvalZero #ifndef __ASSEMBLY__ 113*10465441SEvalZero 114*10465441SEvalZero #define __intc_unmask_irq(n) (REG_INTC_IMCR((n)/32) = (1 << ((n)%32))) 115*10465441SEvalZero #define __intc_mask_irq(n) (REG_INTC_IMSR((n)/32) = (1 << ((n)%32))) 116*10465441SEvalZero #define __intc_ack_irq(n) (REG_INTC_IPR((n)/32) = (1 << ((n)%32))) /* A dummy ack, as the Pending Register is Read Only. Should we remove __intc_ack_irq() */ 117*10465441SEvalZero 118*10465441SEvalZero #endif /* !__ASSEMBLY__ */ 119*10465441SEvalZero 120*10465441SEvalZero #endif /* _X1000_INTC_H_ */ 121