补:

//调用bcm_wlan_set_power,将ap6335的12脚拉低,让其内部电源稳压器工作。上电完成返回TRUE。上电正常返回值err=0。

[cpp] view plain copy

731             err = wifi_platform_set_power(adapter, TRUE, WIFI_TURNON_DELAY);

732             if (err) {

733                 /* WL_REG_ON state unknown, Power off forcely */

734                 wifi_platform_set_power(adapter, FALSE, WIFI_TURNOFF_DELAY);

735                 continue;

736             } else {

//上电成功,则需要枚举设备,3.099935时刻打印的信息。bcm_wlan_set_carddetect

[cpp] view plain copy

737                 wifi_platform_bus_enumerate(adapter, TRUE);

738                 err = 0;

739             }

//如果成功获取到dhd_chipup_sem,则表示wifi芯片成功powerup,这时表sdio的notify注销掉并跳出这个循环。

[cpp] view plain copy

741             if (down_timeout(&dhd_chipup_sem, msecs_to_jiffies(POWERUP_WAIT_MS)) == 0) {

742                 dhd_bus_unreg_sdio_notify();

743                 chip_up = TRUE;

744                 break;

745             }

//出错处理,省略

[cpp] view plain copy

...

751         } while (retry--);

...

753         if (!chip_up) {

754             DHD_ERROR(("failed to power up %s, max retry reached**\n", adapter->name));

755             return -ENODEV;

756         }

757

758     }

//dhd总线注册

[cpp] view plain copy

760     err = dhd_bus_register();

761

762     if (err) {

763         DHD_ERROR(("%s: sdio_register_driver failed\n", __FUNCTION__));

764         goto fail;

765     }

766

767

768     /*

769      * Wait till MMC sdio_register_driver callback called and made driver attach.

770      * It's needed to make sync up exit from dhd insmod  and

771      * Kernel MMC sdio device callback registration

772      */

773     err = down_timeout(&dhd_registration_sem, msecs_to_jiffies(DHD_REGISTRATION_TIMEOUT));

774     if (err) {

775         DHD_ERROR(("%s: sdio_register_driver timeout or error \n", __FUNCTION__));

776         dhd_bus_unregister();

777         goto fail;

778     }

779

780     return err;

781

782 fail:

783     /* power down all adapters */

784     for (i = 0; i < dhd_wifi_platdata->num_adapters; i++) {

785         adapter = &dhd_wifi_platdata->adapters[i];

786         wifi_platform_set_power(adapter, FALSE, WIFI_TURNOFF_DELAY);

787         wifi_platform_bus_enumerate(adapter, FALSE);

788     }

789 #else

790

791     /* x86 bring-up PC needs no power-up operations */

792     err = dhd_bus_register();

793

794 #endif

795

796     return err;

797 }

sdio设备探测函数如下,对应3.100247时刻的输出信息就是下面88行的输出。

[cpp] view plain copy

82 extern void exynos_dwmci1_notify_change(int state);

83 int bcm_wlan_set_carddetect(bool present)

84 {

85     int err = 0;

86

87     if (present) {

88         printk("======== Card detection to detect SDIO card! ========\n");

89 #ifdef CONFIG_MACH_ODROID_4210

90         exynos_dwmci1_notify_change(1);

91 #endif

92     } else {

93         printk("======== Card detection to remove SDIO card! ========\n");

94 #ifdef CONFIG_MACH_ODROID_4210

95         exynos_dwmci1_notify_change(0);

96 #endif

97     }

98

99     return err;

100 }

由于exynos_dwmci1_notify_change属于mmc的范畴,

[cpp] view plain copy

157 static void (*_exynos_dwmci1_notify_func)(struct platform_device *, int);

158 void exynos_dwmci1_notify_change(int state)

159 {

160     if (_exynos_dwmci1_notify_func)

161         _exynos_dwmci1_notify_func(&exynos5_device_dwmci1, state);

162 }

163 EXPORT_SYMBOL(exynos_dwmci1_notify_change);

164

_exynos_dwmci1_notify_func是一个函数指针,实际上就是函数dw_mci_notify_change。

