关于device tree中的interrupts选项

时间:2021-09-09 11:05:55

http://blog.****.net/jiang__jiang/article/details/52064715

随着Linux的发展,dts技术是大势所趋。里面的interrupts = <   >这个里面的是1个数,有的是2个数,有的是3个数。这里啰嗦两句,笔记一下。

这个数目,是由这个属性来定的。#interrupt-cells ,如果当前节点找不到,就是跟随父节点的。至于含义,说明如下。

一个cell的情况:

当前interrupt 位于他的中断控制器的索引,比如:

vic: intc@10140000 {
        compatible = "arm,versatile-vic";
        interrupt-controller;
        #interrupt-cells = <1>;
        reg = <0x10140000 0x1000>;
    };

sic: intc@10003000 {
        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处理。