内核error: implicit declaration of function 'irq_to_gpio'

gdrocky1989 2013-09-28 07:25:40
arm构架的板子,内核版本linux-2.6.38.8
编译的时候出错内容如下
drivers/mfd/ezx-pcap.c:213: error: implicit declaration of function 'irq_to_gpio'
make[2]: *** [drivers/mfd/ezx-pcap.o] 错误 1
make[1]: *** [drivers/mfd] 错误 2
make: *** [drivers] 错误 2


irq_to_gpio函数在linux-2.6.38.8/include/linux/gpio.h中定义
进入/drivers/mfd/ezx-pcap.c中发现有 include <linux/gpio.h>



如何破?
...全文
1559 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
奥义b 2014-09-15
  • 打赏
  • 举报
回复
引用 6 楼 u011600185 的回复:
[quote=引用 5 楼 cxm19910220 的回复:] [quote=引用 3 楼 u012464190 的回复:] 楼主,我也遇到了这个问题,是这么解决的 编辑drivers/mfd/ezx-pcap.c 这个文件 在应该是205这一行做如下替换
    //} while (gpio_get_value(irq_to_gpio(pcap->spi->irq)));

    } while (gpio_get_value(pxa_irq_to_gpio(pcap->spi->irq)));
然后需要在在预编译部分#include <linux/gpio.h>下面添加包含gpio-pxa.h
#include <linux/gpio.h>
#include <linux/gpio-pxa.h>
然后编译就通过了。 参考链接http://permalink.gmane.org/gmane.linux.ports.arm.kernel/155647
经过验证不行哦,你少了一条,在源地址里提到的 - depends on GENERIC_HARDIRQS && SPI_MASTER + depends on GENERIC_HARDIRQS && SPI_MASTER && ARCH_PXA 不能漏哦[/quote] 请问能具体说明下么?[/quote] 链接里不是也解释了吗 2 files changed, 3 insertions(+), 2 deletions(-) 两个文件做了修改,添加了3条,删除了两条 ------------------------------------分割线-------------------------------------- --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig <at> <at> -619,7 +619,7 <at> <at> config AB3100_OTP config EZX_PCAP bool "PCAP Support" - depends on GENERIC_HARDIRQS && SPI_MASTER + depends on GENERIC_HARDIRQS && SPI_MASTER && ARCH_PXA 文件1(drivers/mfd/Kconfig)中 删除depends on GENERIC_HARDIRQS && SPI_MASTER 添加depends on GENERIC_HARDIRQS && SPI_MASTER && ARCH_PXA --------------------------------分割线------------------------------------ --- a/drivers/mfd/ezx-pcap.c +++ b/drivers/mfd/ezx-pcap.c <at> <at> -18,6 +18,7 <at> <at> #include <linux/mfd/ezx-pcap.h> #include <linux/spi/spi.h> #include <linux/gpio.h> +#include <linux/gpio-pxa.h> #include <linux/slab.h> #define PCAP_ADC_MAXQ 8 <at> <at> -202,7 +203,7 <at> <at> static void pcap_isr_work(struct work_struct *work) } local_irq_enable(); ezx_pcap_write(pcap, PCAP_REG_MSR, pcap->msr); - } while (gpio_get_value(irq_to_gpio(pcap->spi->irq))); + } while (gpio_get_value(pxa_irq_to_gpio(pcap->spi->irq))); } 文件2(/drivers/mfd/ezx-pcap.c)中 添加头文件#include <linux/gpio-pxa.h> 删除} while (gpio_get_value(irq_to_gpio(pcap->spi->irq))); 添加} while (gpio_get_value(pxa_irq_to_gpio(pcap->spi->irq))); ----------------------------分割线---------------------------------------------- 就是做了以上3处修改而不是两处修改才成功的。 后才弄了还发现缺少#include <linux/gpio-pxa.h> 于是乎又去弄了个头文件黏贴到相应目录下才好的。
zn350706383 2014-09-13
  • 打赏
  • 举报
