linux zynq 中断控制器

一、zynq中断说明
uart@e0001000 {
 compatible = "xlnx,ps7-uart-1.00.a";
 reg = <0xe0001000 0x1000>;
 interrupts = <0x0 0x32 0x0>;
 interrupt-parent = <&gic>;
 clock = <50000000>;
};

第二个参数是中断号。传递的过程中会区分是否为spi中断,如果是spi中断则加16,非spi则加32 ,

所以在devicetree中的生成的中断号是实际中断号减去32 ;

二、实际使用过程

PL端配置中断控制IN9


这样我们在配置设备树需

pl-int{
       compatible = "zynq,pl-int";
       interrupt-parent = <&intc>;
       interrupts = <0 53 1>;
       status = "disabled";

    };

这里中断号为53,因为中断号和实际的中断号之间相差32,那么实际的中断号就是85。



三、驱动实现

static int Int_probe(struct platform_device *pdev)
{
    int ret;
    struct resource *r_irq;
    r_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);

    if (!r_irq) {
      printk(KERN_INFO"no IRQ found\n");
      return 0;
    }
    ret = request_irq(r_irq->start, input_handler, IRQ_TYPE_EDGE_RISING, "input_handle", NULL);
    if (ret) {
      printk(KERN_INFO"testmodule: Could not allocate interrupt %d\n",
         r_irq->start);
    }
    misc_register(&int_miscdev);   
    return ret;
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值