關於device tree中的interrupts選項
隨著Linux的發展,dts技術是大勢所趨。裡面的interrupts = < >這個裡面的是1個數,有的是2個數,有的是3個數。這裡囉嗦兩句,筆記一下。
這個數目,是由這個屬性來定的。#interrupt-cells ,如果當前節點找不到,就是跟隨父節點的。至於含義,說明如下。
一個cell的情況:
當前interrupt 位於他的中斷控制器的索引,比如:
vic: [email protected] {
compatible = "arm,versatile-vic";
interrupt-controller;
#interrupt-cells = <1>;
reg = <0x10140000 0x1000>;
};
sic:
compatible = "arm,versatile-sic";
interrupt-controller;
#interrupt-cells = <1>;
reg = <0x10003000 0x1000>;
interrupt-parent = <&vic>;
interrupts = <31>; /* Cascaded to vic */
};
二個cell的情況
第一個值: 該中斷位於他的中斷控制器的索引;
第二個值:觸發的type
固定的取值如下:
1 = low-to-high edge triggered
2 = high-to-low edge triggered
4 = active high level-sensitive
8 = active low level-sensitive
三個cell的情況
第一個值:中斷號
第二個值:觸發的型別
第三個值:優先順序,0級是最高的,7級是最低的;其中0級的中斷系統當做 FIQ處理。