如何定义中断的设备树结点?

应用程序提取驱动数据时,只要不使用轮询的方式,就需要驱动提供同步手段(比如发送信号或者使用工作队列),而同步信号往往是在中断中发出的。

在设备树中,中断和外设资源一样,也可以通过定义节点的方式来描述使用的硬件资源,实例如下:

sii902x: sii902x@39 {
                 compatible = "SiI,sii902x";
                 pinctrl-names = "default";
                 reset-names="sii902x";
                 pinctrl-0 = <&pinctrl_sii902x>;
                 resets = <&sii902x_reset>;
                 interrupt-parent = <&gpio1>;
                 interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
                 mode_str ="1280x720M@60";
                 bits-per-pixel = <16>;
                 reg = <0x39>;
                 status = "okay";    
         };

其中interrupt-parent和interrupts定义了中断信息。interrupt-parent定义了使用哪一个中断控制器。而interrupts则定义了使用这个控制器中的哪一个中断以及什么特征会触发中断。

上述节点的定义可以解析为,使用gpio1控制器中的第18号中断,下降沿触发。

至于为什么要使用这种结构定义中断信息,还要从中断的结构说起。

对于IMX6ULL这种芯片,中断控制器分为几个级别,首先是是GIC,也就是通用控制器,这个控制器发出的中断有三种类型,SPI、PPI、SGI。所以他的下一级需要使用三个属性来定义。IMX6uLL使用GPC定义了一级虚拟中断控制器,这一级控制器使用的是GIC第89号SPI中断。而gpio1中断则是gpc的自中断。

intc: interrupt-controller@00a01000 {
        compatible = "arm,cortex-a9-gic";
        #interrupt-cells = <3>;
        interrupt-controller;
        reg = <0x00a01000 0x1000>,
              <0x00a00100 0x100>;
        interrupt-parent = <&intc>;
    };
gpc: gpc@020dc000 {
                compatible = "fsl,imx6sll-gpc", "fsl,imx6q-gpc";
                reg = <0x020dc000 0x4000>;
                interrupt-controller;
                #interrupt-cells = <3>;
                interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-parent = <&intc>;
                fsl,mf-mix-wakeup-irq = <0x7c00000 0x7d00 0x0 0x1400640>;
            };
gpio1: gpio@0209c000 {
                compatible = "fsl,imx6sll-gpio", "fsl,imx35-gpio";
                reg = <0x0209c000 0x4000>;
                interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
                gpio-controller;
                #gpio-cells = <2>;
                interrupt-controller;
                #interrupt-cells = <2>;
            };

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式螺丝钉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值