broadcm_40181 wifi 驱动分析

1.先注册

dhd_mudule_init                dhd_linux.c

  dhd_bus_register               dhd_sdio.c             

      bcmsdh_register                 bcmsdh_linux.c

          sdio_function_init               bcmsdh_sdmmc_linux.c

              sdio_register_driver            bcmsdh_sdmmc_linux.c (标准的sdio注册函数)

                   bcmsdh_sdmmc_probe       bcmsdh_sdmmc_linux.c(注册,然后上电时候网卡被发现时候调用)

                     bcmsdh_probe                      bcmsdh_linux.c

                          通过drvinfo.attach调用上面dhd_bus_register注册的dhdsdio_probe函数从而调用下面两个函数

                          dhd_attach 主要工作是创建和初始化dhd_info_t和net_device两个结构,然后调用dhd_add_if将已经初始化的net_device结构变量添加到dhd_info_t的iflist列表中。

                         dhd_net_attach进一步初始化net_device结构变量,例如填充netdev_ops、ethtool_ops、dev_addr,还初始化无线设备特有的get_wireless_stats、            wireless_handlers最后调用register_netdev向网络子系统注册该接口。


2.错误分析

 2、有打印SD/MMC initialization started......,但sdio设备初始化不成功 :
 2.1 No any SD/MMC card detected!, 则检查wifi模块供电及WL_REG_ON管脚的电平正确与否。
 2.2 出现读写SD_MMC_ERROR_TIMEOUT, 则检查wifi模块与cpu间的sdio接口硬件连接有没问题。
 2.3 出现读写SD_MMC_ERROR_DATA_CRC, 则需要在sdio总线的data0~3上加外置上拉电阻。


3、dhd -i wlan0 wlmsglevel 0x7ffff查看log

你可能感兴趣的:(broadcm_40181 wifi 驱动分析)