(struct tdm_clock *)(TDM_CLKREG_OFFSET + (u8 *)priv->tdm_regs);/* irqs mapping for tdm err/dmac err, dmac done */priv->tdm_err_intr =irq_of_parse_and_map(ofdev->node,0);if(priv->tdm_err_intr == NO_IRQ) { ret = -EINVAL;gotoerr_tdmerr_irqmap; } priv->dmac_done_intr...
步骤5: 修改驱动bug,request_irq的第三个参数,我传入的是IRQF_TRIGGER_FALLING|IRQF_TRIGGER_RISING。所以both是我驱动中添加的,改成仅上升沿后。测试通过,多次反复加载卸载都正常。 三,思考 irq_of_parse_and_map的原理是当前实际的trigger和设备树的对比,然后分配中断号。我还以为直接从设备树获取呢?所以通过此代...
通常,一个普通设备的device tree node已经描述了足够的中断信息,在这种情况下,该设备的驱动在初始化的时候可以调用irq_of_parse_and_map这个接口函数进行该device node中和中断相关的内容(interrupts和interrupt-parent属性)进行分析,并建立映射关系,具体代码如下: unsigned int irq_of_parse_and_map(struct device_node...
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....
eirq =irq_of_parse_and_map(np,0);if(eirq == NO_IRQ)gotoend;if(setup_irq(eirq, &cpm_error_irqaction)) printk(KERN_ERR"Could not allocate CPM error IRQ!"); setbits32(&cpic_reg->cpic_cicr, CICR_IEN); end: of_node_put(np);returnsirq; ...
if (of_irq_parse_one(dev, index, &oirq))---分析device node中的interrupt相关属性 return 0; return irq_create_of_mapping(&oirq);---创建映射,并返回对应的IRQ number } 对于一个使用Device tree的普通驱动程序(我们推荐这样做),基本上初始化需要调用irq_of_parse_and_map获取IRQ number,然后调用requ...
if (of_irq_parse_one(dev, index, &oirq))---分析device node中的interrupt相关属性 return 0; return irq_create_of_mapping(&oirq);---创建映射,并返回对应的IRQ number } 对于一个使用Device tree的普通驱动程序(我们推荐这样做),基本上初始化需要调用irq_of_parse_and_map获取IRQ number,然后调用requ...
if (of_irq_parse_one(dev, index, &oirq))---分析device node中的interrupt相关属性 return 0; return irq_create_of_mapping(&oirq);---创建映射,并返回对应的IRQ number } 对于一个使用Device tree的普通驱动程序(我们推荐这样做),基本上初始化需要调用irq_of_parse_and_map获取IRQ number,然后调用requ...
if (of_irq_parse_one(dev, index, &oirq))---分析device node中的interrupt相关属性 return 0; return irq_create_of_mapping(&oirq);---创建映射,并返回对应的IRQ number } 对于一个使用Device tree的普通驱动程序(我们推荐这样做),基本上初始化需要调用irq_of_parse_and_map获取IRQ number,然后调用requ...