AT91SAM9M10-EKES評価ボードでGPIOIRQをプログラムしようとしています。IRQの登録に成功し、IRQが機能しています。ただし、一部の割り込みは失われます。26を送信していますが、22しか取得できません。
コード:
static irqreturn_t wiegand_interrupt(int irq, void *dev_id){
atomic_inc(&counter);
printk(KERN_WARNING "IRQ recieved, counting... %d\n",atomic_read(&counter));
return 0;
}
irq1 = gpio_to_irq(AT91_PIN_PA21);
if (irq1 < 0) {
err = irq1;
printk("Unable to get irq number for GPIO %d, error %d\n",AT91_PIN_PA21, err);
goto fail;
}
err = request_irq(irq1,wiegand_interrupt,0 ,"wiegand",NULL);
irq2 = gpio_to_irq(AT91_PIN_PA20);
if (irq2 < 0) {
err = irq2;
printk("Unable to get irq number for GPIO %d, error %d\n",AT91_PIN_PA21, err);
goto fail;
}
err = request_irq(irq2,wiegand_interrupt,0 ,"wiegand",NULL);
これはドライバー全体ではありませんが、これはIRQを処理する実際の部分です。誰かがコードに問題を見つけた場合、または私が4つの割り込みを失った理由を知る方法を提案できる場合は、返信してください。私はこれに何時間も立ち往生しています...:(
ありがとう。ラモン。