标签:初始化 WiFi rockchip wifi module init set dhd RK
RK3368 默认支持的WiFi芯片为AP6XXX系列,此芯片还默认支持BT。
可以先看看原理图里面的的情况,方便我们理解其在代码里面的配置情况
WiFi 设备配置:
./rockchip/rk3368/*/rk3368-p9.dts
此配置为WiFi kernel驱动在初始化时使用,包括芯片类型,ref voltage为1800mv, wake up irq为GPIO_ACTIVE_HIGH
device/rockchip/rk3368/*/rockchip_defconfig
此文件有kernel相关的WiFi相关配置,只有打开这些配置,真正WiFi驱动才能初始化。
打开配置:CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP
表示WiFi驱动是built in的,而且是在内核启动之后才开始加载驱动。
接下来来看看代码里面WiFi驱动加载的地方:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
由于上面定义了CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP, 那么rockchip_wifi_init_module_rkwifi()就会被调用
rockchip_wifi_init_module_rkwifi,从这个起点开始,我们来看看WiFi的整个初始化流程:
以上流程图涉及的源码目录:
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/
net/rfkill/rfkill-wlan.c
drivers/mmc/core/host.c
drivers/mmc/core/sdio_bus.c
看完整个流程图,我们再结合看下机器启动时的kernel messages就很轻松了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|
因为大部分WiFi是通过模拟SD卡来操作的,所以里面还会牵涉MMC驱动,
整个初始化过程复杂缠绕,备注以下几点:
1、WiFi驱动是通过一个单独的线程wifi_init_thread去加载,这样可以减少开机阻塞的时间;
2、adapter->wifi_plat_data=dhd_wlan_control 是在wifi_ctrlfunc_register_drv中进行初始化的,后面的set_power和set_carddetect钩子函数都是在这里进行调用的;
3、sdio总线驱动检测到的id和bcmsdh_sdmmc_ids表里的匹配才会调用probe函数;
4、dhd_update_fw_nv_path固件和配置存放在/system/etc/firmware/路径下,所以如果我们有WiFi相关的配置文件,直接编译拷贝到这个目录即可
5、在wl_cfg80211_attach调用wl_cfg80211_attach_p2p进行p2p初始化,可以看到最后log打印P2P interface started
标签:初始化,WiFi,rockchip,wifi,module,init,set,dhd,RK 来源: https://blog.csdn.net/b178903294/article/details/115396587
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。