在调试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的注册,将其相关代码屏蔽掉即可。