[cpp] view plain copy

307 void __init exynos5_tf4_mmc_init(void)

308 {

309 #ifdef CONFIG_MMC_DW

310     if (samsung_rev() < EXYNOS5410_REV_1_0)

311         smdk5410_dwmci0_pdata.caps &=

312             ~(MMC_CAP_UHS_DDR50 | MMC_CAP_1_8V_DDR);

313 #ifndef CONFIG_EXYNOS_EMMC_HS200

314     smdk5410_dwmci0_pdata.caps2 &=

315         ~MMC_CAP2_HS200_1_8V_SDR;

316 #endif

317     exynos_dwmci_set_platdata(&smdk5410_dwmci0_pdata, 0);

318     exynos_dwmci_set_platdata(&smdk5410_dwmci1_pdata, 1);

319     exynos_dwmci_set_platdata(&smdk5410_dwmci2_pdata, 2);

320 #endif

321     platform_add_devices(smdk5410_mmc_devices,

322             ARRAY_SIZE(smdk5410_mmc_devices));

323 }

数据接收

drivers/net/wireless/bcmdhd/dhd_linux.c

drivers/net/wireless/bcmdhd/dhd_sdio.c

关键函数流程

[cpp] view plain copy

dhdsdio_probe

dhd_attach

6054  dhd_bus_dpc

5788  dhdsdio_dpc  ---

5053  dhdsdio_readframes

接收处理函数,经过该函数后,见基于以太网的接收流程

[cpp] view plain copy

drivers/net/wireless/bcmdhd/dhd_linux.c

2855 void

2856 dhd_rx_frame(dhd_pub_t *dhdp, int ifidx, void *pktbuf, int numpkt, uint8 chan)

