UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Newbie jennyzhong
Newbie
69 Views
Registered: ‎08-10-2019

zc706:request_irq error for custom IP's interrupt

BOARD: ZC706


My custom IP:PL dts as follows:
/ {
        amba_pl: amba_pl {
                #address-cells = <1>;
                #size-cells = <1>;
                compatible = "simple-bus";
                ranges ;
                reader_zhongrf_0: reader_zhongrf@43c00000 {
                        compatible = "xlnx,reader-zhongrf-1.0";
                        interrupt-names = "reader_int";
                        interrupt-parent = <&intc>;
                        interrupts = <0 29 4>;
                        reg = <0x43c00000 0x10000>;
                        xlnx,s00-axi-addr-width = <0x8>;
                        xlnx,s00-axi-data-width = <0x20>;
                };
        };
};


Then, I use request_irq to request interrupt resources, the UART print:dev request irq failed!

My probe function for linux driver:
// probe
static int reader_probe(struct platform_device *pdev)
{         
    int ret;
    struct resource *res;         printk("match ok!");
         res = platform_get_resource(pdev, IORESOURCE_MEM, 0);//
        reader_base = ioremap(res->start, res->end - res->start + 1);//获取到AXI-GPIO的地址空间,实现内存映射
        printk("reader_probe, found reader\n");
         major = register_chrdev(0, "myreader", &reader_fops);//注册设备
        cls = class_create(THIS_MODULE, "myreader");
         gpio_device = device_create(cls,NULL,MKDEV(major, 0),NULL,"reader");//mknod /dev/hello         
        if(IS_ERR(gpio_device)){
        
                class_destroy(cls);
                unregister_chrdev(major,"myreader");
                return -EBUSY;         
                
        }
    ret = request_irq(61, reader_irq_handler, IRQF_TRIGGER_HIGH|IRQF_SHARED, "reader_int", gpio_device);//注册一个外部中断
    if(ret)
    {
        printk("dev request irq failed!\n");
        return -1;
    }
    else
    {
            printk("dev request irq success!\n");
    }

         return 0; 
} 

 

How can I resolve the problem?

0 Kudos