回复
引用 5 楼 cxm19910220 的回复:
[quote=引用 3 楼 u012464190 的回复:] 楼主,我也遇到了这个问题,是这么解决的 编辑drivers/mfd/ezx-pcap.c 这个文件 在应该是205这一行做如下替换
    //} while (gpio_get_value(irq_to_gpio(pcap->spi->irq)));

    } while (gpio_get_value(pxa_irq_to_gpio(pcap->spi->irq)));
然后需要在在预编译部分#include <linux/gpio.h>下面添加包含gpio-pxa.h
#include <linux/gpio.h>
#include <linux/gpio-pxa.h>
然后编译就通过了。 参考链接http://permalink.gmane.org/gmane.linux.ports.arm.kernel/155647
经过验证不行哦,你少了一条,在源地址里提到的 - depends on GENERIC_HARDIRQS && SPI_MASTER + depends on GENERIC_HARDIRQS && SPI_MASTER && ARCH_PXA 不能漏哦[/quote] 请问能具体说明下么?
奥义b 2014-09-11
  • 打赏
  • 举报
回复
引用 3 楼 u012464190 的回复:
楼主,我也遇到了这个问题,是这么解决的 编辑drivers/mfd/ezx-pcap.c 这个文件 在应该是205这一行做如下替换
    //} while (gpio_get_value(irq_to_gpio(pcap->spi->irq)));

    } while (gpio_get_value(pxa_irq_to_gpio(pcap->spi->irq)));
然后需要在在预编译部分#include <linux/gpio.h>下面添加包含gpio-pxa.h
#include <linux/gpio.h>
#include <linux/gpio-pxa.h>
然后编译就通过了。 参考链接http://permalink.gmane.org/gmane.linux.ports.arm.kernel/155647
经过验证不行哦,你少了一条,在源地址里提到的 - depends on GENERIC_HARDIRQS && SPI_MASTER + depends on GENERIC_HARDIRQS && SPI_MASTER && ARCH_PXA 不能漏哦
gdrocky1989 2013-11-26
  • 打赏
  • 举报
回复
引用 3 楼 u012464190 的回复:
楼主,我也遇到了这个问题,是这么解决的 编辑drivers/mfd/ezx-pcap.c 这个文件 在应该是205这一行做如下替换
    //} while (gpio_get_value(irq_to_gpio(pcap->spi->irq)));

    } while (gpio_get_value(pxa_irq_to_gpio(pcap->spi->irq)));
然后需要在在预编译部分#include <linux/gpio.h>下面添加包含gpio-pxa.h
#include <linux/gpio.h>
#include <linux/gpio-pxa.h>
然后编译就通过了。 参考链接http://permalink.gmane.org/gmane.linux.ports.arm.kernel/155647
额,我源码都找不到了,还是把分给你吧,以后遇到了再看看
raygodlee 2013-11-21
  • 打赏
  • 举报
回复
楼主,我也遇到了这个问题,是这么解决的 编辑drivers/mfd/ezx-pcap.c 这个文件 在应该是205这一行做如下替换
    //} while (gpio_get_value(irq_to_gpio(pcap->spi->irq)));

    } while (gpio_get_value(pxa_irq_to_gpio(pcap->spi->irq)));
然后需要在在预编译部分#include <linux/gpio.h>下面添加包含gpio-pxa.h
#include <linux/gpio.h>
#include <linux/gpio-pxa.h>
然后编译就通过了。 参考链接http://permalink.gmane.org/gmane.linux.ports.arm.kernel/155647
Carl_CCC 2013-09-29
  • 打赏
  • 举报
回复
里面有不有什么条件编译啊,#ifdef, #else #endif
导致没有编译进去
gdrocky1989 2013-09-29
  • 打赏
  • 举报
回复
引用 1 楼 Idle_Cloud 的回复:
里面有不有什么条件编译啊,#ifdef, #else #endif 导致没有编译进去
看了linux/gpio.h 这个文件,没有被条件编译

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