yv9200 发表于 2015-11-30 13:26

GPIO request_irq()函数的问题

用的是2.6.33.7内核想用gpio引脚作为中断线
gpio初始化用的是系统库里的资源
printk("gpio_to_irq=%x, %x\n", gpio_to_irq(pdata->gpios), pdata->gpios);
216               ret = request_irq(gpio_to_irq(pdata->gpios), of_interrupt_irq, IRQF_TRIGGER_FALLING|
    IRQF_SHARED, "kt-cpld", pdata);
217               if (ret != 0)
218               {
219                         if(ret == -EINVAL)
220                                  printk("INVAL\n");
221                         else if(ret == -EBUSY)
222                         printk("BUSY\n");
223                        // dev_err(pdata->pdev, "failed to install irq 75\n");*/
224                         return ret;
最后打印的是INVAL,我想知道是这个函数有问题,还是我调用的有问题?
printk 打印结果:gpio_to_irq=fffffffa, e5

senioryzc 发表于 2015-12-02 09:12

gpio_to_irq 这个函数,需要芯片厂商实现
struct gpio_chip {
        int                        (*to_irq)(struct gpio_chip *chip,
                                                unsigned offset);
}
我增加用过三星的s5pv210开发板,里面压根就没实现。

Vsky_man 发表于 2015-12-05 15:37

可以看看内核文件里面有这个接口的实现没

yv9200 发表于 2015-12-08 17:33

问题已经解决,powerpc平台下,request——irq()函数第一个参数为虚拟中断号,并非对应的硬件中断号75,须通过irq_create_mapping(NULL, 75)得到虚拟中断号才可以使用。回复 3# Vsky_man


   
页: [1]
查看完整版本: GPIO request_irq()函数的问题