irq_of_parse_and_map的原理是当前实际的trigger和设备树的对比,然后分配中断号。我还以为直接从设备树获取呢?所以通过此代码我觉得设备树中我因为配置化为IRQ_TYPE_NONE。 另外一个问题,irq_free后怎么还有残留信息没有reset中断状态。导致再次加载读取当前type=3?暂时没有时间去分析源码。 四,小结 好吧,了解了这样...
sirq =irq_of_parse_and_map(np,0);if(sirq == NO_IRQ)gotoend;/* Initialize the CPM interrupt controller. */hwirq = (unsignedint)virq_to_hw(sirq); out_be32(&cpic_reg->cpic_cicr, (CICR_SCD_SCC4 | CICR_SCC_SCC3 | CICR_SCB_SCC2 | CICR_SCA_SCC1) | ((hwirq/2) <<13) |...
因此在设备驱动中创建一个映射一般是调用irq_of_parse_and_map()函数,该函数对irq_domain_associate()进行了多层的封装,以device_node作为参数输入尝试建立一个映射并返回virq,。 unsignedintirq_of_parse_and_map(structdevice_node *dev,intindex){structof_phandle_argsoirq;if(of_irq_parse_one(dev, index...
通常,一个普通设备的device tree node已经描述了足够的中断信息,在这种情况下,该设备的驱动在初始化的时候可以调用irq_of_parse_and_map这个接口函数进行该device node中和中断相关的内容(interrupts和interrupt-parent属性)进行分析,并建立映射关系,具体代码如下: unsigned int irq_of_parse_and_map(struct device_node...
对于一个使用Device tree的普通驱动程序(我们推荐这样做),基本上初始化需要调用irq_of_parse_and_map获取IRQ number,然后调用request_threaded_irq申请中断handler。 (4)irq_create_direct_mapping。这是给no map那种类型的interrupt controller使用的,这里不再赘述。
The irq_of_parse_and_map() returns 0 on failure, not a negative ERRNO. Fixes: f48e699 ("irqchip/aspeed-i2c-ic: Add I2C IRQ controller for Aspeed") Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Signed-off-by: Marc Zyngier <maz@kernel.org> Link: https://lore....
对于一个使用Device tree的普通驱动程序(我们推荐这样做),基本上初始化需要调用irq_of_parse_and_map获取IRQ number,然后调用request_threaded_irq申请中断handler。 (4)irq_create_direct_mapping。这是给no map那种类型的interrupt controller使用的,这里不再赘述。
yyyy_irq1 = irq_of_parse_and_map(np, 0); //map成linux kernel中的中断号 yyyy_irq2 = irq_of_parse_and_map(np, 1); //map成linux kernel中的中断号 ret = request_irq(yyyy_irq1, handler1,IRQF_TRIGGER_HIGH | IRQF_ONESHOT, "name1", NULL) //注册中断 ...
struct device_node *parent){structresourceres;structirq_domain*domain;intirq;if(!of_property_read_u32_array(node,"ralink,intc-registers", rt_intc_regs,6)) pr_info("intc: using register map from devicetree\n"); irq = irq_of_parse_and_map(node,0);if(!irq) ...
设备的驱动在初始化的时候可以调用 irq_of_parse_and_map 这个接口函数进行该 device node 中和中断相关的内容的解析,并建立映射关系 of_irq_parse_one 函数用于解析DTS文件中设备定义的属性,如"reg", “interrupt” irq_find_matching_fwspec 遍历 irq_domain_list 链表,找到 device node 匹配的irq_domain ...