移植方法:
1、 首先将驱动源码包bcmdhd.tar.bz2解压到内核源码的driver/net/wireless/目录下。
2、 修改driver/net/wireless/目录里的Kconfig、Makefile文件,可以参考release-wifi-v0.1包里的Kconfig、Makefile的修改。
3、 执行make menuconfig命令开始对无线模块进行配置,主要是NetWorking support-Wireless以及Device Driver-Network Device Support--Wireless LAN的配置,具体的设置方法可以参考release-wifi-v0.1包里的sp_evk01_defconfig。
注意:如果wifi模块的WL_HOST_WAKE这个pin悬空,我们在配置驱动是将其修改为IN-Band interrupt的方式;如果该pin接在cpu 端相应的gpio口时,我们可以将其配置为Out-Of-Band interrupt的方式。
4、 修改内核中mmc驱动,主要是core/sdio.c文件中的sdio_read_cccr这个函数以及内核源码目录下include/linux/mmc/sdio.h中添加相关的宏定义。具体参考release-wifi-v0.1包里的mmc.tar.bz2与sdio.h
5、 修改arch/mips/jz4760b/目录下的相应的板级文件,我们使用的是board-sp_eck01.c,具体修改简单说明一下:
(1) 由于魅族的wifi audio板使用的是mmc1这组控制器且wifi模块在一上电就存在,因此不必考虑wifi模块的探测问题,board-sp_evk01.c文件中的sp_evk01_tf_data
正是对应着mmc1控制器,相关的修改请参考。
(2) 主要说明一下sp_evk01_tf_gpio_init这个函数,首先是四组数据线、cmd、clk所对应的gpio口的初始化,由于不需要探测功能,因此需要对WL_REG_ON这个pin进行先拉低后拉高的操作,这样cpu才能扫描到wifi模块的存在,函数中的WL_PWR_PIN这个宏就对应着WL_REG_ON这个pin,该宏是在board-sp_evk01.h中定义的PE13
(3) 在该板级文件中添加jzsoc_wlan_power_on与jzsoc_wlan_power_off这两个函数,可以参考board-sp_eck01.c.
6、 以上操作完成可以重新编译内核并烧录。
7、 系统启动后将固件fw_bcm….、nvram_....分别拷贝到驱动配置时文件系统中相应的路径,我的是lib/firmware/下。
8、 执行ifconfig wlan0 up命令后,从串口打印可以看到固件的下载以及初始化成功的log,这样之后便可以使用wpa_supplicant工具实现STA模式功能或者使用wlmips实现SOFTAP模式功能。
因篇幅问题不能全部显示,请点此查看更多更全内容