这几天看linux的中断,有很多不明白,向大神们请教。
request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)
对于中断申请函数中的第一个参数,irq,自己原本理解的是硬件手册上的中断号,后来发现不对,应该是linux内核中的IRQ号。
例如对于三星exynos4412芯片中的GPX1_1和GPX1_2对应的硬件中断号为25,26
在使用request_irq时第一个参数需要有个转换的过程,如下
request_irq(IRQ_EINT(9),key_handler,IRQF_TRIGGER_FALLING,"KEY1",NULL);
完成对中断的申请。
现在不理解的是,在设备树形式下,如何来完成的,我是参考的这篇博客上http://blog.csdn.net/zqixiao_09/article/details/50916212(设备树)和http://blog.csdn.net/zqixiao_09/article/details/50908125(中断驱动)
设备树下的中断如下
驱动获取中断如下
代码的64 65行获取设备资源,然后67 68行拿出了资源的res->start就能直接赋值给irq参数了?platform_get_resource已经把硬件中断号转换为linux的中断号了吗?我理解的不知道对不对,如果是的话,这中间是个什么过程呢?