0

我正在为运行 linux(新手级别)的 SoC 开发一个简单的 GPIO 驱动程序,我遇到了问题,因为 IRQ 编号与数据表中的编号不同。

我了解到有效的 IRQ 管理器可以创建 IRQ 域。但是,那

unsigned int irq_find_mapping(struct irq_domain *domain, irq_hw_number_t hwirq) 需要一个域结构。如何列出我的平台的可用域。谢谢你。

这是一些文件的内容

文件:irq_domain_mapping
name mapped linear-max direct-max devtree_node gpio-dwapb 29 29 0 /soc/gpio@ff709000/gpio-controller ... 99 0x00019 none
文件:/proc/interrupts
99 ... 25 edge gpiolib
但是 DTS 文件使用 dwapb 管理器映射 197 处的中断
interrupts = <0x00000000 0x000000a5 0x00000004>

4

1 回答 1

0

有很多事情需要考虑:

  1. /proc/interrupts 将提供您可以直接使用的 IRQ 编号。
  2. BSP 文档提到了驱动程序分配/使用的 IRQ。
  3. 查看内核代码 /arch/arm/your-platform 文件,您将看到分配的 IRQ 编号。
  4. 设备树文件是识别 IRQ 号的最佳选择。
于 2017-12-08T07:49:03.750 回答