Tiny4412_buttons.c (linux-3.5\drivers\char)文件中 tiny4412_buttons_open()中加一条printk打印语句,如下红色字体所示,显示申请的中断号
static int tiny4412_buttons_open(struct inode *inode, struct file *file)
{
int irq;
int i;
int err = 0;
for (i = 0; i < ARRAY_SIZE(buttons); i++) {
if (!buttons.gpio)
continue;
setup_timer(&buttons.timer, tiny4412_buttons_timer,
(unsigned long)&buttons);
irq = gpio_to_irq(buttons.gpio);
printk(KERN_ALERT "buttons[%d].gpio=%d interruptible is:%d \n",i,buttons.gpio,irq);
err = request_irq(irq, button_interrupt, IRQ_TYPE_EDGE_BOTH,
buttons.name, (void *)&buttons);
if (err)
break;
}
if (err) {
i--;
for (; i >= 0; i--) {
if (!buttons.gpio)
continue;
irq = gpio_to_irq(buttons.gpio);
disable_irq(irq);
free_irq(irq, (void *)&buttons);
del_timer_sync(&buttons.timer);
}
return -EBUSY;
}
ev_press = 1;
return 0;
}
打开按键设备时显示申请的中断号如下:
442: 0 exynos-eint KEY0
443: 0 exynos-eint KEY1
444: 1 exynos-eint KEY2
445: 1 exynos-eint KEY3
tiny4412中断有160个,但现在申请的中断号是442-445,这些中断号是怎么产生的呢?原理是什么呢?