xml地图|网站地图|网站标签 [设为首页] [加入收藏]

设备树的interrupt

interrups,三个脚刹踏板标记符列表,表示每二个搁浅输出时限信号;

 

http://www.cnblogs.com/targethero/p/5080499.html

 1 / {
 2     model = "Marvell Armada 375 family SoC";
 3     compatible = "marvell,armada375";
 4     soc {
 5         #address-cells = <2>;
 6         #size-cells = <1>;
 7         interrupt-parent = <&gic>;
 8 
 9         internal-regs {
10             compatible = "simple-bus";
11             #address-cells = <1>;
12             #size-cells = <1>;
13 
14             timer@c600 {
15                 compatible = "arm,cortex-a9-twd-timer";
16                 reg = <0xc600 0x20>;
17                 interrupts = <GIC_PPI 13 (IRQ_TYPE_EDGE_RISING | GIC_CPU_MASK_SIMPLE(2))>;
18                 clocks = <&coreclk 2>;
19             };
20 
21             gic: interrupt-controller@d000 {
22                 compatible = "arm,cortex-a9-gic";
23                 #interrupt-cells = <3>;
24                 #address-cells = <0>;
25                 interrupt-controller;
26                 reg = <0xd000 0x1000>,
27                       <0xc100 0x100>;
28             };
29         }
30 
31         pcie-controller {
32             compatible = "marvell,armada-370-pcie";
33             #address-cells = <3>;
34             #size-cells = <2>;
35 
36             pcie@1,0 {
37                 #address-cells = <3>;
38                 #size-cells = <2>;
39                 #interrupt-cells = <1>;
40                 interrupt-map-mask = <0 0 0 0>;
41                 interrupt-map = <0 0 0 0 &gic GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
42             };
43         };

 

interrupt-controller 一个空属性用来声称那个node接收中断,即叁个node是二个停顿调节器;

首先大家看来timer@c600以此装置节点下定义了interrupts属性,那说明该装置能够发生中断,不过那本性格下描述了几在那之中断大家是看不出来的(如若有经历了,大家能猜出只是三个行车制动器踏板,今后我们依据规则确认)。因为该节点未有interrupt-parent属性,那么认为设备树的父节点internal-regs正是搁浅父节点,在internal-regs父节点下如故尚未interrupt-parent属性,那么仍旧继续找设备树父节点,找到了soc,在该节点上面有interrupt-parent属性。该属性援引的价签为gic,搜索整个设施树,interrupt-controller@d000的竹签为gic。gic节点下有interrupt-controller属性,表达他是二个抛锚调控器。gic节点还应该有属性#interrupt-cells = <3>,表达在该调节器的interrupt domain下,中断源(interrupt specifier)用3个u32表示,大家再看timer@c600下的interrupts属性也着实由3个u32组成(能够参见GIC的正规,第八个u32表示暂停类型,第贰个是中断号,第多个是搁浅触发条件)。那个例子表明假如中断发生设备的中断源和间断调节器的中断源是逐个对应的,那么能够无需interrupt nexus节点及有关的性情来表示暂停映射。

 

#interrupt-cells,是搁浅调控器节点的个性,用来标志那个调整器必要几个单位做中断描述符,用来陈述子节点"interrupts"属性使用了父节点中的interrupt属性的现实哪些值;日常,若是父节点的该属性的值为3,则子节点的interrupts多个cell的多少个32bits的整数值分别为:<中断域 中断 触发情势>,如若父节点的该属性为2,则是<中断 触发方式> interrupt-parent,标志此设施节点属于哪三个行车制动器踏板调节器,若无安装那天本性,会活动依附父节点的;

 

 

interrupts

 

三个Computer体系中山大学量装置都以因个中断央求CPU服务的,所以设备节点就必要在钦定中断号。常用的天性;

再看pcie@1,0以此节点,有#interrupt-cells属性,然则尚未interrupt-controller属性,那注脚她是一个interrupt nexus节点。该节点的#interrupt-cells属性为1,说明该interrupt nexus节点管辖下的行车制动器踏板源用1个u32表示就足以了。在pcie@1,0节点上边未有子节点,且也未有节点的interrupt-parent属性指向pcie@1,0节点,所以从设备树上看不到该interrupt domain下的中断发生设备,可能的从头到尾的经过是这么些中断发生设备软件能够动态识别所以无需设备树描述。因为interrupt-map-mask属性是由脚刹踏板发生设备的位置和中断源(interrupt specifier)组成,且中断源用1个u32表示,那么能够揣度中断产生设备地址由3个u32组成。这里需求注意的是pcie@1,0节点的#address-cells属性为3,是说该总线下面的道具地址用3个u32表示,但并不表示中断发生设备的设备地址也决然3个u32表示,此处无法算得巧合,可是大家要精晓中断发生设备的地方由多少个u32组成是由该装置所在总线决定的,对于pcie总线也的确是3,不过其余总线也许存在任何种的气象。今后大家来剖判interrupt-map属性,前三个数字是搁浅设备地址,第四个数字是暂停设备的中断源。因为interrupt-map-mask是全0,那样无论与什么数字做与运算结果都以0,interrupt-map属性的前4个数字也都是0,那表明在pcie@1,0上边全体的中止映射到中断父节点的中止都以三个半途而返。接着是指向gic的<phandle>,因为gic节点下#address-cells属性为0,所未来面无需描述中断父设备的地址了,前边3个数字都是象征暂停父设备中断源的。一句话描述便是pcie@1,0下的有着中断都映射到gic,GIC_SPI类型的第29号中断,触发类型为高电平触发。那一个事例表明在中断树的最上面能够是interrupt nexus节点。

以上例子中断树的根是gic,gic上面有多个孩子,一个是搁浅设备timer@c600,二个是interrupt nexus节点pcie@1,0。gic直接管辖的interrupt domain用3个u32表示中断源,timer@c600在这么些interrupt domain下。pcie@1,0下定义了一个新的interrupt domain,在该interrupt domain下,中断源用1个u32表示,pcie@1,0用interrupt-map和interrupt-map-mask属性将上边全部设备的中止映射到一个gic下面的脚刹踏板里。

 

https://www.cnblogs.com/xiaojiang1025/p/6131381.html

本文由奥门金沙睹场www462net发布于汽车配件,转载请注明出处:设备树的interrupt

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。