参考:
Releases · devicetree-org/devicetree-specification · GitHub
devicetree-specification-v0.4-rc1.pdf (但里面标注是:Devicetree Specification Release v0.3-40-g7e1cc17)
2.4 中断和中断映射 Interrupts and Interrupt Mapping
DTSpec采用Open Firmware Recommended Practice:Interrupt Mapping, Version 0.9 中规定的表示中断的中断树模型。在设备树中存在一个逻辑中断树,它代表了平台硬件中中断的层次和路径。虽然一般被称为中断树,但在技术上是一个有向无环图(directed acyclic graph)。
中断源到中断控制器的物理线路在devicetree中用interrupt-parent属性表示。代表中断产生设备的节点包含一个interrupt-parent属性,它有一个phandle值,指向的是该设备的中断被接受的设备,通常是一个中断控制器。如果一个产生中断的设备没有interrupt-parent属性,那么它的interrupt-parent就被认为是它的devicetree的父节点。
每个产生中断的设备都包含一个interrupts属性,其值描述了该设备的一个或多个中断源。每个中断源用一个名为interrupt specifier的信息结构所表示。interrupt specifier的格式和含义是特定于中断域的,也就是说,它依赖于其中断域根部节点上的属性。中断域的根节点使用#interrupt-cells属性来定义编码interrupt-specifer所需的<u32>值的数量。例如,对于Open PIC中断控制器来说,一个interrupt-specifer需要两个32位的值,由中断号和中断的电平/感应信息组成。
中断域是解释interrupt specifier的上下文。域的根是(1)一个中断控制器(interrupt controller)或(2)一个中断关系(interrupt nexus)。
1. 中断控制器是一个物理设备,需要一个驱动程序来处理通过它路由的中断。它也可以级联到另一个中断域中。中断控制器是由devicetree中该节点上的显示的interrupt-controller属性所指定。
2. 中断关系定义了一个中断域和另一个中断域之间的转换。这种转换是基于特定于中断域和总线的信息。这种域之间的转换是通过interrupt-map属性进行的。例如,一个PCI控制器设备节点可以是一个interrupt nexus,它定义了从PCI中断命名空间(INTA、INTB等)到具有中断请求(IRQ)编号的中断控制器的转换。
当对中断树的遍历到达一个没有中断属性的中断控制器节点,从而没有明确的中断父节点时,中断树的根就确定了。
请看图2.3,这是一个带有中断父级关系的设备树的图形表示例子。它既显示了设备树的自然结构,也显示了每个节点在逻辑中断树中的位置。

图2.3 中断树举例
在图2.3的例子中:
- open-pic中断控制器是整个中断树的根节点
- 这个中断树有三个子设备,它们的中断会直接传递给open-pic
&

本文详细解析了devicetree规范中的中断管理和中断树模型,介绍了中断源、中断控制器、中断关系和相关属性的使用。实例展示了中断控制器如OpenPIC和PCI映射的配置方法,以及如何在设备树中表示中断路径。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



