linux 博通wifi驱动,博通WiFi驱动
补:
//调用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驱动相关推荐
- 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 ...
- 博通InConcert Maestro软件开创Wi-Fi/蓝牙无线互连新时代
博通InConcert Maestro软件开创Wi-Fi/蓝牙无线互连新时代 上网时间:2010-06-17 Ellie Zhang 著 无需AP,只需在用手在手机上轻轻一划,就将手机上 ...
- linux博通2070蓝牙驱动,Broadcom博通BCM 2070/20702系列蓝牙设备驱动怎么样
20 楼 华军网友 :2017-06-22 发表 之前听同学说这里有Broadcom博通BCM 2070/20702系列蓝牙设备驱动12.0.1.305版下载,还真有,我找Broadcom博通BCM ...
- 高通发布一系列新型WiFi芯片:兼容WiFi 6技术
8月28日,据国外媒体报道,当地时间周二,芯片制造商高通宣布了一系列新的兼容最新版本WiFi 6技术的WiFi芯片,以期提高其5G芯片的销量. 高通详细介绍了Wi-Fi 6在移动.计算和汽车等多个关键 ...
- 为一路通(16tone)开博
为一路通(16tone)开博 2009年5月19日,对陈波他们来说应该是一个难忘的日子.经过几百天的艰辛,"一路通"网站http://www.16tone.com/终于开始正式上线 ...
- Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法
Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法 环境: 系统 Ubuntu 22.04 LTS 网卡ax201(微星b660m迫击炮wifi ...
- 华为linux版本wifi驱动,Ubuntu安装无线网卡驱动 Wifi/BT BCM4330 (AP6383)
像BCM4330 (AP6383)这样的Wifi/蓝牙一体化芯片常见于一些平板电脑.笔记本和mini pc中.特别是z3735.z8300.core m这些芯片的平板电脑很常见.AP6210也比较常见 ...
- 2020警博会,快商通邀您共赏声纹风“警”线
2020警博会,快商通邀您共赏声纹风"警"线 倒计时!由中华人民共和国公安部主办的2020第十届中国国际警用装备博览会(简称"警博会")将于2020年11月23 ...
- 苏宁减持阿里巴巴股份;小蓝单车用户退款信息“失踪”;高通正式拒绝博通1300亿美元收购丨价值早报
第[771]期早报由[周二]赞助播出 01 今日头条 高通正式拒绝博通收购邀约,1300亿美元报价太低 通信芯片制造商博通公司日前发布公告称将以每股70美元现金加股票方式收购后者,总价将超千亿美元.但 ...
- 黑苹果建议的无线网卡 Hackintosh Compatible WiFi(已更新最新Catalina驱动姿势)
黑苹果建议的无线网卡 Hackintosh Compatible WiFi(已更新最新Catalina驱动姿势) 首先请注意:放弃使用USB的无线网卡.因为用户体验非常差,容易导致系统不稳定,特别是在 ...
最新文章
- OS- -内存之虚拟内存
- 给自己看的squid服务器配置笔记
- (转)ASP.NET Core 企业开发架构概述
- java 程序命令_命令行运行JAVA程序
- Atom打开报错:Cannot load the system dictionary for zh-CN
- python 标准库 —— http(http.cookiejar)
- Android之Adapter用法总结-(转)
- Unicode 中文,日文,西欧语言Unicode编码域(区间)
- SessionAffinity分发策略
- (2020.11)OAI搭建eNB without S1 usrpx310 (usrp2944)
- 服务器IIS6/IIS7、Nginx、Apache屏蔽垃圾爬虫UA禁止垃圾爬虫,屏蔽指定UA
- python查询12306余票_python命令行查询12306火车票
- c++常对象和常成员函数详解
- zigbee协议重要英文缩写
- c语言中以追加只写方式打开文本文件,C语言文本方式和二进制方式打开文件区别...
- 6.17 C语言练习(百钱百鸡问题:中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?)
- xdos攻击ac实验环境
- LQ0141 纸张尺寸【水题】
- android面试之今日头条/字节跳动 android社招面试(附答案)
- NPOI使用Excel批注导入数据
热门文章
- php后台视频教程,php实战开发电商后台视频教程 共6章
- 组装服务器要固态硬盘,服务器选择时,为什么要选择固态硬盘
- 将 Keynote 演示文稿导出为 PPT 或其他文件格式
- 51制作贪吃蛇小游戏,附带Proteus仿真
- android 仿ios动画效果代码,Android仿IOS上拉下拉弹性效果的实例代码
- 2022年氧化工艺考试练习题模拟考试平台操作
- 艰难抉择,WPS和Office哪个好?
- Monocular Depth Estimation UsingLaplacian Pyramid-Based Depth Residuals翻译
- Python经典例题:跑马灯文字效应
- 管理手记:和上司相处不要太“学生气”