【问题标题】:kernel IRQ domain list内核 IRQ 域列表
【发布时间】:2017-12-07 16:05:13
【问题描述】:

我正在为运行 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 文件将 197 处的中断映射到 dwapb 管理器
interrupts = <0x00000000 0x000000a5 0x00000004>

【问题讨论】:

  • cat /sys/kernel/debug/irq_domain_mapping。确保您在内核配置中有 CONFIG_IRQ_DOMAIN_DEBUG=y
  • 我已经编辑了我的问题,中断在 DTS 文件中映射到 197,但在 linux 中设置为 99
  • 如果您收集所有 3 个文件(/proc/interrupts、irq_domain_mapping 和 DTS 以及有问题的代码)在带有 full 的某些 Internet 共享(类似 pastebin)上会更好内容。

标签: linux-kernel linux-device-driver irq soc


【解决方案1】:

有很多事情需要考虑:

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

【讨论】:

  • 感谢您的支持,我会检查第三个建议,因为其他的不符合我的需求
  • 查看我对 OP 的评论。
猜你喜欢
  • 2016-10-03
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
相关资源
最近更新 更多