按照安凯sdk默认的配置,硬件接的是4线的,kernel\arch\arm\mach-ak39\mach-sky39e_ak3918e80pin_mnbd.c里面配置默认是一线的,那为什么需要重新修改gpio的配置呢?因为内核的gpio默认配置也是sdio四线的,D0,D1,D2,D3作为数据口了,加载驱动的时候,会导致系统不停的产生中断,top的时候cpu占用率是99%左右。所以只需要保留D0,D2至D3都需要配置成GPIO,我们下面提供如何修改的方式:
将kernel\arch\arm\mach-ak39\ak39-gpio.c里面的下面配置
#ifdef CONFIG_ARCH_SKY39EV2_AK3918E80PIN_COREBD
{ePIN_AS_SDIO, SHARE_CFG134, (1<<27), (1<<27), 0, 0, ((0xf<<22)|(0xf<<16)), ((0xa<<22)|(0xa<<16)), (0x3<<20), (0x3<<20)},
改成:
#ifdef CONFIG_ARCH_SKY39EV2_AK3918E80PIN_COREBD
{ePIN_AS_SDIO, SHARE_CFG134, (1<<27), (1<<27), 0, 0, ((0xf<<22)|(0xf<<16)), ((0x08<<22)|(0x00<<16)), (0x3<<20), (0x3<<20)},
重新编译内核,加载8189fs.ko即可正常运行了。
遇到问题:
按上述驱动正常,但是ap或者stion都连接不了,频率提高到30M已上也不行。
解决方式:
硬件需要D0,D1物理连接,D1还是改回sdio的复用功能,就可以正常工作了。