handle_level_irq);irq_set_chip_data(chip->irq_base + pmirq, chip);#ifdefCONFIG_ARMset_irq_flags(chip->irq_base + pmirq, IRQF_VALID);#elseirq_set_noprobe(chip->irq_base + pmirq);#endif} irq_set_irq_type(devirq, pdata->irq_trigger_flag); irq_set_handler_data(devirq, chip);...
intirq_set_chip(unsignedintirq,structirq_chip*chip){unsignedlongflags;structirq_desc*desc=irq_get_desc_lock(irq,&flags,0);---(1)desc->irq_data.chip=chip;irq_put_desc_unlock(desc,flags);---(2)irq_reserve_irq(irq);---(3)return0;} (1)获取irq number对应的中断描述符。这里用关闭中断...
Notes:根据中断号,irq_to_desc返回irq_desc;根据irq_desc,irq_desc_get_chip返回irq_chip,irq_desc_get_irq_data返回irq_data。 irq_set_chip将irq_chip绑定到对应irq;irq_set_irq_type设置对应irq触发类型;irq_set_chip_data设置中断控制器私有数据。 在引入了device tree、动态分配IRQ number以及irq domain这...
4、irq_set_chip_data 每个irq chip总有自己私有的数据,我们称之chip data。具体设定chip data的代码如下: int irq_set_chip_data(unsigned int irq, void *data) { unsigned long flags; struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0); desc->irq_data.chip_data = data; irq_put_...
1、底层irq chip相关的数据结构 中断描述符中应该会包括底层irq chip相关的数据结构,linux kernel中把这些数据组织在一起,形成struct irq_data,具体代码如下: struct irq_data { u32 mask;---TODO unsigned int irq;---IRQ number unsigned long hwirq...
1、底层irq chip相关的数据结构 中断描述符中应该会包括底层irq chip相关的数据结构,linux kernel中把这些数据组织在一起,形成struct irq_data,具体代码如下: struct irq_data { u32 mask;---TODO unsigned int irq;---IRQ number unsigned long hwirq...
irq_set_chip_data(irq, d->host_data);return0; } 其中handle_fasteoi_irq-->handle_irq_event-->handle_irq_event_percpu,下面看看handle_percpu_devid_irq和handle_irq_event_percpu。 有irq号找到对应的irq_desc,irq_desc->action->handler就是对应中断号的处理函数。
f->chip.name = name; f->chip.irq_ack = fpga_irq_mask; f->chip.irq_mask = fpga_irq_mask; f->chip.irq_unmask = fpga_irq_unmask; f->valid = valid;if(parent_irq !=-1) { irq_set_handler_data(parent_irq, f); irq_set_chained_handler(parent_irq, fpga_irq_handle); ...
irqd_clear (& desc -> irq_data , IRQD_WAKEUP_STATE ); } } irq_put_desc_busunlock ( desc , flags ); return ret ; } 1) 首先在set_irq_wake_real函数中通过irq_chip的irq_set_wake回调函数设置SoC相关wakeup寄存器使能中断唤醒功能,如果不使能的话,即使设备在那疯狂的产生中断signal,SoC可不会...
irq_set_chip_data() 详见自动生成的函数文档。 Note 由于文档构建流程所限,中文文档中并没有引入自动生成的函数文档,所以请读者直接 阅读源码注释。 电平触发型IRQ流处理程序 通用层提供了一套预定义的irq-flow方法: handle_level_irq() handle_edge_irq() handle_fasteoi_irq() handle_simple_irq...