就是在buttons的驱动open函数里面添加的,如下在request_irq函数下面添加的
int s3c24xx_buttons_open(struct inode *inode, struct file *file)
{
int i;
int err = 0;
for (i = 0; i < sizeof(button_irqs)/sizeof(button_irqs[0]); i++) {
if (button_irqs.irq < 0) {
continue;
}
s3c2410_gpio_cfgpin(button_irqs.pin, S3C2410_GPIO_IRQ);
err = request_irq(button_irqs.irq, buttons_interrupt, IRQ_TYPE_EDGE_BOTH,
button_irqs.name, (void *)&button_irqs);
printk("err: %d\n",err);
if (err)
break;
}
if (err) {
i--;
for (; i >= 0; i--) {
if (button_irqs.irq < 0) {
continue;
}
disable_irq(button_irqs.irq);
free_irq(button_irqs.irq, (void *)&button_irqs);
}
return -EBUSY;
}
ev_press = 1;
return 0;
}