1、dhd_module_init(驱动模块初始化函数)
  → dhd_wifi_platform_register_drv(查找设备,注册驱动)
    → 1) wifi_ctrlfunc_register_drv(wifi控制驱动注册) Y
     2) dhd_wifi_platform_load(wifi控制功能不存在时调用) N
     3) wifi_ctrlfunc_unregister_drv(由于初始化失败导致驱动未注册成功时调用) N

2、wifi_ctrlfunc_register_drv
  → 1)bus_find_device(寻找平台设备)
    2)wifi_adapter_info_t *adapter(wifi_adapter_info_t初始化)
     bcmdhd_wifi_platdata_t *dhd_wifi_platdata(bcmdhd_wifi_platdata_t初始化)
     dhd_wifi_platdata->adapters = adapter(将adapter传递给全局变量dhd_wifi_platdata)
    3) wifi_platform_data dhd_wlan_control(wifi_platform_data初始化)
       adapter->wifi_plat_data = (void *)&dhd_wlan_control(使用dhd_wlan_control全局变量初始化adapter中的wifi_plat_data成员)
    4)bcm_wlan_set_plat_data(wlan平台数据设置)
    5)dhd_wifi_platform_load(wifi平台登录)

3、bcm_wlan_set_plat_data
  → 1)dhd_wlan_control.set_power = bcm_wlan_set_power
      2)dhd_wlan_control.set_carddetect = bcm_wlan_set_carddetect
    3) dhd_wlan_control.get_mac_addr = bcm_wlan_get_mac_address

4、dhd_wifi_platform_load
  → 1) wl_android_init(初始化dhd_msg_level |= DHD_ERROR_VAL,给iface_name赋值为wlan)
  → 2) dhd_wifi_platform_load_sdio
    → 1) dhd_bus_reg_sdio_notify(注册sdio driver,sdio驱动获取wifi列表的设备后调用dummy_probe -> up(dhd_chipup_sem))
    → 2) wifi_platform_set_power(调用adapter成员wifi_plat_data中的set_power开启模块电源)
    → 3) wifi_platform_bus_enumerate(调用adapter成员wifi_plat_data中的s et_carddetect)
    → 4) dhd_bus_register
      → bcmsdh_register(&dhd_sdio)
        → 1) 初始化drvinfo (见①)
        → 2) bcmsdh_register_client_driver
          → sdio_register_driver(注册名为bcmsdh_sdmmc的驱动)
            → 进入bcmsdh_sdmmc_probe
              → sdioh_probe
                → bcmsdh_probe→ drvinfo.probe(①) → dhdsdio_probe → dhd_download_fw_on_driverload = TRUE

wifi驱动总结(2)的更多相关文章

  1. WIFI驱动的移植 realtek 8188

    一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去. wifi驱动的移植, 以realtek的8188etv为例到官网下载相应的驱动, 解压后可以 ...

  2. 360随身WiFi驱动下载

    一场不算太好的体验,但还是解决问题了 360随身WiFi驱动下载地址 事情经过: 某天在家里组装起PC,才发现当时没有在这屋里预留网线接口,走明线穿堂过户肯定是不合适的,还是买个无线网卡吧 自然还是要 ...

  3. android wifi驱动移植详细过程

    转自:http://bbs.imp3.net/thread-10558924-1-1.html 对于刚入手android没多久的人来说,android wifi 驱动的移植确实还是有难度的,不过参考了 ...

  4. BCM wifi驱动学习

    BCMwifi驱动学习 一.wifi详解1 1.代码路径:Z:\home\stonechen\svn\TD550_X\TD550\3rdparty\wifi\BCM43362\special\bcmd ...

  5. linux_ubuntu 16.04 更新wifi驱动_无法链接wifi问题

    ubuntu kylin ubuntu kylin ubuntu kylin wifi 这个很好解决的,16.04 默认 没有使用wifi驱动设备,默认选择的是:不使用设备1.进入到,软件和更新 -- ...

  6. BeagleBone Black安装小米随身WiFi驱动方法

    以下操作直接在beaglebone black上执行 下载驱动源码 git clone https://github.com/rcn-ee/mt7601u.git 下载linux-headers,这是 ...

  7. 转:禁止360随身wifi驱动自动安装

    from:http://bbs.360safe.com/thread-2643500-1-1.html 有曾经数次卸载随身wifi后,插上又会自动安装随身wifi驱动的,也可以看看下面的解决办法. 卸 ...

  8. 在全志平台调试博通的wifi驱动(类似ap6212)【转】

    转自:http://blog.csdn.net/fenzhi1988/article/details/44809779 调试驱动之前,首先先看看驱动代码,了解代码大致工作流程,再根据硬件配置驱动,比如 ...

  9. Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析

    源: Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析

  10. 解决WIFI驱动RTL8188无法在rk3168平板Android4.2启动wifi的问题

    http://blog.csdn.net/morixinguan/article/details/75228335 上一篇博文能把ko编译出来,非常兴奋的想,这一定是没问题了,结果删除原先的ko后,加 ...

