免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1350 | 回复: 3
打印 上一主题 下一主题

[硬件及驱动] GPIO request_irq()函数的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-11-30 13:26 |只看该作者 |倒序浏览
用的是2.6.33.7内核  想用gpio引脚作为中断线
gpio初始化用的是系统库里的资源
printk("gpio_to_irq=%x, %x\n", gpio_to_irq(pdata->gpios[GPIO7]), pdata->gpios[GPIO7]);
216                 ret = request_irq(gpio_to_irq(pdata->gpios[GPIO7]), 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

论坛徽章:
0
2 [报告]
发表于 2015-12-02 09:12 |只看该作者
gpio_to_irq 这个函数,需要芯片厂商实现
struct gpio_chip {
        int                        (*to_irq)(struct gpio_chip *chip,
                                                unsigned offset);
}
我增加用过三星的s5pv210开发板,里面压根就没实现。

论坛徽章:
0
3 [报告]
发表于 2015-12-05 15:37 |只看该作者
可以看看内核文件里面有这个接口的实现没

论坛徽章:
0
4 [报告]
发表于 2015-12-08 17:33 |只看该作者
问题已经解决,powerpc平台下,request——irq()函数第一个参数为虚拟中断号,并非对应的硬件中断号75,须通过irq_create_mapping(NULL, 75)得到虚拟中断号才可以使用。回复 3# Vsky_man


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP