request_irq 执行不成功,返回 -16

在调试SDIO(mmc2) wifi驱动时,当wifi驱动初始化进行到

rc = request_irq(OMAP_MMC_IRQ,sdiodrv_irq,0,SDIO_DRIVER_NAME,&g_drv)

时,rc返回不为零,而是-16,在errno-base.h里看到

#define EBUSY 16/* Device or resource busy */

可知该中断已经被使用,执行

cat /proc/interrupts

果然发现OMAP_MMC_IRQ已经被使用了,而且OMAP_MMC_IRQ是专用irq,并不能使用其他irq,

所以解决的方向就是将使用OMAP_MMC_IRQ的其他地方去掉。

最终在board级初始化代码里见到了mmc2的注册,将其相关代码屏蔽掉即可。

原文地址:https://www.cnblogs.com/Shangzhi/p/3286673.html