在一个MFD
设备中。我想了解,我们如何到达irq base
. 是随机数吗?
请有人解释一下。
基本上,在尝试为该 IRQ 号注册 ISR 之前,首先需要将特定的 IRQ 号与实际的物理硬件中断相关联。这通常在 Linux 内核中使用irq_domain_add_linear()
.
过去,可以选择 IRQ 编号,以便它们将硬件 IRQ 线匹配到根中断控制器(即实际向 CPU 发出中断线的组件),现在这个数字只是一个数字。
irq_alloc_desc*()
和API 提供 irq 编号的irq_free_desc*()
分配,但它们不提供任何支持将控制器本地 IRQ (hwirq) 编号反向映射到 Linux IRQ 编号空间。Linux 内核的当前设计使用单个大数字空间,其中每个单独的 IRQ 源分配一个不同的数字。当只有一个中断控制器时这很简单,但在具有多个中断控制器的系统中,内核必须确保为每个中断控制器分配不重叠的 Linux IRQ 编号。
Linux-kernel Documentation/IRQ-domain.txt中的更多详细信息。