增加 interrupts 内容.

Signed-off-by: rick.chan <chenyang@autoai.com>
This commit is contained in:
rick.chan 2020-06-05 17:42:00 +08:00
parent f10258d407
commit a18a99cc53
1 changed files with 39 additions and 0 deletions

View File

@ -70,6 +70,45 @@ reg = <address1 size1 [address2 size2] [address3 size3]...>;
* interrupt-parent设备节点通过这个关键字指定其依附的中断控制器 phandle如果没有指定则继承父节点的 interrupt-parent 配置;
* interrupt设备节点里使用一般包含中断号、触发方法等。具体有多少个 cell#interrupt-cells 决定,每个 cell 的具体含义,一般由驱动决定。
多个中断可以用 interrupts 描述。interrupts 属性后面,会有不同的参数,有时是两个,有时是三个。
两个的时候一般是这样出现:
```dts
interrupt-parent = <&gpio2>;
interrupts = <29 0>;
```
一般这样表明中断控制器是GPIO2然后使用它的29号中断。(这里的29号就是指29号引脚)0是指触发的方式(上升沿、下降沿等)。
三个的时候一般是这样出现:
```dts
interrupts = <0 37 1>;
interrupts = <GIC_SPI 37 1>;
interrupts = <GIC_PPI 37 1>;
```
第一个参数表示是 IPI、PPI、SPI、SGI 其中的一个。第二个参数表示:是第一个参数里面的第几个。第三个参数表示:中断触发的类型(上升沿、下降沿等)。
IPI、PPI、SPI、SGI 是 ARM 规范的中断,含义如下:
* IPIinter-processer interrupt 中断号015
* PPIper processor interrupts 中断号1631
* SPIshared processor interrupts 中断号 32 32+224
* SGIsoftware generated interrupts (SGI).
中断类型的值如下:
```cpp
#define IRQ_TYPE_NONE 0
#define IRQ_TYPE_EDGE_RISING 1
#define IRQ_TYPE_EDGE_FALLING 2
#define IRQ_TYPE_EDGE_BOTH (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)
#define IRQ_TYPE_LEVEL_HIGH 4
#define IRQ_TYPE_LEVEL_LOW 8
```
### DTS 示例
一个简单的 dts 文件示例如下: