本文共 1393 字,大约阅读时间需要 4 分钟。
使用 devm_request_irq 是基于设备树的正式推荐方法。对于传统不支持设备树的内核开发者,可以通过查找 Fayette 的 "irqs.h" 文件获取平台具体中的中断号。支持设备树的内核中,中断号不直接暴露,需通过设备树配置文件获取并映射中断号。
request_irq 函数用于申请中断号,注册中断处理函数(handler),并处理相关配置参数。该函数必须与 free_irq 配合使用,确保正确释放占用中的中断号。
interrupt 节点给出的值为 57,需加上 32(共享中断)或 16(私有中断)。static int i2c_probe(struct platform_device *pdev) { struct device_node *node; int irq; node = pdev->node; irq = platform_get_irq(pdev, 0); if (irq < 0) { dev_err(&pdev->dev, "failed to get IRQ number"); return 0; } if (request_irq(irq, i2c0_int_irq_handler, IRQF_SHARED, "i2c0-test", &pdev->dev)) { printk(KERN_DEBUG "request irq failed\n"); return 0; } return 0;} 通过遵循上述使用规范和注意事项,可以顺利申请和管理硬中断号,确保设备正常运行。
转载地址:http://umvjz.baihongyu.com/