2857 {

2858     dhd_info_t *dhd = (dhd_info_t *)dhdp->info;

2859     struct sk_buff *skb;

2860     uchar *eth;

2861     uint len;

2862     void *data, *pnext = NULL;

….

3123         if (in_interrupt()) {

3124             netif_rx(skb);

3125         } else {

3126             if (dhd->rxthread_enabled) {

3127                 if (!skbhead)

3128                     skbhead = skb;

3129                 else

3130                     PKTSETNEXT(dhdp->osh, skbprev, skb);

3131                 skbprev = skb;

3132             } else {

3133

3134                 /* If the receive is not processed inside an ISR,

3135                  * the softirqd must be woken explicitly to service

3136                  * the NET_RX_SOFTIRQ.  In 2.6 kernels, this is handled

3137                  * by netif_rx_ni(), but in earlier kernels, we need

3138                  * to do it manually.

3139                  */

3140 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)

3141                 netif_rx_ni(skb);

3142 #else

3143                 ulong flags;

3144                 netif_rx(skb);

linux 博通wifi驱动,博通WiFi驱动相关推荐

  1. android wifi驱动_OTT盒子WiFi方案首选:博通2T2R WiFi模块

    IT6356 WiFi模组简介 WiFi/BT/FM 3合1模块: 此模块为 2.4G + 5G 双频道,支持802.11a/b/g/n/AC,支持蓝牙 4.0:2T2R 双天线. 具有以下优势: 1 ...

  2. 博通InConcert Maestro软件开创Wi-Fi/蓝牙无线互连新时代

      博通InConcert Maestro软件开创Wi-Fi/蓝牙无线互连新时代 上网时间:2010-06-17     Ellie Zhang  著 无需AP,只需在用手在手机上轻轻一划,就将手机上 ...

  3. linux博通2070蓝牙驱动,Broadcom博通BCM 2070/20702系列蓝牙设备驱动怎么样

    20 楼 华军网友 :2017-06-22 发表 之前听同学说这里有Broadcom博通BCM 2070/20702系列蓝牙设备驱动12.0.1.305版下载,还真有,我找Broadcom博通BCM ...

  4. 高通发布一系列新型WiFi芯片:兼容WiFi 6技术

    8月28日,据国外媒体报道,当地时间周二,芯片制造商高通宣布了一系列新的兼容最新版本WiFi 6技术的WiFi芯片,以期提高其5G芯片的销量. 高通详细介绍了Wi-Fi 6在移动.计算和汽车等多个关键 ...

  5. 为一路通(16tone)开博

    为一路通(16tone)开博 2009年5月19日,对陈波他们来说应该是一个难忘的日子.经过几百天的艰辛,"一路通"网站http://www.16tone.com/终于开始正式上线 ...

  6. Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法

    Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法 环境: 系统 Ubuntu 22.04 LTS 网卡ax201(微星b660m迫击炮wifi ...

  7. 华为linux版本wifi驱动,Ubuntu安装无线网卡驱动 Wifi/BT BCM4330 (AP6383)

    像BCM4330 (AP6383)这样的Wifi/蓝牙一体化芯片常见于一些平板电脑.笔记本和mini pc中.特别是z3735.z8300.core m这些芯片的平板电脑很常见.AP6210也比较常见 ...

  8. 2020警博会,快商通邀您共赏声纹风“警”线

    2020警博会,快商通邀您共赏声纹风"警"线 倒计时!由中华人民共和国公安部主办的2020第十届中国国际警用装备博览会(简称"警博会")将于2020年11月23 ...

  9. 苏宁减持阿里巴巴股份;小蓝单车用户退款信息“失踪”;高通正式拒绝博通1300亿美元收购丨价值早报

    第[771]期早报由[周二]赞助播出 01 今日头条 高通正式拒绝博通收购邀约,1300亿美元报价太低 通信芯片制造商博通公司日前发布公告称将以每股70美元现金加股票方式收购后者,总价将超千亿美元.但 ...

  10. 黑苹果建议的无线网卡 Hackintosh Compatible WiFi(已更新最新Catalina驱动姿势)

    黑苹果建议的无线网卡 Hackintosh Compatible WiFi(已更新最新Catalina驱动姿势) 首先请注意:放弃使用USB的无线网卡.因为用户体验非常差,容易导致系统不稳定,特别是在 ...

最新文章

  1. OS- -内存之虚拟内存
  2. 给自己看的squid服务器配置笔记
  3. (转)ASP.NET Core 企业开发架构概述
  4. java 程序命令_命令行运行JAVA程序
  5. Atom打开报错:Cannot load the system dictionary for zh-CN
  6. python 标准库 —— http(http.cookiejar)
  7. Android之Adapter用法总结-(转)
  8. Unicode 中文,日文,西欧语言Unicode编码域(区间)
  9. SessionAffinity分发策略
  10. (2020.11)OAI搭建eNB without S1 usrpx310 (usrp2944)
  11. 服务器IIS6/IIS7、Nginx、Apache屏蔽垃圾爬虫UA禁止垃圾爬虫,屏蔽指定UA
  12. python查询12306余票_python命令行查询12306火车票
  13. c++常对象和常成员函数详解
  14. zigbee协议重要英文缩写
  15. c语言中以追加只写方式打开文本文件,C语言文本方式和二进制方式打开文件区别...
  16. 6.17 C语言练习(百钱百鸡问题:中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?)
  17. xdos攻击ac实验环境
  18. LQ0141 纸张尺寸【水题】
  19. android面试之今日头条/字节跳动 android社招面试(附答案)
  20. NPOI使用Excel批注导入数据

热门文章

  1. php后台视频教程,php实战开发电商后台视频教程 共6章
  2. 组装服务器要固态硬盘,服务器选择时,为什么要选择固态硬盘
  3. 将 Keynote 演示文稿导出为 PPT 或其他文件格式
  4. 51制作贪吃蛇小游戏,附带Proteus仿真
  5. android 仿ios动画效果代码,Android仿IOS上拉下拉弹性效果的实例代码
  6. 2022年氧化工艺考试练习题模拟考试平台操作
  7. 艰难抉择,WPS和Office哪个好?
  8. Monocular Depth Estimation UsingLaplacian Pyramid-Based Depth Residuals翻译
  9. Python经典例题:跑马灯文字效应
  10. 管理手记:和上司相处不要太“学生气”