作者:付汉杰,hankf@xilinx.com,文章转载自:赛灵思中文社区论坛
Zynq-7000和MPSoC有很多MIO管脚。如果外设有中断,也可以通过MIO驱动。
GPIO中断控制器
按下列模式,在GPIO的设备树里声明为中断控制器
&gpio0 { #interrupt-cells = <2>; interrupt-controller; };
外设使用GPIO中断控制器
外设的设备树里,添加下列行,声明gpio0为自己的中断控制器,并声明对应的MIO引脚和中断内心。
touchscreen@0 { interrupt-parent = <&gpio0>; interrupts = <52 2>; /* MIO 52, falling edge */ };
检查结果
单板启动后,可以检查启动信息和中断信息。
# dmesg | grep ads ads7846 spi32766.0: touchscreen, irq 148 # cat /proc/interrupts CPU0 CPU1 148: 21 1 zynq-gpio 52 ads7846
文档
GPIO的中断说明,在Linux的文件Documentation/devicetree/bindings/gpio/gpio-zynq.txt里。
中断的相关信息如下:
- interrupt-controller : Marks the device node as an interrupt controller. - #interrupt-cells : Should be 2. The first cell is the GPIO number. The second cell bits[3:0] is used to specify trigger type and level flags: 1 = low-to-high edge triggered. 2 = high-to-low edge triggered. 4 = active high level-sensitive. 8 = active low level-sensitive.
参考文档:https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842482/Device+Tr...