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 gpio_to_irq 这个函数,需要芯片厂商实现
struct gpio_chip {
int (*to_irq)(struct gpio_chip *chip,
unsigned offset);
}
我增加用过三星的s5pv210开发板,里面压根就没实现。 可以看看内核文件里面有这个接口的实现没 问题已经解决,powerpc平台下,request——irq()函数第一个参数为虚拟中断号,并非对应的硬件中断号75,须通过irq_create_mapping(NULL, 75)得到虚拟中断号才可以使用。回复 3# Vsky_man
页:
[1]