随机推荐

  1. EntityFramework Core高并发深挖详解,一纸长文,你准备好了吗?

    前言 之前有关EF并发探讨过几次,但是呢,博主感觉还是有问题,为什么会觉得有问题,其实就是理解不够透彻罢了,于是在项目中都是用的存储过程或者SQL语句来实现,利用放假时间好好补补EF Core并发的问 ...

  2. (删)Java线程同步实现一:synchronzied和wait()/notify()

    上面文章(2.Java多线程总结系列:Java的线程控制实现)讲到了如何对线程进行控制,其中有一个是线程同步问题.下面我们先来看一个例子: 1.一个典型的Java线程安全例子 package com. ...

  3. C语言编码风格_集锦_1

    参考原地址: http://www.jb51.net/article/79257.htm <一> 在一个标准的C语言程序中, 最特殊的莫过于main函数了. 函数大体上分为内联函数(C99 ...

  4. 这辈子只能碰到一次! 记一次SSL无故被撤消!

    SSL证书刚更新一切都那么正常, 突然有一天网站不能访问了, Chrome浏览器提示有风险, 没有继续访问链接,没有,没有, 重要的事情说三遍, 于是乎赶紧加班查原因, 发展浏览器报的错误是证书撤消( ...

  5. 记因PHP的内存溢出导致的事故之解决

    如果对您有用记得关注,更多干货. 今天上午刚到公司,就有同事在公司群里反映某个计划任务出现问题了.我就怀着刨根问底的心,去查看了log.发现挺有意思的一个问题,PHP内存溢出导致脚本执行失败.那就一起 ...

  6. socket.io的编程实现

    socket.io实例 一.环境要求 客户端需要引用socket.io.js文件 服务端需要按照node环境,以及npm install socket.io用来安装服务端的socket.io 二.客户 ...

  7. AFNetworking 用法详解

    之前一直使用ASIHttpRequest 做网络请求 ,后来新公司用AFNetWorking ,经过一段时间学习总结一下二者的优缺点: 1.AFNetWorking的优缺点 优点: 1.维护和使用者比 ...

  8. 2017最新苹果 APPLE ID注册流程

    不管你是苹果开发者还是苹果爱好者,只要你手中有苹果的终端(IPHONE .IPAD .ITouch,MAC电脑) 你想用苹果的一些服务,你就必须要申请苹果APPLE ID,才能享受到苹果提供高品质的服 ...

  9. linux下安装node

    经过一番的折腾终于在linux上安装了node,记录下来以免忘记 1.下载node 去官网下载最新的linux版本下对应node.js,node-v6.10.2-linux-x64.tar.gz 2. ...

  10. Linux 系统管理04--账号管理

    Linux系统管理04--账号管理 一.用户账号管理 1.用户账号概述 (1)用户账号的常见分类: 1>超级用户:root uid=0 gid=0 权限最大. 2>普通用户:uid> ...