ret = request_irq(chip->irq, xxx_intr_handler,
IRQF_TRIGGER_FALLING | IRQF_NO_THREAD |
IRQF_NO_SUSPEND, name, chip);
上面是中断初始化中调用系统中断请求函数,查看函数原型:
/*
static inline int __must_check
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)
{
return request_threaded_irq(irq, handler, NULL, flags, name, dev);
}
*/
其中,中断触发标志中需要根据硬件对应设计选择正确触发类型。
基本类型:
IRQF_TRIGGER_HIGH
IRQF_TRIGGER_LOW
IRQF_TRIGGER_FALLING
IRQF_TRIGGER_RISING
对应基本触发类型:高电平触发,低电平触发,下降沿触发,上升沿触发。
除此之外,看到其他驱动还有另外一种禁止打断型中断:ONESHOT类型
ret = devm_request_threaded_irq(&pdev->dev, alm_irq, NULL,
da9055_rtc_alm_irq,
IRQF_TRIGGER_HIGH | IRQ