前言
前面简单介绍了qcom wifi驱动的组成,今天详细讲讲驱动的初始化以及启动流程。
一、CNSS驱动启动流程
如果你在上电启动Qcom的开发板,通过加log或者通过回路看电流,你会发现,实际在上电启动后,Wifi芯片会来回的上电和掉电,并不是想象中的直接给芯片上电然后初始化就OK了,那这是为什么呢?我们就要从CNSS的启动流程开始讲了。
首先为什么要从cnss开始讲,有两点原因:
第一cnss
模块是被qcacld
模块使用的,那就意味着从流程上来说,cnss
要优先于qcacld
模块进行初始化等资源准备,当他准备好了以后,才能被qcacld
去使用。
第二点原因是qcacld
虽然作为主驱动,但是留给我们发挥的空间实际很少,Qcom的架构完成度很高,这部分详细的内容也很难理解,对于我们而言这部分只要了解一些架构上的实现即可。
那么说了这么多,就开始分析吧:
vendor/qcom/opensource/wlan/platform/cnss2/main.c
驱动的开始就