Zynq的PL-PS中断在设备树中的描述

来源:互联网 发布:手机英语新闻软件 编辑:程序博客网 时间:2024/05/24 06:34

http://blog.csdn.net/klaus_wei/article/details/42915545


dma-channel@40400000 {

compatible = "xlnx,axi-dma-mm2s-channel";
interrupts = <0x0 29 0x4>;
xlnx,datawidth = <0x20>;
xlnx,device-id = <0x0>;
};

interrupts = <0x0 29 0x4>;
interrupts属性由3个u32组成(可以参考GIC的规范,第一个u32表示中断类型,第二个是中断号,第三个是中断触发条件)

第一个0是一个标志,用于指示中断是否是SPI(共享中断,shared peripheral interrupt)。非0值表示它是SPI。事实上在Zynq硬件上,这些中断都是共享的,这里是为了方便才写0, 软件上认为它不共享。
第二个数据表示中断号。
第三个数字是中断类型,可以有如下值:
0 - 内核不改变它,开机或uboot设置它是什么样就什么样。
1 - 上升沿触发
4 - 电平触发,高电平表示来中断。
不允许有其他值,下降沿触发和低电平中断目前不支持,因为硬件不支持那些模式。如果需要这样的触发方式,就得在硬件上加一个非门。

值得注意的是第三个数字在设备树里通常都是0, 所以Linux内核不去改变中断模式。这通常意味着高电平触发。这也让驱动依赖于bootloader里的设置。


Zynq手册中断一章交代的很清楚,中断的请求源(譬如PL)必须提供清中断的机制。如下图:


0 0
原创粉丝点击