系统处理 IRQ_EINT0 IRQ_EINT11 的过程 主要分析系统处理 IRQ_EINT0 IRQ_EINT11 的过程。
2440处理器的中断组织成两层:主中断 和 次中断,一共可以处理60个中断源。
主中断 和 次中断 经过中断构架的抽象之后,编写驱动程序时,我们不用考虑这两层中断,直接使用
request_irq 注册 60个中断源的某个,就可以直接使用中断了。
err = request_irq(button_irqs[i].irq, buttons_interrupt, NULL, button_irqs[i].name, (void *)&button_irqs[i]); set_irq_type(button_irqs[i].irq, IRQT_BOTHEDGE); 像上面这样使用中断。 下面是主中断0~31共32个中断源(32bit) #define IRQ_EINT0 S3C2410_IRQ(0) #define IRQ_EINT1 S3C2410_IRQ(1) #define IRQ_EINT2 S3C2410_IRQ(2) #define IRQ_EINT3 S3C2410_IRQ(3) #define IRQ_EINT4t7 S3C2410_IRQ(4) #define IRQ_EINT8t23 S3C2410_IRQ(5) #define IRQ_RESERVED6 S3C2410_IRQ(6) #define IRQ_CAM S3C2410_IRQ(6) #define IRQ_BATT_FLT S3C2410_IRQ(7) #define IRQ_TICK S3C2410_IRQ(8) #define IRQ_WDT S3C2410_IRQ(9) #define IRQ_TIMER0 S3C2410_IRQ(10) #define IRQ_TIMER1 S3C2410_IRQ(11) #define IRQ_TIMER2 S3C2410_IRQ(12) #define IRQ_TIMER3 S3C2410_IRQ(13) #define IRQ_TIMER4 S3C2410_IRQ(14) #define IRQ_UART2 S3C2410_IRQ(15) #define IRQ_LCD S3C2410_IRQ(16) #define IRQ_DMA0 S3C2410_IRQ(17) #define IRQ_DMA1 S3C2410_IRQ(18) #define IRQ_DMA2 S3C2410_IRQ(19) #define IRQ_DMA3 S3C2410_IRQ(20) #define IRQ_SDI S3C2410_IRQ(21) #define IRQ_SPI0 S3C2410_IRQ(22) #define IRQ_UART1 S3C2410_IRQ(23) #define IRQ_RESERVED24 S3C2410_IRQ(24) #define IRQ_NFCON S3C2410_IRQ(24) #define IRQ_USBD S3C2410_IRQ(25) #define IRQ_USBH S3C2410_IRQ(26) #define IRQ_IIC