irq_data 这个内嵌结构在2.6.37版本引入,之前的内核版本的做法是直接把这个结构中的字段直接放置在irq_desc结构体中,然后在调用硬件封装层的chip->xxx()回调中传入IRQ编号作为参数,但是底层的函数经常需要访问->handler_data,->chip_data,->msi_desc等字段,这需要利用irq_to_desc(irq)来获得irq_desc结构的指针,...
第一个参数是要中断处理函数要相应的中断号。第二个参数是一个指向void的指针,也就是个通用指针,需要与request_irq函数的dev参数保持一致。用于区分共享中断的不同设备,dev也可以指向设备数据结构。中断处理函数的返回值为irqreturn_t类型,irqreturn_t类型定义如下所示: ...
* IRQ_TYPE_EDGE_RISING - rising edge triggered * IRQ_TYPE_EDGE_FALLING - falling edge triggered * IRQ_TYPE_EDGE_BOTH - rising and falling edge triggered * IRQ_TYPE_LEVEL_HIGH - high level triggered * IRQ_TYPE_LEVEL_LOW - low level triggered * IRQ_TYPE_LEVEL_MASK - Mask to filter out...
irq_set_chip_data(irq, *data) / irq_get_chip_data(irq)通过irq编号,设置、获取irq_desc.irq_data.chip_data字段,该字段是每个中断控制器的私有数据,通常用于硬件封装层。 irq_set_irq_type(irq, type)用于设置中断的电气类型,可选的类型有: IRQ_TYPE_EDGE_RISING IRQ_TYPE_EDGE_FALLING IRQ_TYPE_EDGE...
interrupts = <18 IRQ_TYPE_EDGE_BOTH>; //GPIO1组的18号IO,上升和下降沿触发 status = "okay"; }; 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 设备树编写完成后使用 “make dtbs”命令重新编译设备树,使用新的设备树文件启动 linux 系统 ...
request_irq函数用于申请中断,但是可能会导致睡眠,因此不能在中断上下文或者其他禁止睡眠的代码段中使用request_irq函数。request_irq函数会使能中断,所以不需要我们手动去使能中断。 函数原型: int request_irq(unsigned int irq, irq_handler_t handler,
IRQ_TYPE_EDGE_BOTH:双边缘触发,定义在\include\linux\irq.h中request_irq(IRQ_EINT0,irq_handler,IRQ_TYPE_EDGE_BOTH,dev_name,major);return0;}staticintfirst_release(structinode*inode,structfile*file){printk("release\n");//void free_irq(unsigned int irq, void *dev_id)free_irq(IRQ_EINT0,...
这些方法包括硬中断(hardirq)、软中断(softirq)、微任务(tasklet)、中断线程(threaded irq)、工作队列(workqueue)。其实硬中断严格来说不算是一种方法,因为它是中断处理的必经之路,它就是中断向量表里面设置的处理函数。为了和软中断进行区分,才把硬中断叫做硬中断。硬中断和软中断都是属于中断执行场景,而中断线程和...
int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *), unsigned long flags, const char *dev_name, void *dev_id); void free_irq(unsigned int irq, void *dev_id); The value returned from request_irq to the requesting function is either 0 to indicate suc...
dmaengine: tegra: Use platform_get_irq() to get IRQ resource v5.19 DMA 54a85e09f44c memory: tegra: Add MC error logging on Tegra186 onward v5.19 memory a7cffa11fa92 memory: tegra: Add memory controller channels support v5.19 memory cc3d696c01d8 memory: tegra: Add APE memory clients ...